Merge lp:~cjwatson/isitdeployable/drop-django-factory into lp:isitdeployable
- drop-django-factory
- Merge into trunk
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 |
Related bugs: |
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:/
The diff is big, but it's mostly just mechanical conversion of self.factory.
To post a comment you must log in.
Revision history for this message
Otto Co-Pilot (otto-copilot) wrote : | # |
Running landing tests failed
https:/
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', |
LGTM