Skip to content

Commit 87bda66

Browse files
committed
Converted several secr apps to use factories for tests. Commit ready for merge.
- Legacy-Id: 15568
1 parent 5c57cf1 commit 87bda66

8 files changed

Lines changed: 146 additions & 152 deletions

File tree

ietf/meeting/factories.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from django.core.files.base import ContentFile
66

7-
from ietf.meeting.models import Meeting, Session, Schedule, TimeSlot, SessionPresentation, FloorPlan
7+
from ietf.meeting.models import Meeting, Session, Schedule, TimeSlot, SessionPresentation, FloorPlan, Room
88
from ietf.group.factories import GroupFactory
99
from ietf.person.factories import PersonFactory
1010

@@ -100,12 +100,29 @@ class Meta:
100100
name = factory.Sequence(lambda n: 'schedule_%d'%n)
101101
owner = factory.SubFactory(PersonFactory)
102102

103+
class RoomFactory(factory.DjangoModelFactory):
104+
class Meta:
105+
model = Room
106+
107+
meeting = factory.SubFactory(MeetingFactory)
108+
name = factory.Faker('name')
109+
110+
103111
class TimeSlotFactory(factory.DjangoModelFactory):
104112
class Meta:
105113
model = TimeSlot
106114

107115
meeting = factory.SubFactory(MeetingFactory)
108116
type_id = 'session'
117+
118+
@factory.post_generation
119+
def location(obj, create, extracted, **kwargs): # pylint: disable=no-self-argument
120+
if create:
121+
if extracted:
122+
obj.location = extracted
123+
else:
124+
obj.location = RoomFactory(meeting=obj.meeting)
125+
obj.save()
109126

110127
@factory.lazy_attribute
111128
def time(self):
@@ -140,4 +157,3 @@ class Meta:
140157
), 'floorplan.jpg'
141158
)
142159
)
143-

ietf/secr/drafts/tests_views.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,14 @@
1111
import debug # pyflakes:ignore
1212

1313
from ietf.doc.expire import expire_draft
14-
from ietf.doc.factories import DocumentFactory
14+
from ietf.doc.factories import WgDraftFactory
1515
from ietf.doc.models import Document
1616
from ietf.meeting.factories import MeetingFactory
1717
from ietf.person.factories import PersonFactory
1818
from ietf.person.models import Person
1919
from ietf.submit.models import Preapproval
2020
from ietf.utils.mail import outbox
2121
from ietf.utils.test_utils import TestCase, login_testing_unauthorized
22-
from ietf.utils.test_data import make_test_data
2322
from ietf.secr.drafts.email import get_email_initial
2423

2524

@@ -48,14 +47,13 @@ def tearDown(self):
4847
settings.IDSUBMIT_MANUAL_STAGING_DIR = self.saved_idsubmit_manual_staging_dir
4948

5049
def test_abstract(self):
51-
draft = make_test_data()
50+
draft = WgDraftFactory()
5251
url = urlreverse('ietf.secr.drafts.views.abstract', kwargs={'id':draft.name})
5352
self.client.login(username="secretary", password="secretary+password")
5453
response = self.client.get(url)
5554
self.assertEqual(response.status_code, 200)
5655

5756
def test_approvals(self):
58-
make_test_data()
5957
Preapproval.objects.create(name='draft-dummy',
6058
by=Person.objects.get(name="(System)"))
6159
url = urlreverse('ietf.secr.drafts.views.approvals')
@@ -65,7 +63,7 @@ def test_approvals(self):
6563
self.assertTrue('draft-dummy' in response.content)
6664

6765
def test_edit(self):
68-
draft = make_test_data()
66+
draft = WgDraftFactory()
6967
url = urlreverse('ietf.secr.drafts.views.edit', kwargs={'id':draft.name})
7068
self.client.login(username="secretary", password="secretary+password")
7169
response = self.client.get(url)
@@ -83,20 +81,22 @@ def test_email(self):
8381
def test_get_email_initial(self):
8482
# Makes sure that a manual posting by the Secretariat of an I-D that is
8583
# in the RFC Editor Queue will result in notification of the RFC Editor
86-
draft = make_test_data()
84+
draft = WgDraftFactory()
8785
data = get_email_initial(draft,action='extend',input={'expiration_date': '2050-01-01'})
8886
self.assertTrue('Extension of Expiration Date' in data['subject'])
8987

9088
def test_makerfc(self):
91-
draft = make_test_data()
89+
draft = WgDraftFactory(intended_std_level_id='ps')
9290
url = urlreverse('ietf.secr.drafts.views.edit', kwargs={'id':draft.name})
9391
self.client.login(username="secretary", password="secretary+password")
9492
response = self.client.get(url)
9593
self.assertEqual(response.status_code, 200)
94+
# It's not clear what this is testing. Was there supposed to be a POST here?
9695
self.assertTrue(draft.intended_std_level)
9796

9897
def test_search(self):
99-
draft = make_test_data()
98+
WgDraftFactory() # Test exercises branch that requires >1 doc found
99+
draft = WgDraftFactory()
100100
url = urlreverse('ietf.secr.drafts.views.search')
101101
self.client.login(username="secretary", password="secretary+password")
102102
response = self.client.get(url)
@@ -108,14 +108,14 @@ def test_search(self):
108108
self.assertTrue(draft.name in response.content)
109109

110110
def test_view(self):
111-
draft = make_test_data()
111+
draft = WgDraftFactory()
112112
url = urlreverse('ietf.secr.drafts.views.view', kwargs={'id':draft.name})
113113
self.client.login(username="secretary", password="secretary+password")
114114
response = self.client.get(url)
115115
self.assertEqual(response.status_code, 200)
116116

117117
def test_author_delete(self):
118-
draft = make_test_data()
118+
draft = WgDraftFactory(authors=PersonFactory.create_batch(2))
119119
author = draft.documentauthor_set.first()
120120
id = author.id
121121
url = urlreverse('ietf.secr.drafts.views.author_delete', kwargs={'id':draft.name, 'oid':id})
@@ -128,7 +128,7 @@ def test_author_delete(self):
128128
self.assertFalse(draft.documentauthor_set.filter(id=id))
129129

130130
def test_resurrect(self):
131-
draft = make_test_data()
131+
draft = WgDraftFactory()
132132
path = os.path.join(self.repository_dir, draft.filename_with_rev())
133133
with open(path, 'w') as file:
134134
file.write('test')
@@ -164,7 +164,7 @@ def test_resurrect(self):
164164
self.assertEqual(recv['Subject'], subject)
165165

166166
def test_extend(self):
167-
draft = make_test_data()
167+
draft = WgDraftFactory()
168168
url = urlreverse('ietf.secr.drafts.views.extend', kwargs={'id':draft.name})
169169
email_url = urlreverse('ietf.secr.drafts.views.email', kwargs={'id':draft.name})
170170
confirm_url = urlreverse('ietf.secr.drafts.views.confirm', kwargs={'id':draft.name})
@@ -203,7 +203,7 @@ def test_extend(self):
203203
self.assertEqual(recv['Subject'], subject)
204204

205205
def test_withdraw(self):
206-
draft = make_test_data()
206+
draft = WgDraftFactory()
207207
url = urlreverse('ietf.secr.drafts.views.withdraw', kwargs={'id':draft.name})
208208
email_url = urlreverse('ietf.secr.drafts.views.email', kwargs={'id':draft.name})
209209
confirm_url = urlreverse('ietf.secr.drafts.views.confirm', kwargs={'id':draft.name})
@@ -237,7 +237,7 @@ def test_withdraw(self):
237237
self.assertEqual(recv['Subject'], subject)
238238

239239
def test_authors(self):
240-
draft = DocumentFactory()
240+
draft = WgDraftFactory()
241241
person = PersonFactory()
242242
url = urlreverse('ietf.secr.drafts.views.authors',kwargs={'id':draft.name})
243243
login_testing_unauthorized(self, "secretary", url)

ietf/secr/groups/tests.py

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,25 @@
33
from ietf.utils.test_utils import TestCase
44
from ietf.group.models import Group
55
from ietf.secr.groups.forms import get_parent_group_choices
6-
from ietf.group.factories import GroupFactory
6+
from ietf.group.factories import GroupFactory, RoleFactory
7+
from ietf.meeting.factories import MeetingFactory
8+
from ietf.person.factories import PersonFactory
79
from ietf.person.models import Person
8-
from ietf.utils.test_data import make_test_data
910
import debug # pyflakes:ignore
1011

1112
class GroupsTest(TestCase):
1213
def test_get_parent_group_choices(self):
13-
make_test_data()
14+
GroupFactory(type_id='area')
1415
choices = get_parent_group_choices()
1516
area = Group.objects.filter(type='area',state='active').first()
17+
# This is opaque. Can it be rewritten to be more self-documenting?
1618
self.assertEqual(choices[0][1][0][0],area.id)
1719

1820
# ------- Test Search -------- #
1921
def test_search(self):
2022
"Test Search"
21-
make_test_data()
22-
group = Group.objects.all()[0]
23+
MeetingFactory(type_id='ietf')
24+
group = GroupFactory()
2325
url = reverse('ietf.secr.groups.views.search')
2426
post_data = {'group_acronym':group.acronym,'submit':'Search'}
2527
self.client.login(username="secretary", password="secretary+password")
@@ -50,9 +52,8 @@ def test_add_group_invalid(self):
5052
self.assertTrue('This field is required' in response.content)
5153

5254
def test_add_group_dupe(self):
53-
make_test_data()
54-
group = Group.objects.all()[0]
55-
area = Group.objects.filter(type='area')[0]
55+
group = GroupFactory()
56+
area = GroupFactory(type_id='area')
5657
url = reverse('ietf.secr.groups.views.add')
5758
post_data = {'acronym':group.acronym,
5859
'name':'Test Group',
@@ -69,8 +70,7 @@ def test_add_group_dupe(self):
6970
self.assertTrue('Group with this Acronym already exists' in response.content)
7071

7172
def test_add_group_success(self):
72-
make_test_data()
73-
area = Group.objects.filter(type='area')[0]
73+
area = GroupFactory(type_id='area')
7474
url = reverse('ietf.secr.groups.views.add')
7575
post_data = {'acronym':'test',
7676
'name':'Test Group',
@@ -86,19 +86,19 @@ def test_add_group_success(self):
8686

8787
# ------- Test View -------- #
8888
def test_view(self):
89-
make_test_data()
90-
group = Group.objects.all()[0]
89+
MeetingFactory(type_id='ietf')
90+
group = GroupFactory()
9191
url = reverse('ietf.secr.groups.views.view', kwargs={'acronym':group.acronym})
9292
self.client.login(username="secretary", password="secretary+password")
9393
response = self.client.get(url)
9494
self.assertEqual(response.status_code, 200)
9595

9696
# ------- Test Edit -------- #
9797
def test_edit_valid(self):
98-
make_test_data()
99-
group = Group.objects.filter(acronym='mars')[0]
100-
area = Group.objects.filter(acronym='farfut')[0]
101-
ad = Person.objects.get(name='Areað Irector')
98+
group = GroupFactory()
99+
area = GroupFactory(type_id='area')
100+
ad = Person.objects.get(name='Areað Irector')
101+
MeetingFactory(type_id='ietf')
102102
url = reverse('ietf.secr.groups.views.edit', kwargs={'acronym':group.acronym})
103103
target = reverse('ietf.secr.groups.views.view', kwargs={'acronym':group.acronym})
104104
post_data = {'acronym':group.acronym,
@@ -116,9 +116,9 @@ def test_edit_valid(self):
116116
self.assertTrue('changed successfully' in response.content)
117117

118118
def test_edit_non_wg_group(self):
119-
make_test_data()
120119
parent_sdo = GroupFactory.create(type_id='sdo',state_id='active')
121120
child_sdo = GroupFactory.create(type_id='sdo',state_id='active',parent=parent_sdo)
121+
MeetingFactory(type_id='ietf')
122122
url = reverse('ietf.secr.groups.views.edit', kwargs={'acronym':child_sdo.acronym})
123123
target = reverse('ietf.secr.groups.views.view', kwargs={'acronym':child_sdo.acronym})
124124
post_data = {'acronym':child_sdo.acronym,
@@ -137,9 +137,8 @@ def test_edit_non_wg_group(self):
137137

138138
# ------- Test People -------- #
139139
def test_people_delete(self):
140-
make_test_data()
141-
group = Group.objects.filter(acronym='mars')[0]
142-
role = group.role_set.all()[0]
140+
role = RoleFactory(name_id='member')
141+
group = role.group
143142
id = role.id
144143
url = reverse('ietf.secr.groups.views.delete_role', kwargs={'acronym':group.acronym,'id':role.id})
145144
target = reverse('ietf.secr.groups.views.people', kwargs={'acronym':group.acronym})
@@ -151,9 +150,8 @@ def test_people_delete(self):
151150
self.assertFalse(group.role_set.filter(id=id))
152151

153152
def test_people_add(self):
154-
make_test_data()
155-
person = Person.objects.get(name='Areað Irector')
156-
group = Group.objects.filter(acronym='mars')[0]
153+
person = PersonFactory()
154+
group = GroupFactory()
157155
url = reverse('ietf.secr.groups.views.people', kwargs={'acronym':group.acronym})
158156
post_data = {'group_acronym':group.acronym,
159157
'name':'chair',

0 commit comments

Comments
 (0)