diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2009-02-13 13:52:19 +1100 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2009-02-13 13:52:19 +1100 |
commit | e21dfae1526814152603122f2ac4c9d36a7d814d (patch) | |
tree | 15bc86e374921c4982c419548c165348e28f9702 /apps/patchwork/tests | |
parent | eddb3ce9c1659226d05ca1b959d0c31cd216f93a (diff) | |
download | patchwork-e21dfae1526814152603122f2ac4c9d36a7d814d.tar.bz2 patchwork-e21dfae1526814152603122f2ac4c9d36a7d814d.tar.xz |
[views] Check count() for duplicate bundle patches, rather than try/except
If the exception is raised, the transaction will still be in a bad
state, due to the foreign key constraint.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'apps/patchwork/tests')
-rw-r--r-- | apps/patchwork/tests/bundles.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/apps/patchwork/tests/bundles.py b/apps/patchwork/tests/bundles.py index d9c0bed..2f2f122 100644 --- a/apps/patchwork/tests/bundles.py +++ b/apps/patchwork/tests/bundles.py @@ -240,6 +240,49 @@ class BundleAddFromListTest(BundleTestBase): for i in [0, 1] ] self.failUnless(bps[0].order < bps[1].order) + def testAddDuplicate(self): + self.bundle.append_patch(self.patches[0]) + count = self.bundle.patches.count() + patch = self.patches[0] + + params = {'form': 'patchlistform', + 'action': 'Add', + 'project': defaults.project.id, + 'bundle_id': self.bundle.id, + 'patch_id:%d' % patch.id: 'checked'} + + response = self.client.post( + '/project/%s/list/' % defaults.project.linkname, + params) + + self.assertContains(response, 'Patch '%s' already in bundle' \ + % patch.name, count = 1, status_code = 200) + + self.assertEquals(count, self.bundle.patches.count()) + + def testAddNewAndDuplicate(self): + self.bundle.append_patch(self.patches[0]) + count = self.bundle.patches.count() + patch = self.patches[0] + + params = {'form': 'patchlistform', + 'action': 'Add', + 'project': defaults.project.id, + 'bundle_id': self.bundle.id, + 'patch_id:%d' % patch.id: 'checked', + 'patch_id:%d' % self.patches[1].id: 'checked'} + + response = self.client.post( + '/project/%s/list/' % defaults.project.linkname, + params) + + self.assertContains(response, 'Patch '%s' already in bundle' \ + % patch.name, count = 1, status_code = 200) + self.assertContains(response, 'Patch '%s' added to bundle' \ + % self.patches[1].name, count = 1, + status_code = 200) + self.assertEquals(count + 1, self.bundle.patches.count()) + class BundleAddFromPatchTest(BundleTestBase): def testAddToEmptyBundle(self): patch = self.patches[0] |