Mercurial > p > roundup > code
comparison test/test_actions.py @ 2032:5a7ec0c63095
fixes to some unit tests, and a cleanup
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Fri, 20 Feb 2004 03:48:16 +0000 |
| parents | 366d3bbce982 |
| children | d6bcdae0b085 |
comparison
equal
deleted
inserted
replaced
| 2031:bcb21e5722b8 | 2032:5a7ec0c63095 |
|---|---|
| 18 # This allows assignments which assume all intermediate steps are Null | 18 # This allows assignments which assume all intermediate steps are Null |
| 19 # objects if they don't exist yet. | 19 # objects if they don't exist yet. |
| 20 # | 20 # |
| 21 # For example (with just 'client' defined): | 21 # For example (with just 'client' defined): |
| 22 # | 22 # |
| 23 # client.db.config.TRACKER_WEB = 'BASE/' | 23 # client.db.config.TRACKER_WEB = 'BASE/' |
| 24 setattr(self, name, MockNull()) | 24 setattr(self, name, MockNull()) |
| 25 return getattr(self, name) | 25 return getattr(self, name) |
| 26 | 26 |
| 27 def __getitem__(self, key): return self | 27 def __getitem__(self, key): return self |
| 28 def __nonzero__(self): return 0 | 28 def __nonzero__(self): return 0 |
| 29 def __str__(self): return '' | 29 def __str__(self): return '' |
| 30 | 30 |
| 31 def true(*args, **kwargs): | 31 def true(*args, **kwargs): |
| 32 return 1 | 32 return 1 |
| 34 class ActionTestCase(unittest.TestCase): | 34 class ActionTestCase(unittest.TestCase): |
| 35 def setUp(self): | 35 def setUp(self): |
| 36 self.form = FieldStorage() | 36 self.form = FieldStorage() |
| 37 self.client = MockNull() | 37 self.client = MockNull() |
| 38 self.client.form = self.form | 38 self.client.form = self.form |
| 39 | 39 |
| 40 class ShowActionTestCase(ActionTestCase): | 40 class ShowActionTestCase(ActionTestCase): |
| 41 def assertRaisesMessage(self, exception, callable, message, *args, **kwargs): | 41 def assertRaisesMessage(self, exception, callable, message, *args, **kwargs): |
| 42 try: | 42 try: |
| 43 callable(*args, **kwargs) | 43 callable(*args, **kwargs) |
| 44 except exception, msg: | 44 except exception, msg: |
| 45 self.assertEqual(str(msg), message) | 45 self.assertEqual(str(msg), message) |
| 46 else: | 46 else: |
| 47 if hasattr(excClass,'__name__'): excName = excClass.__name__ | 47 if hasattr(excClass,'__name__'): excName = excClass.__name__ |
| 48 else: excName = str(excClass) | 48 else: excName = str(excClass) |
| 49 raise self.failureException, excName | 49 raise self.failureException, excName |
| 50 | 50 |
| 51 def testShowAction(self): | 51 def testShowAction(self): |
| 52 self.client.db.config.TRACKER_WEB = 'BASE/' | 52 self.client.db.config.TRACKER_WEB = 'BASE/' |
| 53 | 53 |
| 54 action = ShowAction(self.client) | 54 action = ShowAction(self.client) |
| 55 self.assertRaises(ValueError, action.handle) | 55 self.assertRaises(ValueError, action.handle) |
| 56 | 56 |
| 57 self.form.value.append(MiniFieldStorage('@type', 'issue')) | 57 self.form.value.append(MiniFieldStorage('@type', 'issue')) |
| 58 self.assertRaisesMessage(Redirect, action.handle, 'BASE/issue') | 58 self.assertRaisesMessage(Redirect, action.handle, 'BASE/issue') |
| 59 | 59 |
| 60 self.form.value.append(MiniFieldStorage('@number', '1')) | 60 self.form.value.append(MiniFieldStorage('@number', '1')) |
| 61 self.assertRaisesMessage(Redirect, action.handle, 'BASE/issue1') | 61 self.assertRaisesMessage(Redirect, action.handle, 'BASE/issue1') |
| 62 | 62 |
| 63 class RetireActionTestCase(ActionTestCase): | 63 class RetireActionTestCase(ActionTestCase): |
| 64 def testRetireAction(self): | 64 def testRetireAction(self): |
| 66 self.client.ok_message = [] | 66 self.client.ok_message = [] |
| 67 RetireAction(self.client).handle() | 67 RetireAction(self.client).handle() |
| 68 self.assert_(len(self.client.ok_message) == 1) | 68 self.assert_(len(self.client.ok_message) == 1) |
| 69 | 69 |
| 70 def testNoPermission(self): | 70 def testNoPermission(self): |
| 71 self.assertRaises(Unauthorised, RetireAction(self.client).handle) | 71 self.assertRaises(Unauthorised, RetireAction(self.client).execute) |
| 72 | 72 |
| 73 def testDontRetireAdminOrAnonymous(self): | 73 def testDontRetireAdminOrAnonymous(self): |
| 74 self.client.db.security.hasPermission=true | 74 self.client.db.security.hasPermission=true |
| 75 self.client.classname = 'user' | 75 # look up the user class |
| 76 self.client.classname = 'user' | |
| 77 # but always look up admin, regardless of nodeid | |
| 76 self.client.db.user.get = lambda a,b: 'admin' | 78 self.client.db.user.get = lambda a,b: 'admin' |
| 79 self.assertRaises(ValueError, RetireAction(self.client).handle) | |
| 80 # .. or anonymous | |
| 81 self.client.db.user.get = lambda a,b: 'anonymous' | |
| 77 self.assertRaises(ValueError, RetireAction(self.client).handle) | 82 self.assertRaises(ValueError, RetireAction(self.client).handle) |
| 78 | 83 |
| 79 class SearchActionTestCase(ActionTestCase): | 84 class SearchActionTestCase(ActionTestCase): |
| 80 def setUp(self): | 85 def setUp(self): |
| 81 ActionTestCase.setUp(self) | 86 ActionTestCase.setUp(self) |
| 82 self.action = SearchAction(self.client) | 87 self.action = SearchAction(self.client) |
| 83 | 88 |
| 84 class StandardSearchActionTestCase(SearchActionTestCase): | 89 class StandardSearchActionTestCase(SearchActionTestCase): |
| 85 def testNoPermission(self): | 90 def testNoPermission(self): |
| 86 self.assertRaises(Unauthorised, self.action.handle) | 91 self.assertRaises(Unauthorised, self.action.execute) |
| 87 | 92 |
| 88 def testQueryName(self): | 93 def testQueryName(self): |
| 89 self.assertEqual(self.action.getQueryName(), '') | 94 self.assertEqual(self.action.getQueryName(), '') |
| 90 | 95 |
| 91 self.form.value.append(MiniFieldStorage('@queryname', 'foo')) | 96 self.form.value.append(MiniFieldStorage('@queryname', 'foo')) |
| 92 self.assertEqual(self.action.getQueryName(), 'foo') | 97 self.assertEqual(self.action.getQueryName(), 'foo') |
| 97 self.client.db.classes.getprops = lambda: {'foo': hyperdb.Multilink('foo')} | 102 self.client.db.classes.getprops = lambda: {'foo': hyperdb.Multilink('foo')} |
| 98 | 103 |
| 99 def assertFilterEquals(self, expected): | 104 def assertFilterEquals(self, expected): |
| 100 self.action.fakeFilterVars() | 105 self.action.fakeFilterVars() |
| 101 self.assertEqual(self.form.getvalue('@filter'), expected) | 106 self.assertEqual(self.form.getvalue('@filter'), expected) |
| 102 | 107 |
| 103 def testEmptyMultilink(self): | 108 def testEmptyMultilink(self): |
| 104 self.form.value.append(MiniFieldStorage('foo', '')) | 109 self.form.value.append(MiniFieldStorage('foo', '')) |
| 105 self.form.value.append(MiniFieldStorage('foo', '')) | 110 self.form.value.append(MiniFieldStorage('foo', '')) |
| 106 | 111 |
| 107 self.assertFilterEquals(None) | 112 self.assertFilterEquals(None) |
| 126 self.assertFilterEquals('foo') | 131 self.assertFilterEquals('foo') |
| 127 | 132 |
| 128 def testTokenizedStringKey(self): | 133 def testTokenizedStringKey(self): |
| 129 self.client.db.classes.getprops = lambda: {'foo': hyperdb.String()} | 134 self.client.db.classes.getprops = lambda: {'foo': hyperdb.String()} |
| 130 self.form.value.append(MiniFieldStorage('foo', 'hello world')) | 135 self.form.value.append(MiniFieldStorage('foo', 'hello world')) |
| 131 | 136 |
| 132 self.assertFilterEquals('foo') | 137 self.assertFilterEquals('foo') |
| 133 | 138 |
| 134 # The single value gets replaced with the tokenized list. | 139 # The single value gets replaced with the tokenized list. |
| 135 self.assertEqual([x.value for x in self.form['foo']], ['hello', 'world']) | 140 self.assertEqual([x.value for x in self.form['foo']], ['hello', 'world']) |
| 136 | 141 |
| 137 class CollisionDetectionTestCase(ActionTestCase): | 142 class CollisionDetectionTestCase(ActionTestCase): |
| 138 def setUp(self): | 143 def setUp(self): |
| 139 ActionTestCase.setUp(self) | 144 ActionTestCase.setUp(self) |
| 140 self.action = EditItemAction(self.client) | 145 self.action = EditItemAction(self.client) |
| 141 self.now = Date('.') | 146 self.now = Date('.') |
| 142 | 147 |
| 143 def testLastUserActivity(self): | 148 def testLastUserActivity(self): |
| 144 self.assertEqual(self.action.lastUserActivity(), None) | 149 self.assertEqual(self.action.lastUserActivity(), None) |
| 145 | 150 |
| 146 self.client.form.value.append(MiniFieldStorage('@lastactivity', str(self.now))) | 151 self.client.form.value.append(MiniFieldStorage('@lastactivity', str(self.now))) |
| 147 self.assertEqual(self.action.lastUserActivity(), self.now) | 152 self.assertEqual(self.action.lastUserActivity(), self.now) |
| 148 | 153 |
| 149 def testLastNodeActivity(self): | 154 def testLastNodeActivity(self): |
| 150 self.action.classname = 'issue' | 155 self.action.classname = 'issue' |
| 151 self.action.nodeid = '1' | 156 self.action.nodeid = '1' |
| 159 self.assertEqual(self.action.lastNodeActivity(), self.now) | 164 self.assertEqual(self.action.lastNodeActivity(), self.now) |
| 160 | 165 |
| 161 def testCollision(self): | 166 def testCollision(self): |
| 162 self.failUnless(self.action.detectCollision(self.now, self.now + Interval("1d"))) | 167 self.failUnless(self.action.detectCollision(self.now, self.now + Interval("1d"))) |
| 163 self.failIf(self.action.detectCollision(self.now, self.now - Interval("1d"))) | 168 self.failIf(self.action.detectCollision(self.now, self.now - Interval("1d"))) |
| 164 self.failIf(self.action.detectCollision(None, self.now)) | 169 self.failIf(self.action.detectCollision(None, self.now)) |
| 165 | 170 |
| 166 def test_suite(): | 171 def test_suite(): |
| 167 suite = unittest.TestSuite() | 172 suite = unittest.TestSuite() |
| 168 suite.addTest(unittest.makeSuite(RetireActionTestCase)) | 173 suite.addTest(unittest.makeSuite(RetireActionTestCase)) |
| 169 suite.addTest(unittest.makeSuite(StandardSearchActionTestCase)) | 174 suite.addTest(unittest.makeSuite(StandardSearchActionTestCase)) |
| 170 suite.addTest(unittest.makeSuite(FakeFilterVarsTestCase)) | 175 suite.addTest(unittest.makeSuite(FakeFilterVarsTestCase)) |
