Mercurial > p > roundup > code
comparison test/test_actions.py @ 2014:366d3bbce982
Simple version of collision detection...
...with tests and a new generic template for classic and minimal.
| author | Johannes Gijsbers <jlgijsbers@users.sourceforge.net> |
|---|---|
| date | Sat, 14 Feb 2004 02:06:27 +0000 |
| parents | 1782fe36e7b8 |
| children | 5a7ec0c63095 |
comparison
equal
deleted
inserted
replaced
| 2013:d116293863a4 | 2014:366d3bbce982 |
|---|---|
| 1 from __future__ import nested_scopes | |
| 2 | |
| 1 import unittest | 3 import unittest |
| 2 from cgi import FieldStorage, MiniFieldStorage | 4 from cgi import FieldStorage, MiniFieldStorage |
| 3 | 5 |
| 4 from roundup import hyperdb | 6 from roundup import hyperdb |
| 7 from roundup.date import Date, Interval | |
| 5 from roundup.cgi.actions import * | 8 from roundup.cgi.actions import * |
| 6 from roundup.cgi.exceptions import Redirect, Unauthorised | 9 from roundup.cgi.exceptions import Redirect, Unauthorised |
| 7 | 10 |
| 8 class MockNull: | 11 class MockNull: |
| 9 def __init__(self, **kwargs): | 12 def __init__(self, **kwargs): |
| 128 | 131 |
| 129 self.assertFilterEquals('foo') | 132 self.assertFilterEquals('foo') |
| 130 | 133 |
| 131 # The single value gets replaced with the tokenized list. | 134 # The single value gets replaced with the tokenized list. |
| 132 self.assertEqual([x.value for x in self.form['foo']], ['hello', 'world']) | 135 self.assertEqual([x.value for x in self.form['foo']], ['hello', 'world']) |
| 136 | |
| 137 class CollisionDetectionTestCase(ActionTestCase): | |
| 138 def setUp(self): | |
| 139 ActionTestCase.setUp(self) | |
| 140 self.action = EditItemAction(self.client) | |
| 141 self.now = Date('.') | |
| 142 | |
| 143 def testLastUserActivity(self): | |
| 144 self.assertEqual(self.action.lastUserActivity(), None) | |
| 145 | |
| 146 self.client.form.value.append(MiniFieldStorage('@lastactivity', str(self.now))) | |
| 147 self.assertEqual(self.action.lastUserActivity(), self.now) | |
| 148 | |
| 149 def testLastNodeActivity(self): | |
| 150 self.action.classname = 'issue' | |
| 151 self.action.nodeid = '1' | |
| 152 | |
| 153 def get(nodeid, propname): | |
| 154 self.assertEqual(nodeid, '1') | |
| 155 self.assertEqual(propname, 'activity') | |
| 156 return self.now | |
| 157 self.client.db.issue.get = get | |
| 158 | |
| 159 self.assertEqual(self.action.lastNodeActivity(), self.now) | |
| 160 | |
| 161 def testCollision(self): | |
| 162 self.failUnless(self.action.detectCollision(self.now, self.now + Interval("1d"))) | |
| 163 self.failIf(self.action.detectCollision(self.now, self.now - Interval("1d"))) | |
| 164 self.failIf(self.action.detectCollision(None, self.now)) | |
| 133 | 165 |
| 134 def test_suite(): | 166 def test_suite(): |
| 135 suite = unittest.TestSuite() | 167 suite = unittest.TestSuite() |
| 136 suite.addTest(unittest.makeSuite(RetireActionTestCase)) | 168 suite.addTest(unittest.makeSuite(RetireActionTestCase)) |
| 137 suite.addTest(unittest.makeSuite(StandardSearchActionTestCase)) | 169 suite.addTest(unittest.makeSuite(StandardSearchActionTestCase)) |
| 138 suite.addTest(unittest.makeSuite(FakeFilterVarsTestCase)) | 170 suite.addTest(unittest.makeSuite(FakeFilterVarsTestCase)) |
| 139 suite.addTest(unittest.makeSuite(ShowActionTestCase)) | 171 suite.addTest(unittest.makeSuite(ShowActionTestCase)) |
| 172 suite.addTest(unittest.makeSuite(CollisionDetectionTestCase)) | |
| 140 return suite | 173 return suite |
| 141 | 174 |
| 142 if __name__ == '__main__': | 175 if __name__ == '__main__': |
| 143 runner = unittest.TextTestRunner() | 176 runner = unittest.TextTestRunner() |
| 144 unittest.main(testRunner=runner) | 177 unittest.main(testRunner=runner) |
