| 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()
|
|
|