From: Jeremy Kerr Date: Thu, 2 Sep 2010 10:46:37 +0000 (+0800) Subject: tests: Add multiple patch update test X-Git-Url: https://git.ozlabs.org/?p=patchwork;a=commitdiff_plain;h=f7535e706ecbf4c28f21e52978db12b3ec9e1f54 tests: Add multiple patch update test Add a test for updating mulitple patches. Currently fails with django 1.1. Signed-off-by: Jeremy Kerr --- 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 +# +# 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: