Merge lp:~cjwatson/isitdeployable/drop-django-factory into lp:isitdeployable

Proposed by Colin Watson
Status: Merged
Approved by: Colin Watson
Approved revision: 273
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: lp:~cjwatson/isitdeployable/drop-django-factory
Merge into: lp:isitdeployable
Prerequisite: lp:~cjwatson/isitdeployable/py3-syntax-and-imports
Diff against target: 2219 lines (+494/-464)
11 files modified
requirements.txt (+0/-1)
revtracker/models.py (+0/-12)
revtracker/tests/__init__.py (+9/-6)
revtracker/tests/factory.py (+92/-0)
revtracker/tests/test_api_helpers.py (+7/-12)
revtracker/tests/test_data.py (+200/-225)
revtracker/tests/test_tasks.py (+28/-33)
revtracker/tests/test_templates.py (+2/-2)
revtracker/tests/test_views.py (+81/-92)
revtracker/tests/test_views_logged_in.py (+75/-80)
setup.py (+0/-1)
To merge this branch: bzr merge lp:~cjwatson/isitdeployable/drop-django-factory
Reviewer Review Type Date Requested Status
Ricardo Kirkner (community) Approve
Review via email: mp+336780@code.launchpad.net

Commit message

Replace django-factory with a custom factory.

Description of the change

django-factory doesn't work with Django >= 1.8 (https://bugs.launchpad.net/django-factory/+bug/1710880), hasn't had a commit since 2013, and generally seems pretty unmaintained. Our other projects just use a custom factory instead, and such a thing takes less than a hundred lines here, so I just did that.

The diff is big, but it's mostly just mechanical conversion of self.factory.make_one(Project, ...) into self.factory.make_project(...) and so on.

To post a comment you must log in.
Revision history for this message
Ricardo Kirkner (ricardokirkner) wrote :

LGTM

review: Approve
Revision history for this message
Otto Co-Pilot (otto-copilot) wrote :

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'requirements.txt'
2--- requirements.txt 2018-01-30 01:04:37 +0000
3+++ requirements.txt 2018-01-30 01:04:37 +0000
4@@ -11,7 +11,6 @@
5 django-celery==3.1.17
6 django-debug-toolbar==0.10.0
7 django-devserver==0.7.0
8-django-factory==0.10
9 django-getenv==1.3.1
10 django-kombu==0.9.4
11 django-openid-auth==0.9
12
13=== modified file 'revtracker/models.py'
14--- revtracker/models.py 2018-01-30 01:04:37 +0000
15+++ revtracker/models.py 2018-01-30 01:04:37 +0000
16@@ -24,12 +24,6 @@
17 def __unicode__(self):
18 return u"Project %s" % self.name
19
20- class Factory:
21-
22- @staticmethod
23- def get_name(field, factory):
24- return "project%d" % factory.getUniqueInteger()
25-
26
27 class RevisionManager(models.Manager):
28
29@@ -115,12 +109,6 @@
30 return "https://launchpad.net/~%s" % self.assignee
31 return None
32
33- class Factory:
34-
35- @staticmethod
36- def get_branch(field, factory):
37- return ""
38-
39
40 class DeploymentRequest(models.Model):
41
42
43=== modified file 'revtracker/tests/__init__.py'
44--- revtracker/tests/__init__.py 2018-01-30 01:04:37 +0000
45+++ revtracker/tests/__init__.py 2018-01-30 01:04:37 +0000
46@@ -1,14 +1,16 @@
47+from importlib import import_module
48+
49 from django.conf import settings
50 from django.contrib.auth import login
51 from django.contrib.auth.models import User
52 from django.core.urlresolvers import reverse
53 from django.http import HttpRequest
54+from django.test import TestCase as DjangoTestCase
55 from django.test.client import Client
56-from django.utils.importlib import import_module
57-
58-from django_factory import TestCase
59-
60 import soupmatchers
61+from testtools import TestCase as TesttoolsTestCase
62+
63+from revtracker.tests.factory import RevTrackerObjectFactory
64
65
66 class TestClient(Client):
67@@ -50,10 +52,11 @@
68 request.session.save()
69
70
71-class RevTrackerTestCase(TestCase):
72+class TestCase(DjangoTestCase, TesttoolsTestCase):
73
74 def setUp(self):
75- super(RevTrackerTestCase, self).setUp()
76+ super(TestCase, self).setUp()
77+ self.factory = RevTrackerObjectFactory()
78 self.client = TestClient()
79
80 def create_user_and_log_in(self):
81
82=== added file 'revtracker/tests/factory.py'
83--- revtracker/tests/factory.py 1970-01-01 00:00:00 +0000
84+++ revtracker/tests/factory.py 2018-01-30 01:04:37 +0000
85@@ -0,0 +1,92 @@
86+from __future__ import absolute_import, print_function, unicode_literals
87+
88+import itertools
89+import random
90+import string
91+
92+from django.contrib.auth import get_user_model
93+from django.contrib.auth.models import Group
94+from django.contrib.comments.models import Comment
95+from django.contrib.contenttypes.models import ContentType
96+from django.contrib.sites.models import Site
97+
98+from revtracker.models import (
99+ DeploymentRequest,
100+ Project,
101+ Revision,
102+ )
103+
104+
105+LETTERS = string.ascii_letters + string.digits
106+
107+
108+class RevTrackerObjectFactory(object):
109+
110+ def __init__(self):
111+ super(RevTrackerObjectFactory, self).__init__()
112+ self.counter = itertools.count(start=1)
113+
114+ def get_unique_integer(self):
115+ return next(self.counter)
116+
117+ def get_unique_string(self, prefix='string-', length=5):
118+ unique = ''.join(random.choice(LETTERS) for i in range(length))
119+ return prefix + unique
120+
121+ def make_comment_for_model(self, model):
122+ site = Site.objects.create(
123+ domain=self.get_unique_string(), name=self.get_unique_string())
124+ return Comment.objects.create(
125+ content_type=ContentType.objects.get_for_model(model),
126+ object_pk=model.pk, site=site)
127+
128+ def make_deployment_request(self, project=None, deploy_revision=None,
129+ status=None, date_created=None,
130+ date_completed=None, requester=None,
131+ completer=None):
132+ if project is None:
133+ project = self.make_project()
134+ if deploy_revision is None:
135+ deploy_revision = self.make_revision(project=project)
136+ if requester is None:
137+ requester = self.make_user()
138+ return DeploymentRequest.objects.create(
139+ project=project, deploy_revision=deploy_revision, status=status,
140+ date_created=date_created, date_completed=date_completed,
141+ requester=requester, completer=completer)
142+
143+ def make_group(self, name=None):
144+ if name is None:
145+ name = self.get_unique_string(prefix='group-')
146+ return Group.objects.create(name=name)
147+
148+ def make_project(self, name=None, url='', git_branch=None,
149+ sourcedeps_path='', description=None):
150+ if name is None:
151+ name = self.get_unique_string(prefix='project')
152+ return Project.objects.create(
153+ name=name, url=url, git_branch=git_branch,
154+ sourcedeps_path=sourcedeps_path, description=description)
155+
156+ def make_revision(self, project=None, parent=None, revno=None,
157+ commit_sha1=None, branch='',
158+ status=Revision.STATUS_UNKNOWN, commit_message='',
159+ assignee=None, committer=None, link=''):
160+ if project is None:
161+ project = self.make_project()
162+ if revno is None:
163+ revno = self.get_unique_integer()
164+ return Revision.objects.create(
165+ project=project, parent=parent, revno=revno,
166+ commit_sha1=commit_sha1, branch=branch, status=status,
167+ commit_message=commit_message, assignee=assignee,
168+ committer=committer, link=link)
169+
170+ def make_user(self, username=None, password='test', is_active=True):
171+ if username is None:
172+ username = self.get_unique_string(prefix='user-')
173+ user = get_user_model().objects.create_user(
174+ username=username, password=password)
175+ user.is_active = is_active
176+ user.save()
177+ return user
178
179=== modified file 'revtracker/tests/test_api_helpers.py'
180--- revtracker/tests/test_api_helpers.py 2014-01-31 21:05:22 +0000
181+++ revtracker/tests/test_api_helpers.py 2018-01-30 01:04:37 +0000
182@@ -1,14 +1,9 @@
183 from django.conf import settings
184-from django.contrib.auth.models import (
185- AnonymousUser,
186- Group,
187- User,
188- )
189+from django.contrib.auth.models import AnonymousUser
190 from django.test import RequestFactory
191
192-from django_factory import TestCase
193-
194-from ..api_helpers import check_user_allowed
195+from revtracker.api_helpers import check_user_allowed
196+from revtracker.tests import TestCase
197
198
199 class CheckUserAllowedTests(TestCase):
200@@ -23,14 +18,14 @@
201
202 def test_user_inactive(self):
203 request = RequestFactory().get('/')
204- request.user = self.factory.make_one(User, is_active=False)
205+ request.user = self.factory.make_user(is_active=False)
206 called = object()
207 resp = check_user_allowed(lambda r: called)(request)
208 self.assertEqual(403, resp.status_code)
209
210 def test_no_groups(self):
211 request = RequestFactory().get('/')
212- request.user = self.factory.make_one(User, is_active=True)
213+ request.user = self.factory.make_user(is_active=True)
214 request.user.groups.clear()
215 called = object()
216 resp = check_user_allowed(lambda r: called)(request)
217@@ -38,8 +33,8 @@
218
219 def test_with_groups(self):
220 request = RequestFactory().get('/')
221- group = self.factory.make_one(Group)
222- request.user = self.factory.make_one(User, is_active=True)
223+ group = self.factory.make_group()
224+ request.user = self.factory.make_user(is_active=True)
225 group.user_set.add(request.user)
226 called = object()
227 resp = check_user_allowed(lambda r: called)(request)
228
229=== modified file 'revtracker/tests/test_data.py'
230--- revtracker/tests/test_data.py 2018-01-30 01:04:37 +0000
231+++ revtracker/tests/test_data.py 2018-01-30 01:04:37 +0000
232@@ -1,46 +1,43 @@
233 import datetime
234
235 from django.core.urlresolvers import reverse
236-from django.contrib.auth.models import User
237-from django.contrib.comments.models import Comment
238-from django.contrib.contenttypes.models import ContentType
239-from django_factory import TestCase
240
241-from ..models import (
242+from revtracker import data
243+from revtracker.models import (
244 DeploymentRequest,
245 Project,
246 Revision,
247 )
248-from .. import data
249+from revtracker.tests import TestCase
250
251
252 class ProjectBasicInfoTests(TestCase):
253
254 def test_includes_name(self):
255 name = "project1"
256- project = self.factory.make_one(Project, name=name)
257+ project = self.factory.make_project(name=name)
258 self.assertEqual(name, data.project_basic_info(project)['name'])
259
260 def test_includes_description(self):
261 description = "a description"
262- project = self.factory.make_one(Project, description=description)
263+ project = self.factory.make_project(description=description)
264 self.assertEqual(description,
265 data.project_basic_info(project)['description'])
266
267 def test_null_description_becomes_blank(self):
268 description = None
269- project = self.factory.make_one(Project, description=description)
270+ project = self.factory.make_project(description=description)
271 self.assertEqual('',
272 data.project_basic_info(project)['description'])
273
274 def test_includes_url(self):
275 name = "project1"
276- project = self.factory.make_one(Project, name=name)
277+ project = self.factory.make_project(name=name)
278 self.assertEqual(reverse('project_view', args=(name,)),
279 data.project_basic_info(project)['url'])
280
281 def test_number_of_queries(self):
282- project = self.factory.make_one(Project)
283+ project = self.factory.make_project()
284 from_db = Project.objects.get(pk=project.pk)
285 self.assertNumQueries(0, data.project_basic_info, from_db)
286
287@@ -48,12 +45,12 @@
288 class ProjectDeployedRevnoTests(TestCase):
289
290 def test_None_when_not_deployed(self):
291- project = self.factory.make_one(Project)
292+ project = self.factory.make_project()
293 self.assertEqual(None, data.project_deployed_revno(project))
294
295 def make_deployed_project(self, revno=10):
296- project = self.factory.make_one(Project)
297- revision = self.factory.make_one(Revision, project=project, revno=revno)
298+ project = self.factory.make_project()
299+ revision = self.factory.make_revision(project=project, revno=revno)
300 project.deployed_revision = revision
301 project.save()
302 return project
303@@ -64,7 +61,7 @@
304 self.assertEqual(revno, data.project_deployed_revno(project))
305
306 def test_number_of_queries(self):
307- project = self.factory.make_one(Project)
308+ project = self.factory.make_project()
309 from_db = Project.objects.get(pk=project.pk)
310 self.assertNumQueries(0, data.project_deployed_revno, from_db)
311
312@@ -77,29 +74,29 @@
313 class ProjectUndeployedRevisionsTests(TestCase):
314
315 def test_no_revisions(self):
316- project = self.factory.make_one(Project)
317+ project = self.factory.make_project()
318 deployed_revno = None
319 self.assertEqual([],
320 data.project_undeployed_revisions(project, deployed_revno))
321
322 def test_revisions_only_for_other_projects(self):
323- project = self.factory.make_one(Project)
324+ project = self.factory.make_project()
325 deployed_revno = None
326- other_project = self.factory.make_one(Project)
327- revision = self.factory.make_one(Revision, project=other_project)
328+ other_project = self.factory.make_project()
329+ self.factory.make_revision(project=other_project)
330 self.assertEqual([],
331 data.project_undeployed_revisions(project, deployed_revno))
332
333 def test_no_deployed_revision(self):
334- project = self.factory.make_one(Project)
335- revision = self.factory.make_one(Revision, project=project)
336+ project = self.factory.make_project()
337+ revision = self.factory.make_revision(project=project)
338 deployed_revno = None
339 self.assertEqual([revision],
340 data.project_undeployed_revisions(project, deployed_revno))
341
342 def test_deploy_revision_is_last(self):
343- project = self.factory.make_one(Project)
344- revision = self.factory.make_one(Revision, project=project)
345+ project = self.factory.make_project()
346+ revision = self.factory.make_revision(project=project)
347 project.deployed_revision = revision
348 deployed_revno = revision.revno
349 project.save()
350@@ -107,9 +104,9 @@
351 data.project_undeployed_revisions(project, deployed_revno))
352
353 def test_with_undeployed(self):
354- project = self.factory.make_one(Project)
355- revision1 = self.factory.make_one(Revision, project=project, revno=1)
356- revision2 = self.factory.make_one(Revision, project=project, revno=2)
357+ project = self.factory.make_project()
358+ revision1 = self.factory.make_revision(project=project, revno=1)
359+ revision2 = self.factory.make_revision(project=project, revno=2)
360 project.deployed_revision = revision1
361 deployed_revno = revision1.revno
362 project.save()
363@@ -117,10 +114,10 @@
364 data.project_undeployed_revisions(project, deployed_revno))
365
366 def test_sorted(self):
367- project = self.factory.make_one(Project)
368- revision1 = self.factory.make_one(Revision, project=project, revno=1)
369- revision2 = self.factory.make_one(Revision, project=project, revno=2)
370- revision3 = self.factory.make_one(Revision, project=project, revno=3)
371+ project = self.factory.make_project()
372+ revision1 = self.factory.make_revision(project=project, revno=1)
373+ revision2 = self.factory.make_revision(project=project, revno=2)
374+ revision3 = self.factory.make_revision(project=project, revno=3)
375 project.deployed_revision = revision1
376 deployed_revno = revision1.revno
377 project.save()
378@@ -128,20 +125,19 @@
379 data.project_undeployed_revisions(project, deployed_revno))
380
381 def test_excludes_children(self):
382- project = self.factory.make_one(Project)
383- revision1 = self.factory.make_one(Revision, project=project, revno=1)
384- revision2 = self.factory.make_one(Revision, project=project,
385- parent=revision1, revno=2)
386+ project = self.factory.make_project()
387+ revision1 = self.factory.make_revision(project=project, revno=1)
388+ self.factory.make_revision(project=project, parent=revision1, revno=2)
389 deployed_revno = None
390 project.save()
391 self.assertEqual([revision1],
392 data.project_undeployed_revisions(project, deployed_revno))
393
394 def test_number_of_queries(self):
395- project = self.factory.make_one(Project)
396- revision1 = self.factory.make_one(Revision, project=project, revno=1)
397- revision2 = self.factory.make_one(Revision, project=project, revno=2)
398- revision3 = self.factory.make_one(Revision, project=project, revno=3)
399+ project = self.factory.make_project()
400+ revision1 = self.factory.make_revision(project=project, revno=1)
401+ self.factory.make_revision(project=project, revno=2)
402+ self.factory.make_revision(project=project, revno=3)
403 project.deployed_revision = revision1
404 deployed_revno = revision1.revno
405 project.save()
406@@ -156,36 +152,36 @@
407 self.assertEqual([], data.project_deployable_revisions([], {}))
408
409 def test_project_deployable_revisions_undeployable_revision(self):
410- project = self.factory.make_one(Project)
411- revision = self.factory.make_one(Revision, project=project,
412+ project = self.factory.make_project()
413+ revision = self.factory.make_revision(project=project,
414 status=Revision.STATUS_BAD)
415 self.assertEqual([],
416 data.project_deployable_revisions([revision], {}))
417
418 def test_project_deployable_revisions_deployable_revision(self):
419- project = self.factory.make_one(Project)
420- revision = self.factory.make_one(Revision, project=project,
421+ project = self.factory.make_project()
422+ revision = self.factory.make_revision(project=project,
423 status=Revision.STATUS_OK)
424 self.assertEqual([revision],
425 data.project_deployable_revisions([revision], {}))
426
427 def test_project_deployable_revisions_only_those_after_deployable(self):
428- project = self.factory.make_one(Project)
429- revision1 = self.factory.make_one(Revision, project=project,
430+ project = self.factory.make_project()
431+ revision1 = self.factory.make_revision(project=project,
432 status=Revision.STATUS_OK, revno=1)
433- revision2 = self.factory.make_one(Revision, project=project,
434+ revision2 = self.factory.make_revision(project=project,
435 status=Revision.STATUS_BAD, revno=2)
436- revision3 = self.factory.make_one(Revision, project=project,
437+ revision3 = self.factory.make_revision(project=project,
438 status=Revision.STATUS_OK, revno=3)
439 undeployed_revisions = [revision1, revision2, revision3]
440 self.assertEqual([revision1],
441 data.project_deployable_revisions(undeployed_revisions, {}))
442
443 def test_project_deployable_revisions_with_rollback(self):
444- project = self.factory.make_one(Project)
445- revision1 = self.factory.make_one(Revision, project=project,
446+ project = self.factory.make_project()
447+ revision1 = self.factory.make_revision(project=project,
448 status=Revision.STATUS_BAD, revno=1)
449- revision2 = self.factory.make_one(Revision, project=project,
450+ revision2 = self.factory.make_revision(project=project,
451 status=Revision.STATUS_OK, revno=2)
452 revision1.rolled_back_by = revision2
453 revision1.save()
454@@ -194,13 +190,13 @@
455 data.project_deployable_revisions(undeployed_revisions, {}))
456
457 def test_project_deployable_revisions_with_bad_child(self):
458- project = self.factory.make_one(Project)
459- revision1 = self.factory.make_one(Revision, project=project,
460+ project = self.factory.make_project()
461+ revision1 = self.factory.make_revision(project=project,
462 status=Revision.STATUS_OK, revno=1)
463- child = self.factory.make_one(Revision, project=project,
464+ child = self.factory.make_revision(project=project,
465 parent=revision1, status=Revision.STATUS_BAD, revno=1,
466 branch="lp:foo")
467- revision2 = self.factory.make_one(Revision, project=project,
468+ revision2 = self.factory.make_revision(project=project,
469 status=Revision.STATUS_OK, revno=2)
470 undeployed_revisions = [revision1, revision2]
471 child_map = {revision1.pk: [child]}
472@@ -209,13 +205,13 @@
473 child_map))
474
475 def test_project_deployable_revisions_with_child_rollback(self):
476- project = self.factory.make_one(Project)
477- revision1 = self.factory.make_one(Revision, project=project,
478+ project = self.factory.make_project()
479+ revision1 = self.factory.make_revision(project=project,
480 status=Revision.STATUS_OK, revno=1)
481- child = self.factory.make_one(Revision, project=project,
482+ child = self.factory.make_revision(project=project,
483 parent=revision1, status=Revision.STATUS_BAD, revno=1,
484 branch="lp:foo")
485- revision2 = self.factory.make_one(Revision, project=project,
486+ revision2 = self.factory.make_revision(project=project,
487 status=Revision.STATUS_OK, revno=2)
488 child.rolled_back_by = revision2
489 child.save()
490@@ -226,10 +222,10 @@
491 child_map))
492
493 def test_project_deployable_revisions_bad_rollback(self):
494- project = self.factory.make_one(Project)
495- revision1 = self.factory.make_one(Revision, project=project,
496+ project = self.factory.make_project()
497+ revision1 = self.factory.make_revision(project=project,
498 status=Revision.STATUS_BAD, revno=1)
499- revision2 = self.factory.make_one(Revision, project=project,
500+ revision2 = self.factory.make_revision(project=project,
501 status=Revision.STATUS_BAD, revno=2)
502 revision1.rolled_back_by = revision2
503 revision1.save()
504@@ -238,17 +234,17 @@
505 data.project_deployable_revisions(undeployed_revisions, {}))
506
507 def test_number_queries(self):
508- project = self.factory.make_one(Project)
509- revision = self.factory.make_one(Revision, project=project,
510+ project = self.factory.make_project()
511+ revision = self.factory.make_revision(project=project,
512 status=Revision.STATUS_OK)
513 self.assertNumQueries(0, data.project_deployable_revisions,
514 [revision], {})
515
516 def test_number_queries_with_rollback(self):
517- project = self.factory.make_one(Project)
518- revision1 = self.factory.make_one(Revision, project=project,
519+ project = self.factory.make_project()
520+ revision1 = self.factory.make_revision(project=project,
521 status=Revision.STATUS_BAD)
522- revision2 = self.factory.make_one(Revision, project=project,
523+ revision2 = self.factory.make_revision(project=project,
524 status=Revision.STATUS_OK)
525 revision1.rolled_back_by = revision2
526 revision1.save()
527@@ -256,10 +252,10 @@
528 [revision1, revision2], {})
529
530 def test_number_queries_with_child(self):
531- project = self.factory.make_one(Project)
532- revision1 = self.factory.make_one(Revision, project=project,
533+ project = self.factory.make_project()
534+ revision1 = self.factory.make_revision(project=project,
535 status=Revision.STATUS_OK)
536- child = self.factory.make_one(Revision, project=project,
537+ child = self.factory.make_revision(project=project,
538 status=Revision.STATUS_OK, parent=revision1, branch="lp:foo")
539 self.assertNumQueries(0, data.project_deployable_revisions,
540 [revision1], {revision1.pk: [child]})
541@@ -272,7 +268,7 @@
542
543 def test_with_deployable(self):
544 revno = 10
545- revision = self.factory.make_one(Revision, revno=revno,
546+ revision = self.factory.make_revision(revno=revno,
547 status=Revision.STATUS_OK)
548 self.assertEqual(revno,
549 data.project_maximum_deployable_revision([revision]).revno)
550@@ -280,15 +276,15 @@
551 def test_last_deployable(self):
552 revno = 11
553 deployable = []
554- deployable.append(self.factory.make_one(Revision, revno=revno-1,
555+ deployable.append(self.factory.make_revision(revno=revno-1,
556 status=Revision.STATUS_OK))
557- deployable.append(self.factory.make_one(Revision, revno=revno,
558+ deployable.append(self.factory.make_revision(revno=revno,
559 status=Revision.STATUS_OK))
560 self.assertEqual(revno,
561 data.project_maximum_deployable_revision(deployable).revno)
562
563 def test_number_queries(self):
564- revision = self.factory.make_one(Revision, status=Revision.STATUS_OK)
565+ revision = self.factory.make_revision(status=Revision.STATUS_OK)
566 from_db = Revision.objects.get(pk=revision.pk)
567 self.assertNumQueries(0,
568 data.project_maximum_deployable_revision, [from_db])
569@@ -301,27 +297,27 @@
570 data.project_revision_blocking_deployment([], []))
571
572 def test_no_blockers(self):
573- revision = self.factory.make_one(Revision, status=Revision.STATUS_OK)
574+ revision = self.factory.make_revision(status=Revision.STATUS_OK)
575 self.assertEqual(None,
576 data.project_revision_blocking_deployment([revision],
577 [revision]))
578
579 def test_one_blocker(self):
580- revision = self.factory.make_one(Revision, status=Revision.STATUS_BAD)
581+ revision = self.factory.make_revision(status=Revision.STATUS_BAD)
582 self.assertEqual(revision,
583 data.project_revision_blocking_deployment([revision], []))
584
585 def test_earliest_blocker(self):
586- revision1 = self.factory.make_one(Revision, status=Revision.STATUS_BAD)
587- revision2 = self.factory.make_one(Revision, revno=revision1.revno+1,
588+ revision1 = self.factory.make_revision(status=Revision.STATUS_BAD)
589+ revision2 = self.factory.make_revision(revno=revision1.revno+1,
590 status=Revision.STATUS_BAD)
591 self.assertEqual(revision1,
592 data.project_revision_blocking_deployment(
593 [revision1, revision2], []))
594
595 def test_number_queries(self):
596- revision = self.factory.make_one(Revision, status=Revision.STATUS_BAD)
597- from_db = Revision.objects.get(pk=revision.pk)
598+ revision = self.factory.make_revision(status=Revision.STATUS_BAD)
599+ Revision.objects.get(pk=revision.pk)
600 self.assertNumQueries(0,
601 data.project_revision_blocking_deployment, [revision], [])
602
603@@ -332,51 +328,45 @@
604 self.assertEqual([], data.project_revisions_needing_qa([]))
605
606 def test_undeployed_needing_qa(self):
607- revision = self.factory.make_one(Revision,
608- status=Revision.STATUS_UNKNOWN)
609+ revision = self.factory.make_revision(status=Revision.STATUS_UNKNOWN)
610 self.assertEqual([revision],
611 data.project_revisions_needing_qa([revision]))
612
613 def test_undeployed_not_needing_qa(self):
614- revision = self.factory.make_one(Revision,
615- status=Revision.STATUS_BAD)
616+ revision = self.factory.make_revision(status=Revision.STATUS_BAD)
617 self.assertEqual([],
618 data.project_revisions_needing_qa([revision]))
619
620 def test_child_needing_qa(self):
621- revision = self.factory.make_one(Revision,
622- status=Revision.STATUS_BAD)
623- child = self.factory.make_one(Revision,
624+ revision = self.factory.make_revision(status=Revision.STATUS_BAD)
625+ child = self.factory.make_revision(
626 status=Revision.STATUS_UNKNOWN, parent=revision,
627 branch="lp:foo")
628 self.assertEqual([child],
629 data.project_revisions_needing_qa([revision]))
630
631 def test_child_not_needing_qa(self):
632- revision = self.factory.make_one(Revision,
633- status=Revision.STATUS_BAD)
634- child = self.factory.make_one(Revision,
635+ revision = self.factory.make_revision(status=Revision.STATUS_BAD)
636+ self.factory.make_revision(
637 status=Revision.STATUS_OK, parent=revision,
638 branch="lp:foo")
639 self.assertEqual([],
640 data.project_revisions_needing_qa([revision]))
641
642 def test_parent_and_child_need_qa(self):
643- revision = self.factory.make_one(Revision,
644- status=Revision.STATUS_UNKNOWN)
645- child = self.factory.make_one(Revision,
646+ revision = self.factory.make_revision(status=Revision.STATUS_UNKNOWN)
647+ child = self.factory.make_revision(
648 status=Revision.STATUS_UNKNOWN, parent=revision,
649 branch="lp:foo")
650 self.assertEqual([child, revision],
651 data.project_revisions_needing_qa([revision]))
652
653 def test_number_queries(self):
654- revision = self.factory.make_one(Revision,
655- status=Revision.STATUS_UNKNOWN)
656- self.factory.make_one(Revision,
657+ revision = self.factory.make_revision(status=Revision.STATUS_UNKNOWN)
658+ self.factory.make_revision(
659 status=Revision.STATUS_UNKNOWN, parent=revision,
660 branch="lp:foo")
661- self.factory.make_one(Revision,
662+ self.factory.make_revision(
663 status=Revision.STATUS_UNKNOWN, parent=revision,
664 branch="lp:foo")
665 from_db = Revision.objects.get(pk=revision.pk)
666@@ -387,84 +377,84 @@
667 class RevisionBasicInfoTests(TestCase):
668
669 def test_includes_pk(self):
670- revision = self.factory.make_one(Revision)
671+ revision = self.factory.make_revision()
672 self.assertEqual(revision.pk, data.revision_basic_info(revision)['pk'])
673
674 def test_includes_title(self):
675 revno = 10
676- revision = self.factory.make_one(Revision, revno=revno)
677+ revision = self.factory.make_revision(revno=revno)
678 self.assertEqual("Revision 10",
679 data.revision_basic_info(revision)['title'])
680
681 def test_includes_description(self):
682 revno = 10
683- revision = self.factory.make_one(Revision, revno=revno)
684+ revision = self.factory.make_revision(revno=revno)
685 self.assertEqual("revision 10",
686 data.revision_basic_info(revision)['description'])
687
688 def test_includes_branch(self):
689 branch = "lp:foo"
690- revision = self.factory.make_one(Revision, branch=branch)
691+ revision = self.factory.make_revision(branch=branch)
692 self.assertEqual(branch, data.revision_basic_info(revision)['branch'])
693
694 def test_includes_branch_if_None(self):
695- revision = self.factory.make_one(Revision, branch=None)
696+ revision = self.factory.make_revision(branch=None)
697 self.assertEqual(None, data.revision_basic_info(revision)['branch'])
698
699 def test_includes_revno(self):
700 revno = 10
701- revision = self.factory.make_one(Revision, revno=revno)
702+ revision = self.factory.make_revision(revno=revno)
703 self.assertEqual(revno, data.revision_basic_info(revision)['revno'])
704
705 def test_includes_commit_sha1(self):
706 commit_sha1 = "0" * 40
707- revision = self.factory.make_one(Revision, commit_sha1=commit_sha1)
708+ revision = self.factory.make_revision(commit_sha1=commit_sha1)
709 self.assertEqual(commit_sha1,
710 data.revision_basic_info(revision)['commit_sha1'])
711
712 def test_includes_commit_sha1_if_None(self):
713- revision = self.factory.make_one(Revision, commit_sha1=None)
714+ revision = self.factory.make_revision(commit_sha1=None)
715 self.assertEqual(None,
716 data.revision_basic_info(revision)['commit_sha1'])
717
718 def test_includes_assignee(self):
719 assignee = "james-w"
720- revision = self.factory.make_one(Revision, assignee=assignee)
721+ revision = self.factory.make_revision(assignee=assignee)
722 self.assertEqual(assignee,
723 data.revision_basic_info(revision)['assignee'])
724
725 def test_includes_assignee_if_None(self):
726 assignee = None
727- revision = self.factory.make_one(Revision, assignee=assignee)
728+ revision = self.factory.make_revision(assignee=assignee)
729 self.assertEqual(assignee,
730 data.revision_basic_info(revision)['assignee'])
731
732 def test_includes_assignee_link(self):
733 assignee = "james-w"
734- revision = self.factory.make_one(Revision, assignee=assignee)
735+ revision = self.factory.make_revision(assignee=assignee)
736 self.assertEqual("https://launchpad.net/~{}".format(assignee),
737 data.revision_basic_info(revision)['assignee_link'])
738
739 def test_includes_assignee_link_if_None(self):
740 assignee = None
741- revision = self.factory.make_one(Revision, assignee=assignee)
742+ revision = self.factory.make_revision(assignee=assignee)
743 self.assertEqual(None,
744 data.revision_basic_info(revision)['assignee_link'])
745
746 def test_includes_link(self):
747 link = "https://example.com/foo"
748- revision = self.factory.make_one(Revision, link=link)
749+ revision = self.factory.make_revision(link=link)
750 self.assertEqual(link,
751 data.revision_basic_info(revision)['link'])
752
753 def test_includes_commit_message(self):
754 commit_message = "This is a commit"
755- revision = self.factory.make_one(Revision, commit_message=commit_message)
756+ revision = self.factory.make_revision(commit_message=commit_message)
757 self.assertEqual(commit_message,
758 data.revision_basic_info(revision)['commit_message'])
759
760 def test_number_queries(self):
761- revision = self.factory.make_one(Revision)
762+ revision = self.factory.make_revision()
763 from_db = Revision.objects.get(pk=revision.pk)
764 self.assertNumQueries(0, data.revision_basic_info, from_db)
765
766@@ -472,52 +462,47 @@
767 class RevisionSummaryStatusTests(TestCase):
768
769 def test_revision_bad(self):
770- revision = self.factory.make_one(Revision, status=Revision.STATUS_BAD)
771- child = self.factory.make_one(Revision, status=Revision.STATUS_UNKNOWN,
772+ revision = self.factory.make_revision(status=Revision.STATUS_BAD)
773+ child = self.factory.make_revision(status=Revision.STATUS_UNKNOWN,
774 parent=revision, branch="lp:foo")
775 self.assertEqual(Revision.STATUS_BAD,
776 data.revision_summary_status(revision, [child]))
777
778 def test_revision_unknown(self):
779- revision = self.factory.make_one(Revision,
780- status=Revision.STATUS_UNKNOWN)
781- child = self.factory.make_one(Revision, status=Revision.STATUS_BAD,
782+ revision = self.factory.make_revision(status=Revision.STATUS_UNKNOWN)
783+ child = self.factory.make_revision(status=Revision.STATUS_BAD,
784 parent=revision, branch="lp:foo")
785 self.assertEqual(Revision.STATUS_UNKNOWN,
786 data.revision_summary_status(revision, [child]))
787
788 def test_revision_ok_no_chilren(self):
789- revision = self.factory.make_one(Revision,
790- status=Revision.STATUS_OK)
791+ revision = self.factory.make_revision(status=Revision.STATUS_OK)
792 self.assertEqual(Revision.STATUS_OK,
793 data.revision_summary_status(revision, []))
794
795 def test_revision_ok_bad_child(self):
796- revision = self.factory.make_one(Revision,
797- status=Revision.STATUS_OK)
798- child = self.factory.make_one(Revision, status=Revision.STATUS_BAD,
799+ revision = self.factory.make_revision(status=Revision.STATUS_OK)
800+ child = self.factory.make_revision(status=Revision.STATUS_BAD,
801 parent=revision, branch="lp:foo")
802 self.assertEqual(Revision.STATUS_BAD,
803 data.revision_summary_status(revision, [child]))
804
805 def test_revision_ok_unknown_child(self):
806- revision = self.factory.make_one(Revision,
807- status=Revision.STATUS_OK)
808- child = self.factory.make_one(Revision, status=Revision.STATUS_UNKNOWN,
809+ revision = self.factory.make_revision(status=Revision.STATUS_OK)
810+ child = self.factory.make_revision(status=Revision.STATUS_UNKNOWN,
811 parent=revision, branch="lp:foo")
812 self.assertEqual(Revision.STATUS_UNKNOWN,
813 data.revision_summary_status(revision, [child]))
814
815 def test_revision_ok_untestable_child(self):
816- revision = self.factory.make_one(Revision,
817- status=Revision.STATUS_OK)
818- child = self.factory.make_one(Revision, status=Revision.STATUS_UNTESTABLE,
819+ revision = self.factory.make_revision(status=Revision.STATUS_OK)
820+ child = self.factory.make_revision(status=Revision.STATUS_UNTESTABLE,
821 parent=revision, branch="lp:foo")
822 self.assertEqual(Revision.STATUS_OK,
823 data.revision_summary_status(revision, [child]))
824
825 def test_number_queries(self):
826- revision = self.factory.make_one(Revision, status=Revision.STATUS_OK)
827+ revision = self.factory.make_revision(status=Revision.STATUS_OK)
828 from_db = Revision.objects.get(pk=revision.pk)
829 self.assertNumQueries(0, data.revision_summary_status, from_db, [])
830
831@@ -525,35 +510,35 @@
832 class RevisionIsDeployableTests(TestCase):
833
834 def test_unknown_revision_not_deployable(self):
835- revision = self.factory.make_one(Revision, status=Revision.STATUS_UNKNOWN)
836+ revision = self.factory.make_revision(status=Revision.STATUS_UNKNOWN)
837 self.assertEqual(False, data.revision_is_deployable(revision, []))
838
839 def test_bad_revision_not_deployable(self):
840- revision = self.factory.make_one(Revision, status=Revision.STATUS_BAD)
841+ revision = self.factory.make_revision(status=Revision.STATUS_BAD)
842 self.assertEqual(False, data.revision_is_deployable(revision, []))
843
844 def test_ok_revision_deployable(self):
845- revision = self.factory.make_one(Revision, status=Revision.STATUS_OK)
846+ revision = self.factory.make_revision(status=Revision.STATUS_OK)
847 self.assertEqual(True, data.revision_is_deployable(revision, []))
848
849 def test_untestable_revision_deployable(self):
850- revision = self.factory.make_one(Revision, status=Revision.STATUS_UNTESTABLE)
851+ revision = self.factory.make_revision(status=Revision.STATUS_UNTESTABLE)
852 self.assertEqual(True, data.revision_is_deployable(revision, []))
853
854 def test_child_revision_not_deployable(self):
855- revision = self.factory.make_one(Revision, status=Revision.STATUS_UNTESTABLE)
856- child = self.factory.make_one(Revision, parent=revision,
857+ revision = self.factory.make_revision(status=Revision.STATUS_UNTESTABLE)
858+ child = self.factory.make_revision(parent=revision,
859 status=Revision.STATUS_BAD)
860 self.assertEqual(False, data.revision_is_deployable(revision, [child]))
861
862 def test_child_revision_deployable(self):
863- revision = self.factory.make_one(Revision, status=Revision.STATUS_UNTESTABLE)
864- child = self.factory.make_one(Revision, parent=revision,
865+ revision = self.factory.make_revision(status=Revision.STATUS_UNTESTABLE)
866+ child = self.factory.make_revision(parent=revision,
867 status=Revision.STATUS_OK)
868 self.assertEqual(True, data.revision_is_deployable(revision, [child]))
869
870 def test_number_queries(self):
871- revision = self.factory.make_one(Revision)
872+ revision = self.factory.make_revision()
873 from_db = Revision.objects.get(pk=revision.pk)
874 self.assertNumQueries(0, data.revision_is_deployable, from_db, [])
875
876@@ -561,36 +546,36 @@
877 class RevisionRolledBackByTests(TestCase):
878
879 def test_not_rolled_back(self):
880- revision = self.factory.make_one(Revision)
881+ revision = self.factory.make_revision()
882 self.assertEqual([], data.revision_rolled_back_by(revision, []))
883
884 def test_rolled_back(self):
885- revision = self.factory.make_one(Revision)
886- rollback = self.factory.make_one(Revision)
887+ revision = self.factory.make_revision()
888+ rollback = self.factory.make_revision()
889 revision.rolled_back_by = rollback
890 revision.save()
891 self.assertEqual([rollback],
892 data.revision_rolled_back_by(revision, []))
893
894 def test_child_not_rolled_back(self):
895- revision = self.factory.make_one(Revision)
896- child = self.factory.make_one(Revision)
897+ revision = self.factory.make_revision()
898+ child = self.factory.make_revision()
899 self.assertEqual([], data.revision_rolled_back_by(revision, [child]))
900
901 def test_child_rolled_back(self):
902- revision = self.factory.make_one(Revision)
903- child = self.factory.make_one(Revision)
904- rollback = self.factory.make_one(Revision)
905+ revision = self.factory.make_revision()
906+ child = self.factory.make_revision()
907+ rollback = self.factory.make_revision()
908 child.rolled_back_by = rollback
909 child.save()
910 self.assertEqual([rollback],
911 data.revision_rolled_back_by(revision, [child]))
912
913 def test_parent_and_child_rolled_back(self):
914- revision = self.factory.make_one(Revision)
915- child = self.factory.make_one(Revision)
916- parent_rollback = self.factory.make_one(Revision)
917- child_rollback = self.factory.make_one(Revision)
918+ revision = self.factory.make_revision()
919+ child = self.factory.make_revision()
920+ parent_rollback = self.factory.make_revision()
921+ child_rollback = self.factory.make_revision()
922 revision.rolled_back_by = parent_rollback
923 revision.save()
924 child.rolled_back_by = child_rollback
925@@ -599,14 +584,14 @@
926 data.revision_rolled_back_by(revision, [child]))
927
928 def test_number_queries(self):
929- revision = self.factory.make_one(Revision)
930+ revision = self.factory.make_revision()
931 from_db = Revision.objects.get(pk=revision.pk)
932 self.assertNumQueries(0,
933 data.revision_rolled_back_by, from_db, [])
934
935 def test_number_queries_with_rollback(self):
936- revision = self.factory.make_one(Revision)
937- rollback = self.factory.make_one(Revision)
938+ revision = self.factory.make_revision()
939+ rollback = self.factory.make_revision()
940 revision.rolled_back_by = rollback
941 revision.save()
942 from_db = Revision.objects.get(pk=revision.pk)
943@@ -620,89 +605,74 @@
944 self.assertEqual({}, data.get_child_revisions([]))
945
946 def test_no_children(self):
947- revision = self.factory.make_one(Revision)
948+ revision = self.factory.make_revision()
949 self.assertEqual({}, data.get_child_revisions([revision]))
950
951 def test_one_child(self):
952- revision = self.factory.make_one(Revision)
953- child = self.factory.make_one(Revision, parent=revision,
954- branch="lp:foo")
955+ revision = self.factory.make_revision()
956+ child = self.factory.make_revision(parent=revision, branch="lp:foo")
957 self.assertEqual({revision.pk: [child]},
958 data.get_child_revisions([revision]))
959
960 def test_two_children(self):
961- revision = self.factory.make_one(Revision)
962- child1 = self.factory.make_one(Revision, parent=revision,
963- branch="lp:foo")
964- child2 = self.factory.make_one(Revision, parent=revision,
965- branch="lp:foo")
966+ revision = self.factory.make_revision()
967+ child1 = self.factory.make_revision(parent=revision, branch="lp:foo")
968+ child2 = self.factory.make_revision(parent=revision, branch="lp:foo")
969 self.assertEqual({revision.pk: [child1, child2]},
970 data.get_child_revisions([revision]))
971
972 def test_two_revisions_with_children(self):
973- revision1 = self.factory.make_one(Revision)
974- child1 = self.factory.make_one(Revision, parent=revision1,
975- branch="lp:foo")
976- revision2 = self.factory.make_one(Revision)
977- child2 = self.factory.make_one(Revision, parent=revision2,
978- branch="lp:foo")
979+ revision1 = self.factory.make_revision()
980+ child1 = self.factory.make_revision(parent=revision1, branch="lp:foo")
981+ revision2 = self.factory.make_revision()
982+ child2 = self.factory.make_revision(parent=revision2, branch="lp:foo")
983 self.assertEqual({revision1.pk: [child1], revision2.pk: [child2]},
984 data.get_child_revisions([revision1, revision2]))
985
986 def test_number_queries(self):
987- revision1 = self.factory.make_one(Revision)
988- child1 = self.factory.make_one(Revision, parent=revision1,
989- branch="lp:foo")
990- revision2 = self.factory.make_one(Revision)
991- child2 = self.factory.make_one(Revision, parent=revision2,
992- branch="lp:foo")
993+ revision1 = self.factory.make_revision()
994+ self.factory.make_revision(parent=revision1, branch="lp:foo")
995+ revision2 = self.factory.make_revision()
996+ self.factory.make_revision(parent=revision2, branch="lp:foo")
997 self.assertNumQueries(1,
998 data.get_child_revisions, [revision1, revision2])
999
1000
1001 class CommentsForRevisionsTests(TestCase):
1002
1003- def get_content_type(self, model):
1004- return ContentType.objects.get_for_model(model)
1005-
1006- def make_comment_for(self, model):
1007- return self.factory.make_one(Comment,
1008- content_type=self.get_content_type(model),
1009- object_pk=model.pk)
1010-
1011 def test_no_revisions(self):
1012 self.assertEqual({}, data.comments_for_revisions([]))
1013
1014 def test_no_comments(self):
1015- revision = self.factory.make_one(Revision)
1016+ revision = self.factory.make_revision()
1017 self.assertEqual({}, data.comments_for_revisions([revision]))
1018
1019 def test_one_comment(self):
1020- revision = self.factory.make_one(Revision)
1021- comment = self.make_comment_for(revision)
1022+ revision = self.factory.make_revision()
1023+ comment = self.factory.make_comment_for_model(revision)
1024 self.assertEqual({revision.pk: [comment]},
1025 data.comments_for_revisions([revision]))
1026
1027 def test_two_comments(self):
1028- revision = self.factory.make_one(Revision)
1029- comment1 = self.make_comment_for(revision)
1030- comment2 = self.make_comment_for(revision)
1031+ revision = self.factory.make_revision()
1032+ comment1 = self.factory.make_comment_for_model(revision)
1033+ comment2 = self.factory.make_comment_for_model(revision)
1034 self.assertEqual({revision.pk: [comment1, comment2]},
1035 data.comments_for_revisions([revision]))
1036
1037 def test_two_revisions_with_comments(self):
1038- revision1 = self.factory.make_one(Revision)
1039- revision2 = self.factory.make_one(Revision)
1040- comment1 = self.make_comment_for(revision1)
1041- comment2 = self.make_comment_for(revision2)
1042+ revision1 = self.factory.make_revision()
1043+ revision2 = self.factory.make_revision()
1044+ comment1 = self.factory.make_comment_for_model(revision1)
1045+ comment2 = self.factory.make_comment_for_model(revision2)
1046 self.assertEqual({revision1.pk: [comment1], revision2.pk: [comment2]},
1047 data.comments_for_revisions([revision1, revision2]))
1048
1049 def test_number_queries(self):
1050- revision1 = self.factory.make_one(Revision)
1051- revision2 = self.factory.make_one(Revision)
1052- comment1 = self.make_comment_for(revision1)
1053- comment2 = self.make_comment_for(revision2)
1054+ revision1 = self.factory.make_revision()
1055+ revision2 = self.factory.make_revision()
1056+ self.factory.make_comment_for_model(revision1)
1057+ self.factory.make_comment_for_model(revision2)
1058 self.assertNumQueries(1,
1059 data.comments_for_revisions, [revision1, revision2])
1060
1061@@ -713,21 +683,24 @@
1062 self.assertEqual({}, data.get_parent_revnos([]))
1063
1064 def test_parent_revision(self):
1065- revision = self.factory.make_one(Revision)
1066+ revision = self.factory.make_revision()
1067 self.assertEqual({}, data.get_parent_revnos([revision]))
1068
1069 def test_child_revision(self):
1070 revno = 30
1071- revision = self.factory.make_one(Revision, revno=revno)
1072- child = self.factory.make_one(Revision, parent=revision,
1073+ revision = self.factory.make_revision(revno=revno)
1074+ child = self.factory.make_revision(parent=revision,
1075 branch="lp:foo", revno=1)
1076 self.assertEqual({child.pk: revno}, data.get_parent_revnos([child]))
1077
1078 def test_multiple_reviions(self):
1079 revno = 30
1080- revision = self.factory.make_one(Revision, revno=revno)
1081- children = self.factory.make(2, Revision, parent=revision,
1082- branch="lp:foo", revno=1)
1083+ revision = self.factory.make_revision(revno=revno)
1084+ children = [
1085+ self.factory.make_revision(
1086+ parent=revision, branch="lp:foo", revno=1)
1087+ for _ in range(2)
1088+ ]
1089 expected = {
1090 children[0].pk: revno,
1091 children[1].pk: revno,
1092@@ -735,9 +708,12 @@
1093 self.assertEqual(expected, data.get_parent_revnos(children))
1094
1095 def test_query_count(self):
1096- revision = self.factory.make_one(Revision)
1097- children = self.factory.make(2, Revision, parent=revision,
1098- branch="lp:foo", revno=1)
1099+ revision = self.factory.make_revision()
1100+ children = [
1101+ self.factory.make_revision(
1102+ parent=revision, branch="lp:foo", revno=1)
1103+ for _ in range(2)
1104+ ]
1105 from_db = [Revision.objects.get(pk=rev.pk) for rev in children]
1106 self.assertNumQueries(1, data.get_parent_revnos, from_db)
1107
1108@@ -749,26 +725,25 @@
1109 data.deployed_revnos_of_projects_for_revisions([]))
1110
1111 def test_deployed(self):
1112- project = self.factory.make_one(Project)
1113- revision = self.factory.make_one(Revision, project=project)
1114+ project = self.factory.make_project()
1115+ revision = self.factory.make_revision(project=project)
1116 revno = 20
1117- deployed = self.factory.make_one(Revision, project=project,
1118- revno=revno)
1119+ deployed = self.factory.make_revision(project=project, revno=revno)
1120 project.deployed_revision = deployed
1121 project.save()
1122 self.assertEqual({project.pk: revno},
1123 data.deployed_revnos_of_projects_for_revisions([revision]))
1124
1125 def test_not_deployed(self):
1126- project = self.factory.make_one(Project)
1127- revision = self.factory.make_one(Revision, project=project)
1128+ project = self.factory.make_project()
1129+ revision = self.factory.make_revision(project=project)
1130 self.assertEqual({},
1131 data.deployed_revnos_of_projects_for_revisions([revision]))
1132
1133 def test_query_count(self):
1134- project = self.factory.make_one(Project)
1135- revision = self.factory.make_one(Revision, project=project)
1136- deployed = self.factory.make_one(Revision, project=project)
1137+ project = self.factory.make_project()
1138+ revision = self.factory.make_revision(project=project)
1139+ deployed = self.factory.make_revision(project=project)
1140 project.deployed_revision = deployed
1141 project.save()
1142 from_db = Revision.objects.select_related('project').get(pk=revision.pk)
1143@@ -782,17 +757,17 @@
1144 self.assertEqual([], data.deployment_requests())
1145
1146 def test_ignores_deployed(self):
1147- self.factory.make_one(DeploymentRequest,
1148+ self.factory.make_deployment_request(
1149 status=DeploymentRequest.STATUS_COMPLETE)
1150 self.assertEqual([], data.deployment_requests())
1151
1152 def test_includes_undeployed(self):
1153- request = self.factory.make_one(DeploymentRequest,
1154+ self.factory.make_deployment_request(
1155 status=DeploymentRequest.STATUS_WAITING)
1156 self.assertEqual(1, len(data.deployment_requests()))
1157
1158 def test_data(self):
1159- request = self.factory.make_one(DeploymentRequest,
1160+ request = self.factory.make_deployment_request(
1161 status=DeploymentRequest.STATUS_WAITING)
1162 info = data.deployment_requests()[0]
1163 self.assertEqual(request.project.name, info['project'])
1164@@ -809,10 +784,10 @@
1165 self.assertNotIn('completer', info)
1166
1167 def test_order_by_date_requested(self):
1168- request2 = self.factory.make_one(DeploymentRequest,
1169+ request2 = self.factory.make_deployment_request(
1170 status=DeploymentRequest.STATUS_WAITING,
1171 date_created=datetime.datetime(2000, 1, 2))
1172- request1 = self.factory.make_one(DeploymentRequest,
1173+ request1 = self.factory.make_deployment_request(
1174 status=DeploymentRequest.STATUS_WAITING,
1175 date_created=datetime.datetime(2000, 1, 1))
1176 requests = data.deployment_requests()
1177@@ -821,8 +796,8 @@
1178 [r['project'] for r in requests])
1179
1180 def test_status_is_completed(self):
1181- completer = self.factory.make_one(User)
1182- request = self.factory.make_one(DeploymentRequest,
1183+ completer = self.factory.make_user()
1184+ request = self.factory.make_deployment_request(
1185 status=DeploymentRequest.STATUS_COMPLETE,
1186 completer=completer, date_completed=datetime.datetime.now())
1187 info = data.deployment_requests(
1188@@ -844,12 +819,12 @@
1189 info['link'])
1190
1191 def test_order_by_date_completed(self):
1192- completer = self.factory.make_one(User)
1193- request1 = self.factory.make_one(DeploymentRequest,
1194+ completer = self.factory.make_user()
1195+ request1 = self.factory.make_deployment_request(
1196 status=DeploymentRequest.STATUS_COMPLETE,
1197 date_completed=datetime.datetime(2000, 1, 1),
1198 completer=completer)
1199- request2 = self.factory.make_one(DeploymentRequest,
1200+ request2 = self.factory.make_deployment_request(
1201 status=DeploymentRequest.STATUS_COMPLETE,
1202 date_completed=datetime.datetime(2000, 1, 2),
1203 completer=completer)
1204@@ -861,19 +836,19 @@
1205
1206 def test_query_count(self):
1207 expected_queries = 1
1208- self.factory.make_one(DeploymentRequest,
1209+ self.factory.make_deployment_request(
1210 status=DeploymentRequest.STATUS_WAITING)
1211 self.assertNumQueries(expected_queries,
1212 data.deployment_requests)
1213 # Make a second request and check the number of queries doens't
1214 # change
1215- self.factory.make_one(DeploymentRequest,
1216+ self.factory.make_deployment_request(
1217 status=DeploymentRequest.STATUS_WAITING)
1218 self.assertNumQueries(expected_queries,
1219 data.deployment_requests)
1220
1221 def test_nice_string_representation(self):
1222- deploy_req = self.factory.make_one(DeploymentRequest,
1223+ deploy_req = self.factory.make_deployment_request(
1224 status=DeploymentRequest.STATUS_COMPLETE)
1225 expect_string = "DeploymentRequest - %s" % deploy_req.deploy_revision
1226 self.assertEqual(expect_string, str(deploy_req))
1227
1228=== modified file 'revtracker/tests/test_tasks.py'
1229--- revtracker/tests/test_tasks.py 2018-01-30 01:04:37 +0000
1230+++ revtracker/tests/test_tasks.py 2018-01-30 01:04:37 +0000
1231@@ -7,7 +7,6 @@
1232 from bzrlib.controldir import ControlDir
1233 from bzrlib.tests import TestCaseWithTransport
1234 from django.test.utils import override_settings
1235-from django_factory import TestCase
1236 import pygit2
1237 from six.moves.urllib.request import pathname2url
1238 from testscenarios import WithScenarios
1239@@ -21,11 +20,9 @@
1240 get_launchpad,
1241 LaunchpadPersonDouble,
1242 )
1243-from revtracker.models import (
1244- Project,
1245- Revision,
1246- )
1247+from revtracker.models import Revision
1248 from revtracker.tasks import VCS
1249+from revtracker.tests import TestCase
1250
1251
1252 @override_settings(LP_INSTANCE='fake')
1253@@ -252,7 +249,7 @@
1254 self.lp = get_launchpad(launchpadlib_dir)
1255
1256 def test_email_in_map(self):
1257- project = self.factory.make_one(Project)
1258+ project = self.factory.make_project()
1259 _, url = self.make_commits(committer='Test User <user@example.com>')
1260 branch = tasks.LocalBranch.get_or_create(self.vcs, url, 'project')
1261 try:
1262@@ -274,7 +271,7 @@
1263 branch.unlock()
1264
1265 def test_email_from_launchpad(self):
1266- project = self.factory.make_one(Project)
1267+ project = self.factory.make_project()
1268 _, url = self.make_commits(committer='Test User <user@example.com>')
1269 branch = tasks.LocalBranch.get_or_create(self.vcs, url, 'project')
1270 try:
1271@@ -298,7 +295,7 @@
1272 branch.unlock()
1273
1274 def test_bad_email(self):
1275- project = self.factory.make_one(Project)
1276+ project = self.factory.make_project()
1277 _, url = self.make_commits(committer='Test User <user>')
1278 branch = tasks.LocalBranch.get_or_create(self.vcs, url, 'project')
1279 try:
1280@@ -320,7 +317,7 @@
1281 branch.unlock()
1282
1283 def test_no_parent(self):
1284- project = self.factory.make_one(Project)
1285+ project = self.factory.make_project()
1286 _, url = self.make_commits(committer='Test User <user>')
1287 branch = tasks.LocalBranch.get_or_create(self.vcs, url, 'project')
1288 try:
1289@@ -333,9 +330,9 @@
1290 branch.unlock()
1291
1292 def test_parent(self):
1293- project = self.factory.make_one(Project)
1294- parent_revision = self.factory.make_one(
1295- Revision, project=project, revno=1, parent=None, branch='',
1296+ project = self.factory.make_project()
1297+ parent_revision = self.factory.make_revision(
1298+ project=project, revno=1, parent=None, branch='',
1299 status=Revision.STATUS_UNKNOWN)
1300 _, url = self.make_commits(committer='Test User <user>')
1301 branch = tasks.LocalBranch.get_or_create(self.vcs, url, 'project')
1302@@ -350,7 +347,7 @@
1303 branch.unlock()
1304
1305 def test_created_qa(self):
1306- project = self.factory.make_one(Project)
1307+ project = self.factory.make_project()
1308 _, url = self.make_commits(committer='Test User <user>')
1309 branch = tasks.LocalBranch.get_or_create(self.vcs, url, 'project')
1310 try:
1311@@ -362,7 +359,7 @@
1312 branch.unlock()
1313
1314 def test_created_no_qa(self):
1315- project = self.factory.make_one(Project)
1316+ project = self.factory.make_project()
1317 _, url = self.make_commits(committer='Test User <user>')
1318 branch = tasks.LocalBranch.get_or_create(self.vcs, url, 'project')
1319 try:
1320@@ -493,12 +490,12 @@
1321
1322 def test_do_nothing_if_tip_unchanged(self):
1323 branch, url = self.make_commits(num_commits=2)
1324- project = self.factory.make_one(Project, url=url, git_branch='master')
1325- self.factory.make_one(
1326- Revision, project=project, revno=1, parent=None, branch='',
1327+ project = self.factory.make_project(url=url, git_branch='master')
1328+ self.factory.make_revision(
1329+ project=project, revno=1, parent=None, branch='',
1330 status=Revision.STATUS_BAD, commit_message='nonsense 1')
1331- tip_revision = self.factory.make_one(
1332- Revision, project=project, revno=2, parent=None, branch='',
1333+ tip_revision = self.factory.make_revision(
1334+ project=project, revno=2, parent=None, branch='',
1335 status=Revision.STATUS_BAD, commit_message='nonsense 2')
1336 if self.vcs == VCS.VCS_GIT:
1337 tip_revision.commit_sha1 = branch.revparse_single('HEAD').id.hex
1338@@ -516,9 +513,9 @@
1339
1340 def test_correct_status(self):
1341 branch, url = self.make_commits(num_commits=3)
1342- project = self.factory.make_one(Project, url=url, git_branch='master')
1343- start_revision = self.factory.make_one(
1344- Revision, project=project, revno=1, parent=None, branch='',
1345+ project = self.factory.make_project(url=url, git_branch='master')
1346+ start_revision = self.factory.make_revision(
1347+ project=project, revno=1, parent=None, branch='',
1348 status=Revision.STATUS_BAD)
1349 if self.vcs == VCS.VCS_GIT:
1350 start_revision.commit_sha1 = (
1351@@ -553,9 +550,8 @@
1352 self.make_commits(
1353 path='config-manager.txt',
1354 contents='dep %s;revno=%s\n' % (dep_url, dep_rev3))
1355- project = self.factory.make_one(
1356- Project, url=url, git_branch='master',
1357- sourcedeps_path='config-manager.txt')
1358+ project = self.factory.make_project(
1359+ url=url, git_branch='master', sourcedeps_path='config-manager.txt')
1360 with captured_stdout():
1361 tasks.update_revisions(project.pk)
1362 rev2 = project.revision_set.filter(parent=None, revno=2).get()
1363@@ -599,9 +595,8 @@
1364 self.make_commits(
1365 path='config-manager.txt',
1366 contents='dep %s;revno=%s\n' % (dep2_url, dep2_rev3))
1367- project = self.factory.make_one(
1368- Project, url=url, git_branch='master',
1369- sourcedeps_path='config-manager.txt')
1370+ project = self.factory.make_project(
1371+ url=url, git_branch='master', sourcedeps_path='config-manager.txt')
1372 with captured_stdout():
1373 tasks.update_revisions(project.pk)
1374 rev2 = project.revision_set.filter(parent=None, revno=2).get()
1375@@ -628,12 +623,12 @@
1376
1377 def test_do_not_attempt_to_unlock_if_failed_to_get_branch(self):
1378 branch, url = self.make_commits(num_commits=2)
1379- project = self.factory.make_one(Project, url=url, git_branch='master')
1380- self.factory.make_one(
1381- Revision, project=project, revno=1, parent=None, branch='',
1382+ project = self.factory.make_project(url=url, git_branch='master')
1383+ self.factory.make_revision(
1384+ project=project, revno=1, parent=None, branch='',
1385 status=Revision.STATUS_BAD, commit_message='nonsense 1')
1386- tip_revision = self.factory.make_one(
1387- Revision, project=project, revno=2, parent=None, branch='',
1388+ tip_revision = self.factory.make_revision(
1389+ project=project, revno=2, parent=None, branch='',
1390 status=Revision.STATUS_BAD, commit_message='nonsense 2')
1391 if self.vcs == VCS.VCS_GIT:
1392 tip_revision.commit_sha1 = branch.revparse_single('HEAD').id.hex
1393
1394=== modified file 'revtracker/tests/test_templates.py'
1395--- revtracker/tests/test_templates.py 2016-07-29 20:49:11 +0000
1396+++ revtracker/tests/test_templates.py 2018-01-30 01:04:37 +0000
1397@@ -1,7 +1,7 @@
1398-from django_factory import TestCase
1399 import soupmatchers
1400
1401-from .. import templating
1402+from revtracker import templating
1403+from revtracker.tests import TestCase
1404
1405
1406 class RevisionCommentForm(soupmatchers.Tag):
1407
1408=== modified file 'revtracker/tests/test_views.py'
1409--- revtracker/tests/test_views.py 2018-01-30 01:04:37 +0000
1410+++ revtracker/tests/test_views.py 2018-01-30 01:04:37 +0000
1411@@ -1,13 +1,10 @@
1412 from operator import itemgetter
1413
1414 from django.contrib.auth.models import User
1415-from django.contrib.comments.models import Comment
1416-from django.contrib.contenttypes.models import ContentType
1417-from django_factory import TestCase
1418-from testtools.matchers import Annotate
1419
1420-from .. import views
1421-from ..models import Project, Revision
1422+from revtracker import views
1423+from revtracker.models import Revision
1424+from revtracker.tests import TestCase
1425
1426
1427 class TestIndexData(TestCase):
1428@@ -16,51 +13,48 @@
1429 self.assertEqual(0, len(views.index_data()['projects']))
1430
1431 def test_one_project(self):
1432- self.factory.make_one(Project)
1433+ self.factory.make_project()
1434 self.assertEqual(1, len(views.index_data()['projects']))
1435
1436 def test_two_projects(self):
1437- self.factory.make(2, Project)
1438+ for _ in range(2):
1439+ self.factory.make_project()
1440 self.assertEqual(2, len(views.index_data()['projects']))
1441
1442 def test_includes_basic_info(self):
1443 name = "aproject"
1444- self.factory.make_one(Project, name=name)
1445+ self.factory.make_project(name=name)
1446 self.assertEqual(name, views.index_data()['projects'][0]['name'])
1447
1448 def test_includes_undeployed_count(self):
1449- project = self.factory.make_one(Project)
1450- self.factory.make_one(Revision, project=project)
1451+ project = self.factory.make_project()
1452+ self.factory.make_revision(project=project)
1453 self.assertEqual(1,
1454 views.index_data()['projects'][0]['undeployed_count'])
1455
1456 def test_includes_deployable_count(self):
1457- project = self.factory.make_one(Project)
1458- self.factory.make_one(Revision, project=project,
1459- status=Revision.STATUS_OK)
1460+ project = self.factory.make_project()
1461+ self.factory.make_revision(project=project, status=Revision.STATUS_OK)
1462 self.assertEqual(1,
1463 views.index_data()['projects'][0]['deployable_count'])
1464
1465 def test_includes_needing_qa_count(self):
1466- project = self.factory.make_one(Project)
1467- self.factory.make_one(Revision, project=project,
1468+ project = self.factory.make_project()
1469+ self.factory.make_revision(project=project,
1470 status=Revision.STATUS_UNKNOWN)
1471 self.assertEqual(1,
1472 views.index_data()['projects'][0]['needing_qa_count'])
1473
1474 def test_query_count(self):
1475- project = self.factory.make_one(Project)
1476- self.factory.make_one(Revision, project=project,
1477- status=Revision.STATUS_OK)
1478+ project = self.factory.make_project()
1479+ self.factory.make_revision(project=project, status=Revision.STATUS_OK)
1480 self.assertNumQueries(4, views.index_data)
1481
1482 def test_query_count_multiple(self):
1483- project = self.factory.make_one(Project)
1484- self.factory.make_one(Revision, project=project,
1485- status=Revision.STATUS_OK)
1486- project = self.factory.make_one(Project)
1487- self.factory.make_one(Revision, project=project,
1488- status=Revision.STATUS_OK)
1489+ project = self.factory.make_project()
1490+ self.factory.make_revision(project=project, status=Revision.STATUS_OK)
1491+ project = self.factory.make_project()
1492+ self.factory.make_revision(project=project, status=Revision.STATUS_OK)
1493 # FIXME: O(projects)
1494 self.assertNumQueries(7, views.index_data)
1495
1496@@ -68,96 +62,90 @@
1497 class GetProjectInfoTests(TestCase):
1498
1499 def test_includes_project_info(self):
1500- project = self.factory.make_one(Project)
1501+ project = self.factory.make_project()
1502 self.assertIn('project', views.get_project_info(project))
1503
1504 def test_includes_basic_info(self):
1505 name = "aproject"
1506- project = self.factory.make_one(Project, name=name)
1507+ project = self.factory.make_project(name=name)
1508 self.assertEqual(name,
1509 views.get_project_info(project)['project']['name'])
1510
1511 def test_includes_deployed_revision(self):
1512- project = self.factory.make_one(Project)
1513- revision = self.factory.make_one(Revision, project=project)
1514+ project = self.factory.make_project()
1515+ revision = self.factory.make_revision(project=project)
1516 project.deployed_revision = revision
1517 project.save()
1518 self.assertEqual(revision.revno,
1519 views.get_project_info(project)['project']['deployed_revision']['revno'])
1520
1521 def test_includes_maximum_deployable_revision(self):
1522- project = self.factory.make_one(Project)
1523- revision = self.factory.make_one(Revision, project=project,
1524+ project = self.factory.make_project()
1525+ revision = self.factory.make_revision(project=project,
1526 status=Revision.STATUS_OK)
1527 self.assertEqual(revision.revno,
1528 views.get_project_info(project)['project']['maximum_deployable_revision']['revno'])
1529
1530 def test_includes_revision_blocking_deployment_if_exists(self):
1531- project = self.factory.make_one(Project)
1532- revision = self.factory.make_one(Revision, project=project,
1533+ project = self.factory.make_project()
1534+ revision = self.factory.make_revision(project=project,
1535 status=Revision.STATUS_BAD)
1536 self.assertEqual(revision.revno,
1537 views.get_project_info(project)['project']['revision_blocking_deployment']['revno'])
1538
1539 def test_excludes_revision_blocking_deployment_if_not_exists(self):
1540- project = self.factory.make_one(Project)
1541+ project = self.factory.make_project()
1542 self.assertNotIn('revision_blocking_deployment',
1543 views.get_project_info(project)['project'])
1544
1545 def test_includes_undeployed_count(self):
1546- project = self.factory.make_one(Project)
1547- revision = self.factory.make_one(Revision, project=project)
1548+ project = self.factory.make_project()
1549+ self.factory.make_revision(project=project)
1550 self.assertEqual(1,
1551 views.get_project_info(project)['project']['undeployed_count'])
1552
1553 def test_includes_undeployed_revisions(self):
1554- project = self.factory.make_one(Project)
1555- revision = self.factory.make_one(Revision, project=project)
1556+ project = self.factory.make_project()
1557+ self.factory.make_revision(project=project)
1558 self.assertEqual(1,
1559 len(views.get_project_info(project)['undeployed_revisions']))
1560
1561 def test_revision_includes_basic_info(self):
1562- project = self.factory.make_one(Project)
1563- revision = self.factory.make_one(Revision, project=project)
1564+ project = self.factory.make_project()
1565+ revision = self.factory.make_revision(project=project)
1566 rev_info = views.get_project_info(project)['undeployed_revisions'][0]
1567 self.assertEqual(revision.pk, rev_info['pk'])
1568
1569 def test_includes_child_revisions_when_none(self):
1570- project = self.factory.make_one(Project)
1571- revision = self.factory.make_one(Revision, project=project)
1572+ project = self.factory.make_project()
1573+ self.factory.make_revision(project=project)
1574 rev_info = views.get_project_info(project)['undeployed_revisions'][0]
1575 self.assertEqual([], rev_info['child_revisions'])
1576
1577 def test_includes_child_revisions_when_one(self):
1578- project = self.factory.make_one(Project)
1579- revision = self.factory.make_one(Revision, project=project)
1580- child = self.factory.make_one(Revision, parent=revision,
1581- branch="lp:foo")
1582+ project = self.factory.make_project()
1583+ revision = self.factory.make_revision(project=project)
1584+ self.factory.make_revision(parent=revision, branch="lp:foo")
1585 rev_info = views.get_project_info(project)['undeployed_revisions'][0]
1586 self.assertEqual(1, len(rev_info['child_revisions']))
1587
1588 def test_includes_comments_for_child(self):
1589- project = self.factory.make_one(Project)
1590- revision = self.factory.make_one(Revision, project=project)
1591- child = self.factory.make_one(Revision, parent=revision,
1592- branch="lp:foo")
1593- self.factory.make_one(Comment, object_pk=child.pk,
1594- content_type=ContentType.objects.get_for_model(child))
1595+ project = self.factory.make_project()
1596+ revision = self.factory.make_revision(project=project)
1597+ child = self.factory.make_revision(parent=revision, branch="lp:foo")
1598+ self.factory.make_comment_for_model(child)
1599 rev_info = views.get_project_info(project)['undeployed_revisions'][0]
1600 self.assertEqual(1, len(rev_info['child_revisions'][0]['comments']))
1601
1602 def test_query_count(self):
1603- project = self.factory.make_one(Project)
1604- revision = self.factory.make_one(Revision, project=project,
1605- status=Revision.STATUS_OK)
1606+ project = self.factory.make_project()
1607+ self.factory.make_revision(project=project, status=Revision.STATUS_OK)
1608 self.assertNumQueries(4, views.get_project_info, project)
1609
1610 def test_query_count_two_revisions(self):
1611- project = self.factory.make_one(Project)
1612- revision = self.factory.make_one(Revision, project=project,
1613- status=Revision.STATUS_OK)
1614- revision = self.factory.make_one(Revision, project=project,
1615- status=Revision.STATUS_OK)
1616+ project = self.factory.make_project()
1617+ self.factory.make_revision(project=project, status=Revision.STATUS_OK)
1618+ self.factory.make_revision(project=project, status=Revision.STATUS_OK)
1619 self.assertNumQueries(4, views.get_project_info, project)
1620
1621 def assertNumQueries(self, *args, **kwargs):
1622@@ -175,46 +163,46 @@
1623 class GetPersonInfoTests(TestCase):
1624
1625 def test_includes_revisions_needing_qa(self):
1626- person = self.factory.make_one(User)
1627+ person = self.factory.make_user()
1628 self.assertIn('revisions_needing_qa', views.get_person_info(person))
1629
1630 def test_no_revisions(self):
1631- person = self.factory.make_one(User)
1632+ person = self.factory.make_user()
1633 self.assertEqual(0,
1634 len(views.get_person_info(person)['revisions_needing_qa']))
1635
1636 def test_no_revisions_for_person(self):
1637- person = self.factory.make_one(User)
1638- other_person = self.factory.make_one(User)
1639- revision = self.factory.make_one(Revision, status=Revision.STATUS_UNKNOWN,
1640+ person = self.factory.make_user()
1641+ other_person = self.factory.make_user()
1642+ self.factory.make_revision(status=Revision.STATUS_UNKNOWN,
1643 committer=other_person)
1644 self.assertEqual(0,
1645 len(views.get_person_info(person)['revisions_needing_qa']))
1646
1647 def test_includes_unknown(self):
1648- person = self.factory.make_one(User)
1649- revison = self.factory.make_one(Revision, status=Revision.STATUS_UNKNOWN,
1650+ person = self.factory.make_user()
1651+ self.factory.make_revision(status=Revision.STATUS_UNKNOWN,
1652 committer=person)
1653 self.assertEqual(1,
1654 len(views.get_person_info(person)['revisions_needing_qa']))
1655
1656 def test_includes_bad(self):
1657- person = self.factory.make_one(User)
1658- revison = self.factory.make_one(Revision, status=Revision.STATUS_BAD,
1659+ person = self.factory.make_user()
1660+ self.factory.make_revision(status=Revision.STATUS_BAD,
1661 committer=person)
1662 self.assertEqual(1,
1663 len(views.get_person_info(person)['revisions_needing_qa']))
1664
1665 def test_excludes_ok(self):
1666- person = self.factory.make_one(User)
1667- revison = self.factory.make_one(Revision, status=Revision.STATUS_OK,
1668+ person = self.factory.make_user()
1669+ self.factory.make_revision(status=Revision.STATUS_OK,
1670 committer=person)
1671 self.assertEqual(0,
1672 len(views.get_person_info(person)['revisions_needing_qa']))
1673
1674 def test_excludes_deployed(self):
1675- person = self.factory.make_one(User)
1676- revision = self.factory.make_one(Revision,
1677+ person = self.factory.make_user()
1678+ revision = self.factory.make_revision(
1679 status=Revision.STATUS_UNKNOWN, committer=person)
1680 revision.project.deployed_revision = revision
1681 revision.project.save()
1682@@ -222,10 +210,10 @@
1683 len(views.get_person_info(person)['revisions_needing_qa']))
1684
1685 def test_excludes_before_deployed(self):
1686- person = self.factory.make_one(User)
1687- prev_revision = self.factory.make_one(Revision,
1688+ person = self.factory.make_user()
1689+ prev_revision = self.factory.make_revision(
1690 status=Revision.STATUS_UNKNOWN, committer=person, revno=1)
1691- revision = self.factory.make_one(Revision,
1692+ revision = self.factory.make_revision(
1693 status=Revision.STATUS_UNKNOWN, committer=person, revno=2,
1694 project=prev_revision.project)
1695 revision.project.deployed_revision = revision
1696@@ -234,21 +222,21 @@
1697 len(views.get_person_info(person)['revisions_needing_qa']))
1698
1699 def test_includes_undeployed(self):
1700- person = self.factory.make_one(User)
1701- deployed_revision = self.factory.make_one(Revision,
1702+ person = self.factory.make_user()
1703+ deployed_revision = self.factory.make_revision(
1704 status=Revision.STATUS_UNKNOWN, committer=person, revno=1)
1705 deployed_revision.project.deployed_revision = deployed_revision
1706 deployed_revision.project.save()
1707- revision = self.factory.make_one(Revision,
1708+ self.factory.make_revision(
1709 status=Revision.STATUS_UNKNOWN, committer=person, revno=2)
1710 self.assertEqual(1,
1711 len(views.get_person_info(person)['revisions_needing_qa']))
1712
1713 def test_excludes_deployed_parent(self):
1714- person = self.factory.make_one(User)
1715- revision = self.factory.make_one(Revision,
1716+ person = self.factory.make_user()
1717+ revision = self.factory.make_revision(
1718 status=Revision.STATUS_OK, committer=person, revno=1)
1719- child = self.factory.make_one(Revision,
1720+ self.factory.make_revision(
1721 status=Revision.STATUS_UNKNOWN, committer=person, revno=20,
1722 parent=revision, project=revision.project)
1723 revision.project.deployed_revision = revision
1724@@ -257,10 +245,10 @@
1725 len(views.get_person_info(person)['revisions_needing_qa']))
1726
1727 def get_rev_info(self, **kwargs):
1728- person = self.factory.make_one(User)
1729+ person = self.factory.make_user()
1730 kwargs.setdefault('status', Revision.STATUS_BAD)
1731 kwargs.setdefault('committer', person)
1732- revision = self.factory.make_one(Revision, **kwargs)
1733+ self.factory.make_revision(**kwargs)
1734 return views.get_person_info(person)['revisions_needing_qa'][0]
1735
1736 def test_revision_has_basic_info(self):
1737@@ -274,7 +262,7 @@
1738 rev_info['summary_status_display'])
1739
1740 def test_revision_has_project(self):
1741- project = self.factory.make_one(Project)
1742+ project = self.factory.make_project()
1743 rev_info = self.get_rev_info(project=project)
1744 self.assertEqual(project.name, rev_info['project']['name'])
1745
1746@@ -284,15 +272,16 @@
1747 self.assertIn('committer', rev_info)
1748
1749 def test_query_count(self):
1750- person = self.factory.make_one(User)
1751- self.factory.make_one(Revision, status=Revision.STATUS_UNKNOWN,
1752+ person = self.factory.make_user()
1753+ self.factory.make_revision(status=Revision.STATUS_UNKNOWN,
1754 committer=person)
1755- from_db = User.objects.get(pk=person.pk)
1756+ User.objects.get(pk=person.pk)
1757 self.assertNumQueries(5, views.get_person_info, person)
1758
1759 def test_query_count_multiple_revisions(self):
1760- person = self.factory.make_one(User)
1761- self.factory.make(2, Revision, status=Revision.STATUS_UNKNOWN,
1762- committer=person)
1763- from_db = User.objects.get(pk=person.pk)
1764+ person = self.factory.make_user()
1765+ for _ in range(2):
1766+ self.factory.make_revision(
1767+ status=Revision.STATUS_UNKNOWN, committer=person)
1768+ User.objects.get(pk=person.pk)
1769 self.assertNumQueries(5, views.get_person_info, person)
1770
1771=== modified file 'revtracker/tests/test_views_logged_in.py'
1772--- revtracker/tests/test_views_logged_in.py 2018-01-30 01:04:37 +0000
1773+++ revtracker/tests/test_views_logged_in.py 2018-01-30 01:04:37 +0000
1774@@ -3,13 +3,10 @@
1775
1776 from django.core.urlresolvers import reverse
1777
1778-
1779-from ..models import Project, Revision
1780-
1781-from . import (
1782+from revtracker.models import Project, Revision
1783+from revtracker.tests import (
1784 IndexProject,
1785 IndexProjectsList,
1786- RevTrackerTestCase,
1787 ProjectName,
1788 ProjectRevision,
1789 ProjectUpdateDeployedRevisionForm,
1790@@ -17,13 +14,12 @@
1791 ProjectDeployedRevision,
1792 ProjectBlockingRevision,
1793 ProjectRevisionChangeStatusForm,
1794- ProjectRevisionSetRollbackForm
1795+ ProjectRevisionSetRollbackForm,
1796+ TestCase,
1797 )
1798
1799-from .test_api_helpers import User
1800-
1801-
1802-class IndexViewTests(RevTrackerTestCase):
1803+
1804+class IndexViewTests(TestCase):
1805
1806 urls = 'revtracker.urls'
1807
1808@@ -40,20 +36,20 @@
1809 text="No projects registered.")))
1810
1811 def test_one_project_has_one_project(self):
1812- project = self.factory.make_one(Project)
1813+ self.factory.make_project()
1814 response = self.client.get(reverse('index'))
1815 self.assertThat(response, soupmatchers.HTMLResponseHas(
1816 html_matches=soupmatchers.Within(IndexProjectsList(count=1), IndexProject(count=1))))
1817
1818 def test_project_includes_name(self):
1819- project = self.factory.make_one(Project)
1820+ project = self.factory.make_project()
1821 response = self.client.get(reverse('index'))
1822 self.assertThat(response, soupmatchers.HTMLResponseHas(
1823 html_matches=soupmatchers.Within(IndexProject(), ProjectName(text=project.name))))
1824
1825 def test_project_name_is_linked(self):
1826 name = "a-name"
1827- project = self.factory.make_one(Project, name=name)
1828+ project = self.factory.make_project(name=name)
1829 url = reverse('project_view', args=(project.name,))
1830 response = self.client.get(reverse('index'))
1831 self.assertThat(response, soupmatchers.HTMLResponseHas(
1832@@ -62,8 +58,8 @@
1833 ProjectName(text=name))))
1834
1835 def test_number_of_undeployed_revisions_is_included(self):
1836- project = self.factory.make_one(Project)
1837- revision = self.factory.make_one(Revision, project=project)
1838+ project = self.factory.make_project()
1839+ self.factory.make_revision(project=project)
1840 response = self.client.get(reverse('index'))
1841 self.assertThat(response, soupmatchers.HTMLResponseHas(
1842 html_matches=soupmatchers.Within(IndexProject(),
1843@@ -71,7 +67,7 @@
1844 text=re.compile("1 undeployed revisions")))))
1845
1846 def test_number_of_undeployed_revisions_is_included_when_zero(self):
1847- project = self.factory.make_one(Project)
1848+ self.factory.make_project()
1849 response = self.client.get(reverse('index'))
1850 self.assertThat(response, soupmatchers.HTMLResponseHas(
1851 html_matches=soupmatchers.Within(IndexProject(),
1852@@ -79,9 +75,8 @@
1853 text=re.compile("0 undeployed revisions")))))
1854
1855 def test_number_of_deployable_revisions_is_included(self):
1856- project = self.factory.make_one(Project)
1857- revision = self.factory.make_one(Revision, project=project,
1858- status=Revision.STATUS_OK)
1859+ project = self.factory.make_project()
1860+ self.factory.make_revision(project=project, status=Revision.STATUS_OK)
1861 response = self.client.get(reverse('index'))
1862 self.assertThat(response, soupmatchers.HTMLResponseHas(
1863 html_matches=soupmatchers.Within(IndexProject(),
1864@@ -89,7 +84,7 @@
1865 text=re.compile("1 deployable revision")))))
1866
1867 def test_number_of_deployable_revisions_is_included_when_zero(self):
1868- project = self.factory.make_one(Project)
1869+ self.factory.make_project()
1870 response = self.client.get(reverse('index'))
1871 self.assertThat(response, soupmatchers.HTMLResponseHas(
1872 html_matches=soupmatchers.Within(IndexProject(),
1873@@ -97,8 +92,8 @@
1874 text=re.compile("0 deployable revisions")))))
1875
1876 def test_number_of_revisions_needing_qa_is_included(self):
1877- project = self.factory.make_one(Project)
1878- revision = self.factory.make_one(Revision, project=project,
1879+ project = self.factory.make_project()
1880+ self.factory.make_revision(project=project,
1881 status=Revision.STATUS_UNKNOWN)
1882 response = self.client.get(reverse('index'))
1883 self.assertThat(response, soupmatchers.HTMLResponseHas(
1884@@ -107,7 +102,7 @@
1885 text=re.compile("1 revisions need QA")))))
1886
1887 def test_number_of_revisions_needing_qa_is_included_when_zero(self):
1888- project = self.factory.make_one(Project)
1889+ self.factory.make_project()
1890 response = self.client.get(reverse('index'))
1891 self.assertThat(response, soupmatchers.HTMLResponseHas(
1892 html_matches=soupmatchers.Within(IndexProject(),
1893@@ -115,7 +110,7 @@
1894 text=re.compile("0 revisions need QA")))))
1895
1896
1897-class ProjectViewTests(RevTrackerTestCase):
1898+class ProjectViewTests(TestCase):
1899
1900 urls = 'revtracker.urls'
1901
1902@@ -129,21 +124,21 @@
1903
1904 def test_project_view_shows_project_name(self):
1905 name = "a-name"
1906- project = self.factory.make_one(Project, name=name)
1907+ project = self.factory.make_project(name=name)
1908 response = self.client.get(reverse('project_view', args=(project.name,)))
1909 self.assertThat(response, soupmatchers.HTMLResponseHas(
1910 html_matches=soupmatchers.Tag('project name', 'h1', text=name)))
1911
1912 def test_project_view_shows_deployed_revision_unknown(self):
1913- project = self.factory.make_one(Project)
1914+ project = self.factory.make_project()
1915 response = self.client.get(reverse('project_view', args=(project.name,)))
1916 self.assertThat(response, soupmatchers.HTMLResponseHas(
1917 html_matches=ProjectDeployedRevision(text="Currently deployed: unknown")))
1918
1919 def test_project_view_shows_deployed_revision_known(self):
1920- project = self.factory.make_one(Project)
1921+ project = self.factory.make_project()
1922 revno = 100
1923- revision = self.factory.make_one(Revision, revno=revno, project=project)
1924+ revision = self.factory.make_revision(revno=revno, project=project)
1925 project.deployed_revision = revision
1926 project.save()
1927 response = self.client.get(reverse('project_view', args=(project.name,)))
1928@@ -151,73 +146,73 @@
1929 html_matches=ProjectDeployedRevision(text="Currently deployed: %s" % revision.description)))
1930
1931 def test_project_view_all_revisions_deployed(self):
1932- project = self.factory.make_one(Project)
1933+ project = self.factory.make_project()
1934 response = self.client.get(reverse('project_view', args=(project.name,)))
1935 self.assertThat(response, soupmatchers.HTMLResponseHas(
1936 html_matches=ProjectDeployableRevision(text="All revisions are deployed",
1937 attrs={'class': "global_info status_good"})))
1938
1939 def test_project_view_no_deployable_revisions(self):
1940- project = self.factory.make_one(Project)
1941- self.factory.make_one(Revision, project=project, status=Revision.STATUS_BAD)
1942+ project = self.factory.make_project()
1943+ self.factory.make_revision(project=project, status=Revision.STATUS_BAD)
1944 response = self.client.get(reverse('project_view', args=(project.name,)))
1945 self.assertThat(response, soupmatchers.HTMLResponseHas(
1946 html_matches=ProjectDeployableRevision(text="No revisions are currently ready to be deployed")))
1947
1948 def test_project_view_deployable_revisions(self):
1949- project = self.factory.make_one(Project)
1950+ project = self.factory.make_project()
1951 revno = 100
1952- revision = self.factory.make_one(Revision, project=project,
1953+ self.factory.make_revision(project=project,
1954 revno=revno, status=Revision.STATUS_OK)
1955 response = self.client.get(reverse('project_view', args=(project.name,)))
1956 self.assertThat(response, soupmatchers.HTMLResponseHas(
1957 html_matches=ProjectDeployableRevision(text="Revision %d is ready to be deployed" % revno)))
1958
1959 def test_shows_no_blocking_revision(self):
1960- project = self.factory.make_one(Project)
1961+ project = self.factory.make_project()
1962 response = self.client.get(reverse('project_view', args=(project.name,)))
1963 self.assertThat(response, soupmatchers.HTMLResponseHas(
1964 html_matches=ProjectBlockingRevision(count=0)))
1965
1966 def test_shows_no_blocking_revision_if_there_is_one(self):
1967- project = self.factory.make_one(Project)
1968+ project = self.factory.make_project()
1969 revno = 100
1970- revision = self.factory.make_one(Revision, project=project,
1971+ self.factory.make_revision(project=project,
1972 revno=revno, status=Revision.STATUS_BAD)
1973 response = self.client.get(reverse('project_view', args=(project.name,)))
1974 self.assertThat(response, soupmatchers.HTMLResponseHas(
1975 html_matches=ProjectBlockingRevision(text="Revision %d is blocking deployment" % revno)))
1976
1977 def test_project_one_undeployed_revision(self):
1978- project = self.factory.make_one(Project)
1979- revision = self.factory.make_one(Revision, project=project)
1980+ project = self.factory.make_project()
1981+ revision = self.factory.make_revision(project=project)
1982 response = self.client.get(reverse('project_view', args=(project.name,)))
1983 self.assertThat(response, soupmatchers.HTMLResponseHas(html_matches=ProjectRevision(revision)))
1984
1985 def test_includes_link(self):
1986- project = self.factory.make_one(Project)
1987+ project = self.factory.make_project()
1988 revno = 100
1989 link = 'http://example.com/alink'
1990- revision = self.factory.make_one(Revision, project=project, link=link, revno=revno)
1991+ revision = self.factory.make_revision(project=project, link=link, revno=revno)
1992 response = self.client.get(reverse('project_view', args=(project.name,)))
1993 self.assertThat(response, soupmatchers.HTMLResponseHas(
1994 html_matches=soupmatchers.Tag('revision link', 'a', attrs={'href': revision.link},
1995 text="Revision %d" % revno).within(ProjectRevision(revision))))
1996
1997 def test_shows_commit_message(self):
1998- project = self.factory.make_one(Project)
1999- commit_message = self.factory.getUniqueUnicode()
2000- revision = self.factory.make_one(Revision, project=project, commit_message=commit_message)
2001+ project = self.factory.make_project()
2002+ commit_message = self.factory.get_unique_string()
2003+ revision = self.factory.make_revision(project=project, commit_message=commit_message)
2004 response = self.client.get(reverse('project_view', args=(project.name,)))
2005 self.assertThat(response, soupmatchers.HTMLResponseHas(
2006 html_matches=soupmatchers.Tag('commit message', 'div', attrs={'class': 'commit_message fifteen columns alpha'},
2007 text=commit_message).within(ProjectRevision(revision))))
2008
2009 def test_shows_rollback(self):
2010- project = self.factory.make_one(Project)
2011+ project = self.factory.make_project()
2012 rollback_revno = 11
2013- revision = self.factory.make_one(Revision, project=project, revno=rollback_revno-1)
2014- revision.rolled_back_by = self.factory.make_one(Revision, project=project, revno=rollback_revno)
2015+ revision = self.factory.make_revision(project=project, revno=rollback_revno-1)
2016+ revision.rolled_back_by = self.factory.make_revision(project=project, revno=rollback_revno)
2017 revision.save()
2018 response = self.client.get(reverse('project_view', args=(project.name,)))
2019 self.assertThat(response, soupmatchers.HTMLResponseHas(
2020@@ -226,15 +221,15 @@
2021
2022 def test_shows_rollback_candidates(self):
2023 """<option> for rollback candidates contains revision's title."""
2024- project = self.factory.make_one(Project)
2025+ project = self.factory.make_project()
2026 rollback_revno = 11
2027 # A bad revision, so that the list of candidates is rendered
2028- revision = self.factory.make_one(
2029- Revision, project=project, revno=rollback_revno-1,
2030+ revision = self.factory.make_revision(
2031+ project=project, revno=rollback_revno-1,
2032 status=Revision.STATUS_BAD)
2033 # This one should appear in the list
2034- revision.rolled_back_by = self.factory.make_one(
2035- Revision, project=project, revno=rollback_revno)
2036+ revision.rolled_back_by = self.factory.make_revision(
2037+ project=project, revno=rollback_revno)
2038 revision.save()
2039 response = self.client.get(
2040 reverse('project_view', args=(project.name,)))
2041@@ -246,11 +241,11 @@
2042 ProjectRevision(revision))))
2043
2044 def test_shows_committer(self):
2045- project = self.factory.make_one(Project)
2046+ project = self.factory.make_project()
2047 name = 'bob'
2048 other_name = 'jane'
2049- committer = self.factory.make_one(User, username=name)
2050- revision = self.factory.make_one(Revision, project=project, committer=committer, assignee=other_name)
2051+ committer = self.factory.make_user(username=name)
2052+ revision = self.factory.make_revision(project=project, committer=committer, assignee=other_name)
2053 response = self.client.get(reverse('project_view', args=(project.name,)))
2054 self.assertThat(response, soupmatchers.HTMLResponseHas(
2055 html_matches=soupmatchers.Tag('assignee link', 'a', attrs={'href': reverse('person_view', args=(name,))},
2056@@ -258,8 +253,8 @@
2057 ProjectRevision(revision))))
2058
2059 def test_shows_nothing_if_assignee_and_committer_missing(self):
2060- project = self.factory.make_one(Project)
2061- revision = self.factory.make_one(Revision, project=project, assignee=None, committer=None)
2062+ project = self.factory.make_project()
2063+ revision = self.factory.make_revision(project=project, assignee=None, committer=None)
2064 response = self.client.get(reverse('project_view', args=(project.name,)))
2065 self.assertThat(response, soupmatchers.HTMLResponseHas(
2066 html_matches=soupmatchers.Tag('assignee', 'div', attrs={'class': 'assignee main six columns alpha'},
2067@@ -267,9 +262,9 @@
2068 ProjectRevision(revision))))
2069
2070 def test_shows_assignee_if_committer_is_none(self):
2071- project = self.factory.make_one(Project)
2072- name = self.factory.getUniqueUnicode()
2073- revision = self.factory.make_one(Revision, project=project, assignee=name, committer=None)
2074+ project = self.factory.make_project()
2075+ name = self.factory.get_unique_string()
2076+ revision = self.factory.make_revision(project=project, assignee=name, committer=None)
2077 response = self.client.get(reverse('project_view', args=(project.name,)))
2078 self.assertThat(response, soupmatchers.HTMLResponseHas(
2079 html_matches=soupmatchers.Tag('assignee link', 'a', attrs={'href': revision.assignee_link},
2080@@ -277,30 +272,30 @@
2081 ProjectRevision(revision))))
2082
2083 def test_shows_revision_status_edit_form(self):
2084- project = self.factory.make_one(Project)
2085+ project = self.factory.make_project()
2086 revno = 100
2087- revision = self.factory.make_one(Revision, project=project, revno=revno)
2088+ revision = self.factory.make_revision(project=project, revno=revno)
2089 response = self.client.get(reverse('project_view', args=(project.name,)))
2090 self.assertThat(response, soupmatchers.HTMLResponseHas(
2091 html_matches=ProjectRevisionChangeStatusForm(revision).within(ProjectRevision(revision))))
2092
2093 def test_shows_rollback_form_for_bad_revision(self):
2094- project = self.factory.make_one(Project)
2095+ project = self.factory.make_project()
2096 revno = 100
2097- revision = self.factory.make_one(Revision, project=project, revno=revno,
2098+ revision = self.factory.make_revision(project=project, revno=revno,
2099 status=Revision.STATUS_BAD)
2100 response = self.client.get(reverse('project_view', args=(project.name,)))
2101 self.assertThat(response, soupmatchers.HTMLResponseHas(
2102 html_matches=ProjectRevisionSetRollbackForm(revision).within(ProjectRevision(revision))))
2103
2104 def test_project_shows_update_deployed_revision_form(self):
2105- project = self.factory.make_one(Project)
2106+ project = self.factory.make_project()
2107 response = self.client.get(reverse('project_view', args=(project.name,)))
2108 self.assertThat(response, soupmatchers.HTMLResponseHas(
2109 html_matches=ProjectUpdateDeployedRevisionForm(project)))
2110
2111
2112-class ProjectUpdateRevisionTests(RevTrackerTestCase):
2113+class ProjectUpdateRevisionTests(TestCase):
2114
2115 urls = 'revtracker.urls'
2116
2117@@ -314,7 +309,7 @@
2118
2119 def DISABLED_test_errors_for_invalid_revno(self):
2120 # FIXME: needs porting to pybars style
2121- project = self.factory.make_one(Project)
2122+ project = self.factory.make_project()
2123 response = self.client.post(reverse('project_view', args=(project.name,)),
2124 data={"revno": "a"})
2125 self.assertEqual(200, response.status_code)
2126@@ -322,7 +317,7 @@
2127
2128 def DISABLED_test_errors_for_non_existant_revision(self):
2129 # FIXME: needs porting to pybars style
2130- project = self.factory.make_one(Project)
2131+ project = self.factory.make_project()
2132 response = self.client.post(reverse('project_view', args=(project.name,)),
2133 data={"revno": 499})
2134 self.assertEqual(200, response.status_code)
2135@@ -330,9 +325,9 @@
2136
2137 def DISABLED_test_updates_deployed_revision(self):
2138 # FIXME: needs porting to pybars style
2139- project = self.factory.make_one(Project)
2140+ project = self.factory.make_project()
2141 revno = 10
2142- revision = self.factory.make_one(Revision, project=project, revno=revno)
2143+ revision = self.factory.make_revision(project=project, revno=revno)
2144 response = self.client.post(reverse('project_view', args=(project.name,)),
2145 data={"revno": revno})
2146 self.assertRedirects(response, reverse('project_view', args=(project.name,)))
2147@@ -340,7 +335,7 @@
2148 self.assertEqual(revision, project.deployed_revision)
2149
2150
2151-class ProjectChangeRevisionStatusTests(RevTrackerTestCase):
2152+class ProjectChangeRevisionStatusTests(TestCase):
2153
2154 urls = 'revtracker.urls'
2155
2156@@ -353,33 +348,33 @@
2157 self.assertEqual(404, response.status_code)
2158
2159 def test_404_on_non_existant_revision(self):
2160- project = self.factory.make_one(Project)
2161+ project = self.factory.make_project()
2162 response = self.client.post(reverse('project_change_revision_status', args=(project.name, '44')))
2163 self.assertEqual(404, response.status_code)
2164
2165 def test_302_on_get(self):
2166- project = self.factory.make_one(Project)
2167- revision = self.factory.make_one(Revision, project=project)
2168+ project = self.factory.make_project()
2169+ revision = self.factory.make_revision(project=project)
2170 response = self.client.get(reverse('project_change_revision_status', args=(project.name, revision.pk)))
2171 self.assertRedirects(response, reverse('project_view', args=(project.name,)))
2172
2173 def test_updates_status(self):
2174- project = self.factory.make_one(Project)
2175- revision = self.factory.make_one(Revision, project=project, status=Revision.STATUS_UNKNOWN)
2176- response = self.client.post(reverse('project_change_revision_status', args=(project.name, revision.pk)),
2177+ project = self.factory.make_project()
2178+ revision = self.factory.make_revision(project=project, status=Revision.STATUS_UNKNOWN)
2179+ self.client.post(reverse('project_change_revision_status', args=(project.name, revision.pk)),
2180 data=dict(status=Revision.STATUS_OK))
2181 revision = Revision.objects.get(pk=revision.pk)
2182 self.assertEqual(Revision.STATUS_OK, revision.status)
2183
2184 def test_invalid_submission(self):
2185- project = self.factory.make_one(Project)
2186- revision = self.factory.make_one(Revision, project=project)
2187+ project = self.factory.make_project()
2188+ revision = self.factory.make_revision(project=project)
2189 response = self.client.post(reverse('project_change_revision_status', args=(project.name, revision.pk)),
2190 data=dict(status="nonsense"))
2191 self.assertEqual(400, response.status_code)
2192
2193
2194-class PersonViewTests(RevTrackerTestCase):
2195+class PersonViewTests(TestCase):
2196
2197 urls = 'revtracker.urls'
2198
2199@@ -393,7 +388,7 @@
2200
2201 def test_person_view_shows_person_name(self):
2202 name = "a-name"
2203- project = self.factory.make_one(User, username=name)
2204+ self.factory.make_user(username=name)
2205 response = self.client.get(reverse('person_view', args=(name,)))
2206 self.assertThat(response, soupmatchers.HTMLResponseHas(
2207 html_matches=soupmatchers.Tag('person name', 'h1', text=name)))
2208
2209=== modified file 'setup.py'
2210--- setup.py 2018-01-30 01:04:37 +0000
2211+++ setup.py 2018-01-30 01:04:37 +0000
2212@@ -8,7 +8,6 @@
2213 license="AGPL3",
2214 install_requires=[
2215 'Django==1.5.1',
2216- 'django_factory>=0.10',
2217 'soupmatchers==0.2',
2218 'testtools',
2219 'django_openid_auth',

Subscribers

People subscribed via source and target branches