Skip to content

Commit 585a5ba

Browse files
authored
Merge pull request #22 from Xpirix/fix_unit_tests
Fix unit tests
2 parents 2da8965 + d3572ad commit 585a5ba

25 files changed

+398
-335
lines changed

django_project/base/tests/model_factories.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,22 @@ class ProjectF(factory.django.DjangoModelFactory):
1111
class Meta:
1212
model = Project
1313

14-
name = factory.Sequence(lambda n: 'Test Project %s' % n)
14+
name = 'qgis'
1515
description = u'This is only for testing'
1616
owner = factory.SubFactory(UserF)
1717
project_representative = factory.SubFactory(UserF)
1818
approved = True
1919
private = False
2020
gitter_room = u'test/test'
2121

22+
@classmethod
23+
def create(cls, **kwargs):
24+
name = kwargs.get('name', 'qgis')
25+
existing_project = Project.objects.filter(name=name).first()
26+
if existing_project:
27+
return existing_project
28+
return super().create(**kwargs)
29+
2230

2331
class OrganisationF(factory.django.DjangoModelFactory):
2432
"""

django_project/certification/api_views/external_reviewer.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class UpdateExternalReviewerText(UserPassesTestMixin, APIView):
1414
def test_func(self, user):
1515
self.project = (
1616
Project.objects.get(
17-
slug=self.kwargs.get('project_slug', None))
17+
slug='qgis')
1818
)
1919

2020
return (
@@ -23,7 +23,7 @@ def test_func(self, user):
2323
user in self.project.certification_managers.all()
2424
)
2525

26-
def post(self, request, project_slug):
26+
def post(self, request):
2727
email_text = request.POST.get('text', '')
2828
if not email_text:
2929
raise Http404('Missing required data')
@@ -34,6 +34,5 @@ def post(self, request, project_slug):
3434
self.project.save()
3535

3636
return HttpResponseRedirect(
37-
reverse('certification-management-view',
38-
kwargs={'project_slug': project_slug})
37+
reverse('certification-management-view')
3938
)

django_project/certification/forms.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ class CertifyingOrganisationForm(forms.ModelForm):
5252
}),
5353
)
5454

55-
logo = forms.ImageField(widget=FileUploadInput)
55+
logo = forms.ImageField(widget=FileUploadInput, required=False)
5656

5757
# noinspection PyClassicStyleClass.
5858
class Meta:

django_project/certification/tests/api_views/test_checklist_api.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@ def setUp(self) -> None:
3333
approved=False,
3434
rejected=False
3535
)
36-
self.api_url = '/en/{0}/update-checklist-reviewer/{1}/'.format(
37-
self.project.slug,
36+
self.api_url = '/en/update-checklist-reviewer/{0}/'.format(
3837
self.certifying_organisation.slug
3938
)
4039
self.certifying_organisation.organisation_owners.set([self.user])
@@ -106,7 +105,6 @@ def test_submit_checklist_external_reviewer(self):
106105
f'checklist-{self.checklist.id}': 'yes'
107106
}
108107
url = reverse('update-checklist-reviewer', kwargs={
109-
'project_slug': self.project.slug,
110108
'slug': self.certifying_organisation.slug
111109
}) + '?s=' + s.session_key
112110
url = url.replace('/en-us/', '/en/')

django_project/certification/tests/api_views/test_external_reviewer.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,7 @@ def setUp(self) -> None:
2727
self.project = ProjectF.create(
2828
owner=self.user
2929
)
30-
self.api_url = reverse('update-external-reviewer-text', kwargs={
31-
'project_slug': self.project.slug
32-
}).replace('en-us', 'en')
30+
self.api_url = reverse('update-external-reviewer-text').replace('en-us', 'en')
3331

3432
@override_settings(VALID_DOMAIN=['testserver', ])
3533
def test_update_external_reviewer_text(self):
@@ -53,7 +51,7 @@ def test_update_external_reviewer_text(self):
5351
data
5452
)
5553
self.assertTrue(response.status_code, 302)
56-
project = Project.objects.get(id=self.project.id)
54+
project = Project.objects.get(name=self.project.name)
5755
self.assertEqual(
5856
project.external_reviewer_invitation,
5957
'test'

django_project/certification/tests/api_views/test_get_status.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ def setUp(self):
1818
self.status = StatusF.create(
1919
project=self.project
2020
)
21-
self.api_url = reverse('get-status-list', kwargs={
22-
'project_slug': self.project.slug
23-
}).replace(
21+
self.api_url = reverse('get-status-list').replace(
2422
'en-us', 'en'
2523
)
2624

django_project/certification/tests/api_views/test_invite_reviewer.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ def setUp(self):
4949
project=self.project
5050
)
5151
self.url = reverse('invite-external-reviewer', kwargs={
52-
'project_slug': self.project.slug,
5352
'slug': self.certifying_organisation.slug
5453
})
5554
self.url = self.url.replace('us-en', 'en')

django_project/certification/tests/api_views/test_update_status.py

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,21 @@
11
from django.core import mail
2-
from django.test import TestCase, override_settings, Client
2+
from django.test import override_settings, Client, TestCase
33
from django.urls import reverse
44

55
from core.model_factories import UserF
66

77
from certification.models.certifying_organisation import CertifyingOrganisation
8+
from base.tests.model_factories import ProjectF
89
from certification.tests.model_factories import (
910
StatusF,
1011
CertifyingOrganisationF,
11-
ProjectF, ExternalReviewerF
12+
ExternalReviewerF
1213
)
1314

1415

1516
class TestUpdateStatus(TestCase):
1617

1718
def setUp(self) -> None:
18-
self.approved_status = StatusF.create(name='Approved')
19-
self.rejected_status = StatusF.create(name='Rejected')
20-
self.pending_status = StatusF.create(name='Pending')
21-
2219
self.client = Client()
2320
self.client.post(
2421
'/set_language/', data={'language': 'en'})
@@ -43,6 +40,20 @@ def setUp(self) -> None:
4340
self.project = ProjectF.create(
4441
owner=self.project_owner
4542
)
43+
44+
self.approved_status = StatusF.create(
45+
name='Approved',
46+
project=self.project
47+
)
48+
self.rejected_status = StatusF.create(
49+
name='Rejected',
50+
project=self.project
51+
)
52+
self.pending_status = StatusF.create(
53+
name='Pending',
54+
project=self.project
55+
)
56+
4657
self.certifying_organisation = CertifyingOrganisationF.create(
4758
project=self.project,
4859
approved=False,
@@ -58,7 +69,6 @@ def setUp(self) -> None:
5869
self.manager.save()
5970

6071
self.api_url = reverse('certifyingorganisation-update-status', kwargs={
61-
'project_slug': self.project.slug,
6272
'slug': self.certifying_organisation.slug
6373
}).replace('en-us', 'en')
6474

@@ -102,7 +112,6 @@ def test_update_status_no_login(self):
102112
self.client.logout()
103113
response = self.client.post(
104114
reverse('certifyingorganisation-update-status', kwargs={
105-
'project_slug': self.project.slug,
106115
'slug': self.certifying_organisation.slug
107116
}), {
108117
'status': self.pending_status.id,
@@ -128,7 +137,6 @@ def test_update_status_pending(self):
128137
self.client.login(username='admin', password='password')
129138
response = self.client.post(
130139
reverse('certifyingorganisation-update-status', kwargs={
131-
'project_slug': self.project.slug,
132140
'slug': certifying_organisation.slug
133141
}).replace('en-us', 'en'), {
134142
'status': self.pending_status.id,

django_project/certification/tests/test_checklist.py

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,12 @@ def test_non_manager_activate_checklist(self):
6565
post_data = {
6666
'checklist_id': self.checklist.id
6767
}
68-
url = reverse('activate-checklist', kwargs={
69-
'project_slug': self.project.slug
70-
})
68+
url = reverse('activate-checklist')
7169

7270
response = self.client.post(url, post_data)
7371
self.assertEqual(
7472
response.status_code,
75-
403
73+
404
7674
)
7775

7876
@override_settings(VALID_DOMAIN=['testserver', ])
@@ -82,9 +80,7 @@ def test_manager_activate_checklist(self):
8280
}
8381
# As manager
8482
self.client.login(username='manager', password='password')
85-
url = reverse('activate-checklist', kwargs={
86-
'project_slug': self.project.slug
87-
})
83+
url = reverse('activate-checklist')
8884

8985
response = self.client.post(url, post_data)
9086
self.assertEqual(
@@ -101,9 +97,7 @@ def test_manager_archive_checklist(self):
10197
}
10298
# As manager
10399
self.client.login(username='manager', password='password')
104-
url = reverse('archive-checklist', kwargs={
105-
'project_slug': self.project.slug
106-
})
100+
url = reverse('archive-checklist')
107101

108102
response = self.client.post(url, post_data)
109103
self.assertEqual(
@@ -131,9 +125,7 @@ def test_manager_update_checklist_order(self):
131125
}
132126
# As manager
133127
self.client.login(username='manager', password='password')
134-
url = reverse('update-checklist-order', kwargs={
135-
'project_slug': self.project.slug
136-
})
128+
url = reverse('update-checklist-order')
137129

138130
response = self.client.post(url, post_data)
139131
self.assertEqual(
@@ -149,9 +141,7 @@ def test_manager_update_checklist_order(self):
149141
def test_create_checklist_view(self):
150142
self.client.login(username='super', password='password')
151143
response = self.client.get(
152-
reverse('certificate-checklist-create', kwargs={
153-
'project_slug': self.project.slug,
154-
}).replace('en-us', 'en'))
144+
reverse('certificate-checklist-create').replace('en-us', 'en'))
155145
self.assertEqual(response.status_code, 200)
156146
self.assertEqual(
157147
response.context_data['project'], self.project)
@@ -164,9 +154,7 @@ def test_error_create_checklist(self):
164154
'project': self.project.id,
165155
}
166156
response = self.client.post(
167-
reverse('certificate-checklist-create', kwargs={
168-
'project_slug': self.project.slug,
169-
}), post_data)
157+
reverse('certificate-checklist-create'), post_data)
170158
self.assertEqual(response.status_code, 403)
171159
checklist = Checklist.objects.filter(question='test2')
172160
self.assertFalse(checklist.exists())
@@ -180,9 +168,7 @@ def test_success_create_checklist(self):
180168
'target': ORGANIZATION_OWNER
181169
}
182170
response = self.client.post(
183-
reverse('certificate-checklist-create', kwargs={
184-
'project_slug': self.project.slug,
185-
}), post_data)
171+
reverse('certificate-checklist-create'), post_data)
186172
self.assertEqual(response.status_code, 302)
187173
checklist = Checklist.objects.filter(question='test2')
188174
self.assertTrue(checklist.exists())

django_project/certification/tests/test_forms.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ def setUp(self):
1818
'is_staff': True
1919
})
2020
self.project = ProjectF.create()
21-
self.status = StatusF.create(name='pending')
21+
self.status = StatusF.create(
22+
name='pending',
23+
project=self.project
24+
)
2225
self.certifying_organisation = CertifyingOrganisationF.create(
2326
project=self.project,
2427
approved=False,

0 commit comments

Comments
 (0)