]> git.ozlabs.org Git - patchwork/commitdiff
tests/updates: Add multiple invalid state change test
authorJeremy Kerr <jk@ozlabs.org>
Thu, 2 Sep 2010 11:11:53 +0000 (19:11 +0800)
committerJeremy Kerr <jk@ozlabs.org>
Fri, 3 Sep 2010 04:44:51 +0000 (12:44 +0800)
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
apps/patchwork/tests/updates.py

index 584b78735eb0504e8aca5e28f77b477d7522377c..1a04c91ff0aa87336f3d235357ab6414d7a135f6 100644 (file)
@@ -38,15 +38,13 @@ class MultipleUpdateTest(TestCase):
             patch.save()
             self.patches.append(patch)
         
-    def testStateChangeValid(self):
-        states = [patch.state.pk for patch in self.patches]
-        state = State.objects.exclude(pk__in = states)[0]
+    def _testStateChange(self, state):
         data = {'action':   'Update',
                 'project':  str(defaults.project.id),
                 'form':     'patchlistform',
                 'archived': '*',
                 'delegate': '*',
-                'state':    str(state.pk),
+                'state':    str(state),
         }
         for patch in self.patches:
             data['patch_id:%d' % patch.id] = 'checked'
@@ -55,10 +53,25 @@ class MultipleUpdateTest(TestCase):
                 args = [defaults.project.linkname])
         response = self.client.post(url, data)
         self.failUnlessEqual(response.status_code, 200)
-        
+        return response
+
+    def testStateChangeValid(self):
+        states = [patch.state.pk for patch in self.patches]
+        state = State.objects.exclude(pk__in = states)[0]
+        self._testStateChange(state.pk)
         for patch in [Patch.objects.get(pk = p.pk) for p in self.patches]:
             self.assertEquals(patch.state, state)
 
+    def testStateChangeInvalid(self):
+        state = max(State.objects.all().values_list('id', flat = True)) + 1
+        orig_states = [patch.state for patch in self.patches]
+        response = self._testStateChange(state)
+        self.assertEquals( \
+                [Patch.objects.get(pk = p.pk).state for p in self.patches],
+                orig_states)
+        self.assertEquals(response.context['errors'],
+                    ['The submitted form data was invalid'])
+
     def tearDown(self):
         for p in self.patches:
             p.delete()