OLD | NEW |
(Empty) | |
| 1 # Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is govered by a BSD-style |
| 3 # license that can be found in the LICENSE file or at |
| 4 # https://developers.google.com/open-source/licenses/bsd |
| 5 |
| 6 """Tests for monorail.framework.framework_bizobj.""" |
| 7 |
| 8 import unittest |
| 9 |
| 10 from framework import framework_bizobj |
| 11 from framework import framework_constants |
| 12 from proto import project_pb2 |
| 13 |
| 14 |
| 15 class ArtifactTest(unittest.TestCase): |
| 16 |
| 17 def testMergeLabels(self): |
| 18 (merged_labels, update_add, update_remove) = framework_bizobj.MergeLabels( |
| 19 [], [], [], []) |
| 20 self.assertEquals(merged_labels, []) |
| 21 self.assertEquals(update_add, []) |
| 22 self.assertEquals(update_remove, []) |
| 23 |
| 24 (merged_labels, update_add, update_remove) = framework_bizobj.MergeLabels( |
| 25 ['a', 'b'], [], [], []) |
| 26 self.assertEquals(merged_labels, ['a', 'b']) |
| 27 self.assertEquals(update_add, []) |
| 28 self.assertEquals(update_remove, []) |
| 29 |
| 30 (merged_labels, update_add, update_remove) = framework_bizobj.MergeLabels( |
| 31 ['a', 'b', 'd'], ['c'], ['d'], []) |
| 32 self.assertEquals(merged_labels, ['a', 'b', 'c']) |
| 33 self.assertEquals(update_add, ['c']) |
| 34 self.assertEquals(update_remove, ['d']) |
| 35 |
| 36 (merged_labels, update_add, update_remove) = framework_bizobj.MergeLabels( |
| 37 ['a', 'b', 'd'], ['d'], ['e'], []) |
| 38 self.assertEquals(merged_labels, ['a', 'b', 'd']) |
| 39 self.assertEquals(update_add, []) # d was already there. |
| 40 self.assertEquals(update_remove, []) # there was no e. |
| 41 |
| 42 (merged_labels, update_add, update_remove) = framework_bizobj.MergeLabels( |
| 43 ['Priority-Medium', 'OpSys-OSX'], ['Hot'], ['OpSys-OSX'], ['Priority']) |
| 44 self.assertEquals(merged_labels, ['Priority-Medium', 'Hot']) |
| 45 self.assertEquals(update_add, ['Hot']) |
| 46 self.assertEquals(update_remove, ['OpSys-OSX']) |
| 47 |
| 48 (merged_labels, update_add, update_remove) = framework_bizobj.MergeLabels( |
| 49 ['Priority-Medium', 'OpSys-OSX'], ['Priority-High', 'OpSys-Win'], [], |
| 50 ['Priority']) |
| 51 self.assertEquals(merged_labels, |
| 52 ['OpSys-OSX', 'Priority-High', 'OpSys-Win']) |
| 53 self.assertEquals(update_add, ['Priority-High', 'OpSys-Win']) |
| 54 self.assertEquals(update_remove, []) |
| 55 |
| 56 (merged_labels, update_add, update_remove) = framework_bizobj.MergeLabels( |
| 57 ['Priority-Medium', 'OpSys-OSX'], [], ['Priority-Medium', 'OpSys-Win'], |
| 58 ['Priority']) |
| 59 self.assertEquals(merged_labels, ['OpSys-OSX']) |
| 60 self.assertEquals(update_add, []) |
| 61 self.assertEquals(update_remove, ['Priority-Medium']) |
| 62 |
| 63 |
| 64 class CanonicalizeLabelTest(unittest.TestCase): |
| 65 |
| 66 def testCanonicalizeLabel(self): |
| 67 self.assertEqual(None, framework_bizobj.CanonicalizeLabel(None)) |
| 68 self.assertEqual('FooBar', framework_bizobj.CanonicalizeLabel('Foo Bar ')) |
| 69 self.assertEqual('Foo.Bar', |
| 70 framework_bizobj.CanonicalizeLabel('Foo . Bar ')) |
| 71 self.assertEqual('Foo-Bar', |
| 72 framework_bizobj.CanonicalizeLabel('Foo - Bar ')) |
| 73 |
| 74 |
| 75 class IsValidProjectNameTest(unittest.TestCase): |
| 76 |
| 77 def testBadChars(self): |
| 78 self.assertFalse(framework_bizobj.IsValidProjectName('spa ce')) |
| 79 self.assertFalse(framework_bizobj.IsValidProjectName('under_score')) |
| 80 self.assertFalse(framework_bizobj.IsValidProjectName('name.dot')) |
| 81 self.assertFalse(framework_bizobj.IsValidProjectName('pie#sign$')) |
| 82 self.assertFalse(framework_bizobj.IsValidProjectName('(who?)')) |
| 83 |
| 84 def testBadHyphen(self): |
| 85 self.assertFalse(framework_bizobj.IsValidProjectName('name-')) |
| 86 self.assertFalse(framework_bizobj.IsValidProjectName('-name')) |
| 87 self.assertTrue(framework_bizobj.IsValidProjectName('project-name')) |
| 88 |
| 89 def testMinimumLength(self): |
| 90 self.assertFalse(framework_bizobj.IsValidProjectName('x')) |
| 91 self.assertTrue(framework_bizobj.IsValidProjectName('xy')) |
| 92 |
| 93 def testMaximumLength(self): |
| 94 self.assertFalse(framework_bizobj.IsValidProjectName( |
| 95 'x' * (framework_constants.MAX_PROJECT_NAME_LENGTH + 1))) |
| 96 self.assertTrue(framework_bizobj.IsValidProjectName( |
| 97 'x' * (framework_constants.MAX_PROJECT_NAME_LENGTH))) |
| 98 |
| 99 def testInvalidName(self): |
| 100 self.assertFalse(framework_bizobj.IsValidProjectName('')) |
| 101 self.assertFalse(framework_bizobj.IsValidProjectName('000')) |
| 102 |
| 103 def testValidName(self): |
| 104 self.assertTrue(framework_bizobj.IsValidProjectName('098asd')) |
| 105 self.assertTrue(framework_bizobj.IsValidProjectName('one-two-three')) |
| 106 |
| 107 |
| 108 class UserIsInProjectTest(unittest.TestCase): |
| 109 |
| 110 def testUserIsInProject(self): |
| 111 p = project_pb2.Project() |
| 112 self.assertFalse(framework_bizobj.UserIsInProject(p, {10})) |
| 113 self.assertFalse(framework_bizobj.UserIsInProject(p, set())) |
| 114 |
| 115 p.owner_ids.extend([1, 2, 3]) |
| 116 p.committer_ids.extend([4, 5, 6]) |
| 117 p.contributor_ids.extend([7, 8, 9]) |
| 118 self.assertTrue(framework_bizobj.UserIsInProject(p, {1})) |
| 119 self.assertTrue(framework_bizobj.UserIsInProject(p, {4})) |
| 120 self.assertTrue(framework_bizobj.UserIsInProject(p, {7})) |
| 121 self.assertFalse(framework_bizobj.UserIsInProject(p, {10})) |
| 122 |
| 123 # Membership via group membership |
| 124 self.assertTrue(framework_bizobj.UserIsInProject(p, {10, 4})) |
| 125 |
| 126 # Membership via several group memberships |
| 127 self.assertTrue(framework_bizobj.UserIsInProject(p, {1, 4})) |
| 128 |
| 129 # Several irrelevant group memberships |
| 130 self.assertFalse(framework_bizobj.UserIsInProject(p, {10, 11, 12})) |
| 131 |
| 132 |
| 133 class AllProjectMembersTest(unittest.TestCase): |
| 134 |
| 135 def testAllProjectMembers(self): |
| 136 p = project_pb2.Project() |
| 137 self.assertEqual(framework_bizobj.AllProjectMembers(p), []) |
| 138 |
| 139 p.owner_ids.extend([1, 2, 3]) |
| 140 p.committer_ids.extend([4, 5, 6]) |
| 141 p.contributor_ids.extend([7, 8, 9]) |
| 142 self.assertEqual(framework_bizobj.AllProjectMembers(p), |
| 143 [1, 2, 3, 4, 5, 6, 7, 8, 9]) |
| 144 |
| 145 |
| 146 if __name__ == '__main__': |
| 147 unittest.main() |
OLD | NEW |