summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2010-09-02 18:46:37 +0800
committerJeremy Kerr <jk@ozlabs.org>2010-09-02 19:50:29 +0800
commitf7535e706ecbf4c28f21e52978db12b3ec9e1f54 (patch)
treec3bbde7118d1e722d99b05471984cf9f480b0b0c /apps
parentea09c81af4cc913934d5b9b3f5c6c0fffe2adfa0 (diff)
downloadpatchwork-f7535e706ecbf4c28f21e52978db12b3ec9e1f54.tar.bz2
patchwork-f7535e706ecbf4c28f21e52978db12b3ec9e1f54.tar.xz
tests: Add multiple patch update test
Add a test for updating mulitple patches. Currently fails with django 1.1. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'apps')
-rw-r--r--apps/patchwork/tests/__init__.py4
-rw-r--r--apps/patchwork/tests/updates.py65
-rw-r--r--apps/patchwork/tests/utils.py7
3 files changed, 74 insertions, 2 deletions
diff --git a/apps/patchwork/tests/__init__.py b/apps/patchwork/tests/__init__.py
index 044c8ba..5ec3923 100644
--- a/apps/patchwork/tests/__init__.py
+++ b/apps/patchwork/tests/__init__.py
@@ -18,9 +18,9 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
import unittest
-from patchwork.tests import patchparser, encodings, bundles, mboxviews
+from patchwork.tests import patchparser, encodings, bundles, mboxviews, updates
-modules = [patchparser, encodings, bundles, mboxviews]
+modules = [patchparser, encodings, bundles, mboxviews, updates]
def suite():
suite = unittest.TestSuite()
diff --git a/apps/patchwork/tests/updates.py b/apps/patchwork/tests/updates.py
new file mode 100644
index 0000000..584b787
--- /dev/null
+++ b/apps/patchwork/tests/updates.py
@@ -0,0 +1,65 @@
+# Patchwork - automated patch tracking system
+# Copyright (C) 2010 Jeremy Kerr <jk@ozlabs.org>
+#
+# This file is part of the Patchwork package.
+#
+# Patchwork is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# Patchwork is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Patchwork; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+import unittest
+from django.test import TestCase
+from django.test.client import Client
+from django.core.urlresolvers import reverse
+from patchwork.models import Patch, Person, State
+from patchwork.tests.utils import defaults, create_maintainer, find_in_context
+
+class MultipleUpdateTest(TestCase):
+ def setUp(self):
+ defaults.project.save()
+ self.user = create_maintainer(defaults.project)
+ self.client.login(username = self.user.username,
+ password = self.user.username)
+ self.patches = []
+ for name in ['patch one', 'patch two', 'patch three']:
+ patch = Patch(project = defaults.project, msgid = name,
+ name = name, content = '',
+ submitter = Person.objects.get(user = self.user))
+ 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]
+ data = {'action': 'Update',
+ 'project': str(defaults.project.id),
+ 'form': 'patchlistform',
+ 'archived': '*',
+ 'delegate': '*',
+ 'state': str(state.pk),
+ }
+ for patch in self.patches:
+ data['patch_id:%d' % patch.id] = 'checked'
+
+ url = reverse('patchwork.views.patch.list',
+ args = [defaults.project.linkname])
+ response = self.client.post(url, data)
+ self.failUnlessEqual(response.status_code, 200)
+
+ for patch in [Patch.objects.get(pk = p.pk) for p in self.patches]:
+ self.assertEquals(patch.state, state)
+
+ def tearDown(self):
+ for p in self.patches:
+ p.delete()
+
diff --git a/apps/patchwork/tests/utils.py b/apps/patchwork/tests/utils.py
index 02e0523..5dc5d16 100644
--- a/apps/patchwork/tests/utils.py
+++ b/apps/patchwork/tests/utils.py
@@ -64,6 +64,13 @@ def create_user():
return user
+def create_maintainer(project):
+ user = create_user()
+ profile = user.get_profile()
+ profile.maintainer_projects.add(project)
+ profile.save()
+ return user
+
def find_in_context(context, key):
if isinstance(context, list):
for c in context: