Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1811)

Unified Diff: appengine/monorail/framework/test/framework_bizobj_test.py

Issue 1868553004: Open Source Monorail (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: appengine/monorail/framework/test/framework_bizobj_test.py
diff --git a/appengine/monorail/framework/test/framework_bizobj_test.py b/appengine/monorail/framework/test/framework_bizobj_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..2574e092c9f6fe325f92a610d8619699578d0f29
--- /dev/null
+++ b/appengine/monorail/framework/test/framework_bizobj_test.py
@@ -0,0 +1,147 @@
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is govered by a BSD-style
+# license that can be found in the LICENSE file or at
+# https://developers.google.com/open-source/licenses/bsd
+
+"""Tests for monorail.framework.framework_bizobj."""
+
+import unittest
+
+from framework import framework_bizobj
+from framework import framework_constants
+from proto import project_pb2
+
+
+class ArtifactTest(unittest.TestCase):
+
+ def testMergeLabels(self):
+ (merged_labels, update_add, update_remove) = framework_bizobj.MergeLabels(
+ [], [], [], [])
+ self.assertEquals(merged_labels, [])
+ self.assertEquals(update_add, [])
+ self.assertEquals(update_remove, [])
+
+ (merged_labels, update_add, update_remove) = framework_bizobj.MergeLabels(
+ ['a', 'b'], [], [], [])
+ self.assertEquals(merged_labels, ['a', 'b'])
+ self.assertEquals(update_add, [])
+ self.assertEquals(update_remove, [])
+
+ (merged_labels, update_add, update_remove) = framework_bizobj.MergeLabels(
+ ['a', 'b', 'd'], ['c'], ['d'], [])
+ self.assertEquals(merged_labels, ['a', 'b', 'c'])
+ self.assertEquals(update_add, ['c'])
+ self.assertEquals(update_remove, ['d'])
+
+ (merged_labels, update_add, update_remove) = framework_bizobj.MergeLabels(
+ ['a', 'b', 'd'], ['d'], ['e'], [])
+ self.assertEquals(merged_labels, ['a', 'b', 'd'])
+ self.assertEquals(update_add, []) # d was already there.
+ self.assertEquals(update_remove, []) # there was no e.
+
+ (merged_labels, update_add, update_remove) = framework_bizobj.MergeLabels(
+ ['Priority-Medium', 'OpSys-OSX'], ['Hot'], ['OpSys-OSX'], ['Priority'])
+ self.assertEquals(merged_labels, ['Priority-Medium', 'Hot'])
+ self.assertEquals(update_add, ['Hot'])
+ self.assertEquals(update_remove, ['OpSys-OSX'])
+
+ (merged_labels, update_add, update_remove) = framework_bizobj.MergeLabels(
+ ['Priority-Medium', 'OpSys-OSX'], ['Priority-High', 'OpSys-Win'], [],
+ ['Priority'])
+ self.assertEquals(merged_labels,
+ ['OpSys-OSX', 'Priority-High', 'OpSys-Win'])
+ self.assertEquals(update_add, ['Priority-High', 'OpSys-Win'])
+ self.assertEquals(update_remove, [])
+
+ (merged_labels, update_add, update_remove) = framework_bizobj.MergeLabels(
+ ['Priority-Medium', 'OpSys-OSX'], [], ['Priority-Medium', 'OpSys-Win'],
+ ['Priority'])
+ self.assertEquals(merged_labels, ['OpSys-OSX'])
+ self.assertEquals(update_add, [])
+ self.assertEquals(update_remove, ['Priority-Medium'])
+
+
+class CanonicalizeLabelTest(unittest.TestCase):
+
+ def testCanonicalizeLabel(self):
+ self.assertEqual(None, framework_bizobj.CanonicalizeLabel(None))
+ self.assertEqual('FooBar', framework_bizobj.CanonicalizeLabel('Foo Bar '))
+ self.assertEqual('Foo.Bar',
+ framework_bizobj.CanonicalizeLabel('Foo . Bar '))
+ self.assertEqual('Foo-Bar',
+ framework_bizobj.CanonicalizeLabel('Foo - Bar '))
+
+
+class IsValidProjectNameTest(unittest.TestCase):
+
+ def testBadChars(self):
+ self.assertFalse(framework_bizobj.IsValidProjectName('spa ce'))
+ self.assertFalse(framework_bizobj.IsValidProjectName('under_score'))
+ self.assertFalse(framework_bizobj.IsValidProjectName('name.dot'))
+ self.assertFalse(framework_bizobj.IsValidProjectName('pie#sign$'))
+ self.assertFalse(framework_bizobj.IsValidProjectName('(who?)'))
+
+ def testBadHyphen(self):
+ self.assertFalse(framework_bizobj.IsValidProjectName('name-'))
+ self.assertFalse(framework_bizobj.IsValidProjectName('-name'))
+ self.assertTrue(framework_bizobj.IsValidProjectName('project-name'))
+
+ def testMinimumLength(self):
+ self.assertFalse(framework_bizobj.IsValidProjectName('x'))
+ self.assertTrue(framework_bizobj.IsValidProjectName('xy'))
+
+ def testMaximumLength(self):
+ self.assertFalse(framework_bizobj.IsValidProjectName(
+ 'x' * (framework_constants.MAX_PROJECT_NAME_LENGTH + 1)))
+ self.assertTrue(framework_bizobj.IsValidProjectName(
+ 'x' * (framework_constants.MAX_PROJECT_NAME_LENGTH)))
+
+ def testInvalidName(self):
+ self.assertFalse(framework_bizobj.IsValidProjectName(''))
+ self.assertFalse(framework_bizobj.IsValidProjectName('000'))
+
+ def testValidName(self):
+ self.assertTrue(framework_bizobj.IsValidProjectName('098asd'))
+ self.assertTrue(framework_bizobj.IsValidProjectName('one-two-three'))
+
+
+class UserIsInProjectTest(unittest.TestCase):
+
+ def testUserIsInProject(self):
+ p = project_pb2.Project()
+ self.assertFalse(framework_bizobj.UserIsInProject(p, {10}))
+ self.assertFalse(framework_bizobj.UserIsInProject(p, set()))
+
+ p.owner_ids.extend([1, 2, 3])
+ p.committer_ids.extend([4, 5, 6])
+ p.contributor_ids.extend([7, 8, 9])
+ self.assertTrue(framework_bizobj.UserIsInProject(p, {1}))
+ self.assertTrue(framework_bizobj.UserIsInProject(p, {4}))
+ self.assertTrue(framework_bizobj.UserIsInProject(p, {7}))
+ self.assertFalse(framework_bizobj.UserIsInProject(p, {10}))
+
+ # Membership via group membership
+ self.assertTrue(framework_bizobj.UserIsInProject(p, {10, 4}))
+
+ # Membership via several group memberships
+ self.assertTrue(framework_bizobj.UserIsInProject(p, {1, 4}))
+
+ # Several irrelevant group memberships
+ self.assertFalse(framework_bizobj.UserIsInProject(p, {10, 11, 12}))
+
+
+class AllProjectMembersTest(unittest.TestCase):
+
+ def testAllProjectMembers(self):
+ p = project_pb2.Project()
+ self.assertEqual(framework_bizobj.AllProjectMembers(p), [])
+
+ p.owner_ids.extend([1, 2, 3])
+ p.committer_ids.extend([4, 5, 6])
+ p.contributor_ids.extend([7, 8, 9])
+ self.assertEqual(framework_bizobj.AllProjectMembers(p),
+ [1, 2, 3, 4, 5, 6, 7, 8, 9])
+
+
+if __name__ == '__main__':
+ unittest.main()
« no previous file with comments | « appengine/monorail/framework/test/filecontent_test.py ('k') | appengine/monorail/framework/test/framework_helpers_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698