From 87bda667407580e874003cf9ad5dce16e6952a05 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Fri, 12 Oct 2018 22:08:31 +0000 Subject: [PATCH] Converted several secr apps to use factories for tests. Commit ready for merge. - Legacy-Id: 15568 --- ietf/meeting/factories.py | 20 ++++++- ietf/secr/drafts/tests_views.py | 28 +++++----- ietf/secr/groups/tests.py | 44 ++++++++-------- ietf/secr/proceedings/tests.py | 61 +++++++++------------ ietf/secr/roles/tests.py | 24 +++------ ietf/secr/rolodex/tests.py | 8 +-- ietf/secr/sreq/tests.py | 93 ++++++++++++++++++--------------- ietf/secr/telechat/tests.py | 20 +++---- 8 files changed, 146 insertions(+), 152 deletions(-) diff --git a/ietf/meeting/factories.py b/ietf/meeting/factories.py index 83bf29188..e8dfd997c 100644 --- a/ietf/meeting/factories.py +++ b/ietf/meeting/factories.py @@ -4,7 +4,7 @@ import datetime from django.core.files.base import ContentFile -from ietf.meeting.models import Meeting, Session, Schedule, TimeSlot, SessionPresentation, FloorPlan +from ietf.meeting.models import Meeting, Session, Schedule, TimeSlot, SessionPresentation, FloorPlan, Room from ietf.group.factories import GroupFactory from ietf.person.factories import PersonFactory @@ -100,12 +100,29 @@ class ScheduleFactory(factory.DjangoModelFactory): name = factory.Sequence(lambda n: 'schedule_%d'%n) owner = factory.SubFactory(PersonFactory) +class RoomFactory(factory.DjangoModelFactory): + class Meta: + model = Room + + meeting = factory.SubFactory(MeetingFactory) + name = factory.Faker('name') + + class TimeSlotFactory(factory.DjangoModelFactory): class Meta: model = TimeSlot meeting = factory.SubFactory(MeetingFactory) type_id = 'session' + + @factory.post_generation + def location(obj, create, extracted, **kwargs): # pylint: disable=no-self-argument + if create: + if extracted: + obj.location = extracted + else: + obj.location = RoomFactory(meeting=obj.meeting) + obj.save() @factory.lazy_attribute def time(self): @@ -140,4 +157,3 @@ class FloorPlanFactory(factory.DjangoModelFactory): ), 'floorplan.jpg' ) ) - diff --git a/ietf/secr/drafts/tests_views.py b/ietf/secr/drafts/tests_views.py index fefbf4dff..c23d1dc34 100644 --- a/ietf/secr/drafts/tests_views.py +++ b/ietf/secr/drafts/tests_views.py @@ -11,7 +11,7 @@ from pyquery import PyQuery import debug # pyflakes:ignore from ietf.doc.expire import expire_draft -from ietf.doc.factories import DocumentFactory +from ietf.doc.factories import WgDraftFactory from ietf.doc.models import Document from ietf.meeting.factories import MeetingFactory from ietf.person.factories import PersonFactory @@ -19,7 +19,6 @@ from ietf.person.models import Person from ietf.submit.models import Preapproval from ietf.utils.mail import outbox from ietf.utils.test_utils import TestCase, login_testing_unauthorized -from ietf.utils.test_data import make_test_data from ietf.secr.drafts.email import get_email_initial @@ -48,14 +47,13 @@ class SecrDraftsTestCase(TestCase): settings.IDSUBMIT_MANUAL_STAGING_DIR = self.saved_idsubmit_manual_staging_dir def test_abstract(self): - draft = make_test_data() + draft = WgDraftFactory() url = urlreverse('ietf.secr.drafts.views.abstract', kwargs={'id':draft.name}) self.client.login(username="secretary", password="secretary+password") response = self.client.get(url) self.assertEqual(response.status_code, 200) def test_approvals(self): - make_test_data() Preapproval.objects.create(name='draft-dummy', by=Person.objects.get(name="(System)")) url = urlreverse('ietf.secr.drafts.views.approvals') @@ -65,7 +63,7 @@ class SecrDraftsTestCase(TestCase): self.assertTrue('draft-dummy' in response.content) def test_edit(self): - draft = make_test_data() + draft = WgDraftFactory() url = urlreverse('ietf.secr.drafts.views.edit', kwargs={'id':draft.name}) self.client.login(username="secretary", password="secretary+password") response = self.client.get(url) @@ -83,20 +81,22 @@ class SecrDraftsTestCase(TestCase): def test_get_email_initial(self): # Makes sure that a manual posting by the Secretariat of an I-D that is # in the RFC Editor Queue will result in notification of the RFC Editor - draft = make_test_data() + draft = WgDraftFactory() data = get_email_initial(draft,action='extend',input={'expiration_date': '2050-01-01'}) self.assertTrue('Extension of Expiration Date' in data['subject']) def test_makerfc(self): - draft = make_test_data() + draft = WgDraftFactory(intended_std_level_id='ps') url = urlreverse('ietf.secr.drafts.views.edit', kwargs={'id':draft.name}) self.client.login(username="secretary", password="secretary+password") response = self.client.get(url) self.assertEqual(response.status_code, 200) + # It's not clear what this is testing. Was there supposed to be a POST here? self.assertTrue(draft.intended_std_level) def test_search(self): - draft = make_test_data() + WgDraftFactory() # Test exercises branch that requires >1 doc found + draft = WgDraftFactory() url = urlreverse('ietf.secr.drafts.views.search') self.client.login(username="secretary", password="secretary+password") response = self.client.get(url) @@ -108,14 +108,14 @@ class SecrDraftsTestCase(TestCase): self.assertTrue(draft.name in response.content) def test_view(self): - draft = make_test_data() + draft = WgDraftFactory() url = urlreverse('ietf.secr.drafts.views.view', kwargs={'id':draft.name}) self.client.login(username="secretary", password="secretary+password") response = self.client.get(url) self.assertEqual(response.status_code, 200) def test_author_delete(self): - draft = make_test_data() + draft = WgDraftFactory(authors=PersonFactory.create_batch(2)) author = draft.documentauthor_set.first() id = author.id url = urlreverse('ietf.secr.drafts.views.author_delete', kwargs={'id':draft.name, 'oid':id}) @@ -128,7 +128,7 @@ class SecrDraftsTestCase(TestCase): self.assertFalse(draft.documentauthor_set.filter(id=id)) def test_resurrect(self): - draft = make_test_data() + draft = WgDraftFactory() path = os.path.join(self.repository_dir, draft.filename_with_rev()) with open(path, 'w') as file: file.write('test') @@ -164,7 +164,7 @@ class SecrDraftsTestCase(TestCase): self.assertEqual(recv['Subject'], subject) def test_extend(self): - draft = make_test_data() + draft = WgDraftFactory() url = urlreverse('ietf.secr.drafts.views.extend', kwargs={'id':draft.name}) email_url = urlreverse('ietf.secr.drafts.views.email', kwargs={'id':draft.name}) confirm_url = urlreverse('ietf.secr.drafts.views.confirm', kwargs={'id':draft.name}) @@ -203,7 +203,7 @@ class SecrDraftsTestCase(TestCase): self.assertEqual(recv['Subject'], subject) def test_withdraw(self): - draft = make_test_data() + draft = WgDraftFactory() url = urlreverse('ietf.secr.drafts.views.withdraw', kwargs={'id':draft.name}) email_url = urlreverse('ietf.secr.drafts.views.email', kwargs={'id':draft.name}) confirm_url = urlreverse('ietf.secr.drafts.views.confirm', kwargs={'id':draft.name}) @@ -237,7 +237,7 @@ class SecrDraftsTestCase(TestCase): self.assertEqual(recv['Subject'], subject) def test_authors(self): - draft = DocumentFactory() + draft = WgDraftFactory() person = PersonFactory() url = urlreverse('ietf.secr.drafts.views.authors',kwargs={'id':draft.name}) login_testing_unauthorized(self, "secretary", url) diff --git a/ietf/secr/groups/tests.py b/ietf/secr/groups/tests.py index 8a98e8661..8de85c501 100644 --- a/ietf/secr/groups/tests.py +++ b/ietf/secr/groups/tests.py @@ -3,23 +3,25 @@ from django.urls import reverse from ietf.utils.test_utils import TestCase from ietf.group.models import Group from ietf.secr.groups.forms import get_parent_group_choices -from ietf.group.factories import GroupFactory +from ietf.group.factories import GroupFactory, RoleFactory +from ietf.meeting.factories import MeetingFactory +from ietf.person.factories import PersonFactory from ietf.person.models import Person -from ietf.utils.test_data import make_test_data import debug # pyflakes:ignore class GroupsTest(TestCase): def test_get_parent_group_choices(self): - make_test_data() + GroupFactory(type_id='area') choices = get_parent_group_choices() area = Group.objects.filter(type='area',state='active').first() + # This is opaque. Can it be rewritten to be more self-documenting? self.assertEqual(choices[0][1][0][0],area.id) # ------- Test Search -------- # def test_search(self): "Test Search" - make_test_data() - group = Group.objects.all()[0] + MeetingFactory(type_id='ietf') + group = GroupFactory() url = reverse('ietf.secr.groups.views.search') post_data = {'group_acronym':group.acronym,'submit':'Search'} self.client.login(username="secretary", password="secretary+password") @@ -50,9 +52,8 @@ class GroupsTest(TestCase): self.assertTrue('This field is required' in response.content) def test_add_group_dupe(self): - make_test_data() - group = Group.objects.all()[0] - area = Group.objects.filter(type='area')[0] + group = GroupFactory() + area = GroupFactory(type_id='area') url = reverse('ietf.secr.groups.views.add') post_data = {'acronym':group.acronym, 'name':'Test Group', @@ -69,8 +70,7 @@ class GroupsTest(TestCase): self.assertTrue('Group with this Acronym already exists' in response.content) def test_add_group_success(self): - make_test_data() - area = Group.objects.filter(type='area')[0] + area = GroupFactory(type_id='area') url = reverse('ietf.secr.groups.views.add') post_data = {'acronym':'test', 'name':'Test Group', @@ -86,8 +86,8 @@ class GroupsTest(TestCase): # ------- Test View -------- # def test_view(self): - make_test_data() - group = Group.objects.all()[0] + MeetingFactory(type_id='ietf') + group = GroupFactory() url = reverse('ietf.secr.groups.views.view', kwargs={'acronym':group.acronym}) self.client.login(username="secretary", password="secretary+password") response = self.client.get(url) @@ -95,10 +95,10 @@ class GroupsTest(TestCase): # ------- Test Edit -------- # def test_edit_valid(self): - make_test_data() - group = Group.objects.filter(acronym='mars')[0] - area = Group.objects.filter(acronym='farfut')[0] - ad = Person.objects.get(name='Areað Irector') + group = GroupFactory() + area = GroupFactory(type_id='area') + ad = Person.objects.get(name='Areað Irector') + MeetingFactory(type_id='ietf') url = reverse('ietf.secr.groups.views.edit', kwargs={'acronym':group.acronym}) target = reverse('ietf.secr.groups.views.view', kwargs={'acronym':group.acronym}) post_data = {'acronym':group.acronym, @@ -116,9 +116,9 @@ class GroupsTest(TestCase): self.assertTrue('changed successfully' in response.content) def test_edit_non_wg_group(self): - make_test_data() parent_sdo = GroupFactory.create(type_id='sdo',state_id='active') child_sdo = GroupFactory.create(type_id='sdo',state_id='active',parent=parent_sdo) + MeetingFactory(type_id='ietf') url = reverse('ietf.secr.groups.views.edit', kwargs={'acronym':child_sdo.acronym}) target = reverse('ietf.secr.groups.views.view', kwargs={'acronym':child_sdo.acronym}) post_data = {'acronym':child_sdo.acronym, @@ -137,9 +137,8 @@ class GroupsTest(TestCase): # ------- Test People -------- # def test_people_delete(self): - make_test_data() - group = Group.objects.filter(acronym='mars')[0] - role = group.role_set.all()[0] + role = RoleFactory(name_id='member') + group = role.group id = role.id url = reverse('ietf.secr.groups.views.delete_role', kwargs={'acronym':group.acronym,'id':role.id}) target = reverse('ietf.secr.groups.views.people', kwargs={'acronym':group.acronym}) @@ -151,9 +150,8 @@ class GroupsTest(TestCase): self.assertFalse(group.role_set.filter(id=id)) def test_people_add(self): - make_test_data() - person = Person.objects.get(name='Areað Irector') - group = Group.objects.filter(acronym='mars')[0] + person = PersonFactory() + group = GroupFactory() url = reverse('ietf.secr.groups.views.people', kwargs={'acronym':group.acronym}) post_data = {'group_acronym':group.acronym, 'name':'chair', diff --git a/ietf/secr/proceedings/tests.py b/ietf/secr/proceedings/tests.py index 5be0d81e7..8da4b99a8 100644 --- a/ietf/secr/proceedings/tests.py +++ b/ietf/secr/proceedings/tests.py @@ -7,11 +7,10 @@ from django.conf import settings from django.urls import reverse from ietf.doc.models import Document -from ietf.group.models import Group -from ietf.meeting.models import Session, TimeSlot, SchedTimeSessAssignment -from ietf.meeting.test_data import make_meeting_test_data +from ietf.group.factories import RoleFactory +from ietf.meeting.models import SchedTimeSessAssignment +from ietf.meeting.factories import MeetingFactory, SessionFactory from ietf.name.models import SessionStatusName -from ietf.utils.test_data import make_test_data from ietf.utils.test_utils import TestCase from ietf.utils.mail import outbox @@ -26,7 +25,8 @@ SECR_USER='secretary' class ProceedingsTestCase(TestCase): def test_main(self): "Main Test" - make_test_data() + MeetingFactory(type_id='ietf') + RoleFactory(name_id='chair',person__user__username='marschairman') url = reverse('ietf.secr.proceedings.views.main') self.client.login(username="secretary", password="secretary+password") response = self.client.get(url) @@ -41,8 +41,8 @@ class ProceedingsTestCase(TestCase): class VideoRecordingTestCase(TestCase): def test_get_session(self): - meeting = make_meeting_test_data() - session = Session.objects.filter(meeting=meeting, group__acronym='mars').first() + session = SessionFactory() + meeting = session.meeting number = meeting.number name = session.group.acronym date = session.official_timeslotassignment().timeslot.time.strftime('%Y%m%d') @@ -69,20 +69,16 @@ class RecordingTestCase(TestCase): settings.MEETING_RECORDINGS_DIR = self.saved_meeting_recordings_dir def test_page(self): - meeting = make_meeting_test_data() + meeting = MeetingFactory(type_id='ietf') url = reverse('ietf.secr.proceedings.views.recording', kwargs={'meeting_num':meeting.number}) self.client.login(username="secretary", password="secretary+password") response = self.client.get(url) self.assertEqual(response.status_code, 200) def test_post(self): - meeting = make_meeting_test_data() - group = Group.objects.get(acronym='mars') - session = Session.objects.filter(meeting=meeting,group=group).first() - # explicitly set to scheduled for this test - status = SessionStatusName.objects.get(slug='sched') - session.status = status - session.save() + session = SessionFactory(status_id='sched',meeting__type_id='ietf') + meeting = session.meeting + group = session.group url = reverse('ietf.secr.proceedings.views.recording', kwargs={'meeting_num':meeting.number}) data = dict(group=group.acronym,external_url='http://youtube.com/xyz',session=session.pk) self.client.login(username="secretary", password="secretary+password") @@ -99,12 +95,8 @@ class RecordingTestCase(TestCase): self.assertTrue(external_url in response.content) def test_import_audio_files(self): - meeting = make_meeting_test_data() - group = Group.objects.get(acronym='mars') - session = Session.objects.filter(meeting=meeting,group=group).first() - status = SessionStatusName.objects.get(slug='sched') - session.status = status - session.save() + session = SessionFactory(status_id='sched',meeting__type_id='ietf') + meeting = session.meeting timeslot = session.official_timeslotassignment().timeslot self.create_audio_file_for_timeslot(timeslot) import_audio_files(meeting) @@ -126,9 +118,9 @@ class RecordingTestCase(TestCase): date=timeslot.time.strftime('%Y%m%d-%H%M')) def test_import_audio_files_shared_timeslot(self): - meeting = make_meeting_test_data() - mars_session = Session.objects.filter(meeting=meeting,group__acronym='mars').first() - ames_session = Session.objects.filter(meeting=meeting,group__acronym='ames').first() + meeting = MeetingFactory(type_id='ietf',number='42') + mars_session = SessionFactory(meeting=meeting,status_id='sched',group__acronym='mars') + ames_session = SessionFactory(meeting=meeting,status_id='sched',group__acronym='ames') scheduled = SessionStatusName.objects.get(slug='sched') mars_session.status = scheduled mars_session.save() @@ -148,15 +140,13 @@ class RecordingTestCase(TestCase): self.assertEqual(normalize_room_name('Rome/Venice'), 'rome_venice') def test_get_timeslot_for_filename(self): - meeting = make_meeting_test_data() - timeslot = TimeSlot.objects.filter(meeting=meeting,type='session').first() + session = SessionFactory(meeting__type_id='ietf') + timeslot = session.timeslotassignments.first().timeslot name = self.get_filename_for_timeslot(timeslot) self.assertEqual(get_timeslot_for_filename(name),timeslot) def test_get_or_create_recording_document(self): - meeting = make_meeting_test_data() - group = Group.objects.get(acronym='mars') - session = Session.objects.filter(meeting=meeting,group=group).first() + session = SessionFactory(meeting__type_id='ietf', meeting__number=42, group__acronym='mars') # test create filename = 'ietf42-testroom-20000101-0800.mp3' @@ -174,20 +164,19 @@ class RecordingTestCase(TestCase): self.assertEqual(doc,doc2) def test_create_recording(self): - meeting = make_meeting_test_data() - group = Group.objects.get(acronym='mars') - session = Session.objects.filter(meeting=meeting,group=group).first() + session = SessionFactory(meeting__type_id='ietf', meeting__number=42, group__acronym='mars') filename = 'ietf42-testroomt-20000101-0800.mp3' - url = settings.IETF_AUDIO_URL + 'ietf{}/{}'.format(meeting.number, filename) + url = settings.IETF_AUDIO_URL + 'ietf{}/{}'.format(session.meeting.number, filename) doc = create_recording(session, url) self.assertEqual(doc.name,'recording-42-mars-1') - self.assertEqual(doc.group,group) + self.assertEqual(doc.group,session.group) self.assertEqual(doc.external_url,url) self.assertTrue(doc in session.materials.all()) def test_get_next_sequence(self): - meeting = make_meeting_test_data() - group = Group.objects.get(acronym='mars') + session = SessionFactory(meeting__type_id='ietf', meeting__number=42, group__acronym='mars') + meeting = session.meeting + group = session.group sequence = get_next_sequence(group,meeting,'recording') self.assertEqual(sequence,1) diff --git a/ietf/secr/roles/tests.py b/ietf/secr/roles/tests.py index f0487bd80..c4cdf88cf 100644 --- a/ietf/secr/roles/tests.py +++ b/ietf/secr/roles/tests.py @@ -2,32 +2,28 @@ from django.urls import reverse from ietf.utils.test_utils import TestCase -from ietf.group.models import Group +from ietf.group.factories import GroupFactory, RoleFactory from ietf.person.models import Person -from ietf.utils.test_data import make_test_data import debug # pyflakes:ignore SECR_USER='secretary' -def augment_data(): - # need this for the RoleForm intialization - Group.objects.create(acronym='dummy',name='Dummy Group',type_id='sdo') - class SecrRolesMainTestCase(TestCase): + + def setUp(self): + GroupFactory(type_id='sdo') # need this for the RoleForm initialization + def test_main(self): "Main Test" - augment_data() url = reverse('ietf.secr.roles.views.main') self.client.login(username="secretary", password="secretary+password") response = self.client.get(url) self.assertEqual(response.status_code, 200) def test_roles_delete(self): - make_test_data() - augment_data() - group = Group.objects.filter(acronym='mars')[0] - role = group.role_set.all()[0] + role = RoleFactory(name_id='chair',group__acronym='mars') + group = role.group id = role.id url = reverse('ietf.secr.roles.views.delete_role', kwargs={'acronym':group.acronym,'id':role.id}) target = reverse('ietf.secr.roles.views.main') @@ -39,10 +35,8 @@ class SecrRolesMainTestCase(TestCase): self.assertFalse(group.role_set.filter(id=id)) def test_roles_add(self): - make_test_data() - augment_data() person = Person.objects.get(name='Areað Irector') - group = Group.objects.filter(acronym='mars')[0] + group = GroupFactory() url = reverse('ietf.secr.roles.views.main') target = reverse('ietf.secr.roles.views.main') + '?group=%s' % group.acronym post_data = {'group_acronym':group.acronym, @@ -56,8 +50,6 @@ class SecrRolesMainTestCase(TestCase): self.assertTrue('added successfully' in response.content) def test_roles_add_no_group(self): - make_test_data() - augment_data() person = Person.objects.get(name='Areað Irector') url = reverse('ietf.secr.roles.views.main') post_data = {'group_acronym':'', diff --git a/ietf/secr/rolodex/tests.py b/ietf/secr/rolodex/tests.py index a4df74453..3cd897127 100644 --- a/ietf/secr/rolodex/tests.py +++ b/ietf/secr/rolodex/tests.py @@ -5,8 +5,6 @@ import debug # pyflakes:ignore from ietf.utils.test_utils import TestCase from ietf.person.factories import PersonFactory, UserFactory from ietf.person.models import Person, User -from ietf.utils.test_data import make_test_data - SECR_USER='secretary' @@ -20,15 +18,13 @@ class RolodexTestCase(TestCase): def test_view(self): "View Test" - make_test_data() - person = Person.objects.all()[0] + person = PersonFactory() url = reverse('ietf.secr.rolodex.views.view', kwargs={'id':person.id}) self.client.login(username="secretary", password="secretary+password") response = self.client.get(url) self.assertEqual(response.status_code, 200) def test_add(self): - make_test_data() url = reverse('ietf.secr.rolodex.views.add') add_proceed_url = reverse('ietf.secr.rolodex.views.add_proceed') + '?name=Joe+Smith' self.client.login(username="secretary", password="secretary+password") @@ -41,7 +37,7 @@ class RolodexTestCase(TestCase): 'ascii': 'Joe Smith', 'ascii_short': 'Joe S', 'affiliation': 'IETF', - 'email': 'joes@exanple.com', + 'email': 'joes@example.com', 'submit': 'Submit', } response = self.client.post(add_proceed_url, post_data) diff --git a/ietf/secr/sreq/tests.py b/ietf/secr/sreq/tests.py index 6b84129f3..4d03ab5b3 100644 --- a/ietf/secr/sreq/tests.py +++ b/ietf/secr/sreq/tests.py @@ -1,15 +1,14 @@ from django.urls import reverse +import datetime import debug # pyflakes:ignore from ietf.utils.test_utils import TestCase, unicontent -from ietf.group.models import Group -from ietf.meeting.helpers import get_meeting -from ietf.meeting.models import Meeting, Session, ResourceAssociation -from ietf.meeting.test_data import make_meeting_test_data -from ietf.meeting.factories import SessionFactory +from ietf.group.factories import GroupFactory, RoleFactory +from ietf.meeting.models import Session, ResourceAssociation +from ietf.meeting.factories import MeetingFactory, SessionFactory +from ietf.person.models import Person from ietf.utils.mail import outbox, empty_outbox -from ietf.utils.test_data import make_test_data from pyquery import PyQuery @@ -17,7 +16,7 @@ SECR_USER='secretary' class SreqUrlTests(TestCase): def test_urls(self): - make_meeting_test_data() + MeetingFactory(type_id='ietf',date=datetime.date.today()) self.client.login(username="secretary", password="secretary+password") @@ -27,13 +26,16 @@ class SreqUrlTests(TestCase): r = self.client.get("/secr/sreq/") self.assertEqual(r.status_code, 200) - testgroup=Group.objects.filter(type_id='wg').first() + testgroup=GroupFactory() r = self.client.get("/secr/sreq/%s/new/" % testgroup.acronym) self.assertEqual(r.status_code, 200) class SessionRequestTestCase(TestCase): def test_main(self): - make_meeting_test_data() + meeting = MeetingFactory(type_id='ietf', date=datetime.date.today()) + SessionFactory.create_batch(2, meeting=meeting, status_id='sched') + SessionFactory.create_batch(2, meeting=meeting, status_id='unsched') + # An additional unscheduled group comes from make_immutable_base_data url = reverse('ietf.secr.sreq.views.main') self.client.login(username="secretary", password="secretary+password") r = self.client.get(url) @@ -44,8 +46,10 @@ class SessionRequestTestCase(TestCase): self.assertEqual(len(sched),2) def test_approve(self): - meeting = make_meeting_test_data() - mars = Group.objects.get(acronym='mars') + meeting = MeetingFactory(type_id='ietf', date=datetime.date.today()) + ad = Person.objects.get(user__username='ad') + area = RoleFactory(name_id='ad', person=ad, group__type_id='area').group + mars = GroupFactory(parent=area, acronym='mars') # create session waiting for approval session = SessionFactory(meeting=meeting, group=mars, status_id='apprw') url = reverse('ietf.secr.sreq.views.approve', kwargs={'acronym':'mars'}) @@ -56,8 +60,10 @@ class SessionRequestTestCase(TestCase): self.assertEqual(session.status_id,'appr') def test_cancel(self): - meeting = make_meeting_test_data() - mars = Group.objects.get(acronym='mars') + meeting = MeetingFactory(type_id='ietf', date=datetime.date.today()) + ad = Person.objects.get(user__username='ad') + area = RoleFactory(name_id='ad', person=ad, group__type_id='area').group + mars = SessionFactory(meeting=meeting, group__parent=area, group__acronym='mars').group url = reverse('ietf.secr.sreq.views.cancel', kwargs={'acronym':'mars'}) self.client.login(username="ad", password="ad+password") r = self.client.get(url) @@ -66,7 +72,10 @@ class SessionRequestTestCase(TestCase): self.assertEqual(sessions[0].status_id,'deleted') def test_edit(self): - make_meeting_test_data() + meeting = MeetingFactory(type_id='ietf', date=datetime.date.today()) + mars = RoleFactory(name_id='chair', person__user__username='marschairman', group__acronym='mars').group + SessionFactory(meeting=meeting,group=mars) + url = reverse('ietf.secr.sreq.views.edit', kwargs={'acronym':'mars'}) self.client.login(username="marschairman", password="marschairman+password") r = self.client.get(url) @@ -82,7 +91,7 @@ class SessionRequestTestCase(TestCase): self.assertRedirects(r,reverse('ietf.secr.sreq.views.view', kwargs={'acronym':'mars'})) def test_tool_status(self): - make_meeting_test_data() + MeetingFactory(type_id='ietf', date=datetime.date.today()) url = reverse('ietf.secr.sreq.views.tool_status') self.client.login(username="secretary", password="secretary+password") r = self.client.get(url) @@ -92,9 +101,10 @@ class SessionRequestTestCase(TestCase): class SubmitRequestCase(TestCase): def test_submit_request(self): - make_test_data() - meeting = get_meeting() - group = Group.objects.get(acronym='mars') + meeting = MeetingFactory(type_id='ietf', date=datetime.date.today()) + ad = Person.objects.get(user__username='ad') + area = RoleFactory(name_id='ad', person=ad, group__type_id='area').group + group = GroupFactory(parent=area) session_count_before = Session.objects.filter(meeting=meeting, group=group).count() url = reverse('ietf.secr.sreq.views.new',kwargs={'acronym':group.acronym}) confirm_url = reverse('ietf.secr.sreq.views.confirm',kwargs={'acronym':group.acronym}) @@ -121,8 +131,10 @@ class SubmitRequestCase(TestCase): self.assertTrue(session_count_after == session_count_before + 1) def test_submit_request_invalid(self): - make_test_data() - group = Group.objects.get(acronym='mars') + MeetingFactory(type_id='ietf', date=datetime.date.today()) + ad = Person.objects.get(user__username='ad') + area = RoleFactory(name_id='ad', person=ad, group__type_id='area').group + group = GroupFactory(parent=area) url = reverse('ietf.secr.sreq.views.new',kwargs={'acronym':group.acronym}) post_data = {'num_session':'2', 'length_session1':'3600', @@ -137,14 +149,17 @@ class SubmitRequestCase(TestCase): self.assertTrue('You must enter a length for all sessions' in unicontent(r)) def test_request_notification(self): - make_test_data() - meeting = Meeting.objects.filter(type='ietf').first() - group = Group.objects.get(acronym='ames') - ad = group.parent.role_set.filter(name='ad').first().person - resource = ResourceAssociation.objects.first() + meeting = MeetingFactory(type_id='ietf', date=datetime.date.today()) + ad = Person.objects.get(user__username='ad') + area = GroupFactory(type_id='area') + RoleFactory(name_id='ad', person=ad, group=area) + group = GroupFactory(acronym='ames', parent=area) + RoleFactory(name_id='chair', group=group, person__user__username='ameschairman') + resource = ResourceAssociation.objects.create(name_id='project') # Bit of a test data hack - the fixture now has no used resources to pick from resource.name.used=True resource.name.save() + url = reverse('ietf.secr.sreq.views.new',kwargs={'acronym':group.acronym}) confirm_url = reverse('ietf.secr.sreq.views.confirm',kwargs={'acronym':group.acronym}) len_before = len(outbox) @@ -177,12 +192,14 @@ class SubmitRequestCase(TestCase): self.assertTrue(ad.ascii_name() in notification_payload) class LockAppTestCase(TestCase): + def setUp(self): + self.meeting = MeetingFactory(type_id='ietf', date=datetime.date.today(),session_request_lock_message='locked') + self.group = GroupFactory(acronym='mars') + RoleFactory(name_id='chair', group=self.group, person__user__username='marschairman') + SessionFactory(group=self.group,meeting=self.meeting) + def test_edit_request(self): - meeting = make_meeting_test_data() - meeting.session_request_lock_message='locked' - meeting.save() - group = Group.objects.get(acronym='mars') - url = reverse('ietf.secr.sreq.views.edit',kwargs={'acronym':group.acronym}) + url = reverse('ietf.secr.sreq.views.edit',kwargs={'acronym':self.group.acronym}) self.client.login(username="secretary", password="secretary+password") r = self.client.get(url) self.assertEqual(r.status_code, 200) @@ -190,11 +207,7 @@ class LockAppTestCase(TestCase): self.assertEqual(len(q(':disabled[name="submit"]')), 1) def test_view_request(self): - meeting = make_meeting_test_data() - meeting.session_request_lock_message='locked' - meeting.save() - group = Group.objects.get(acronym='mars') - url = reverse('ietf.secr.sreq.views.view',kwargs={'acronym':group.acronym}) + url = reverse('ietf.secr.sreq.views.view',kwargs={'acronym':self.group.acronym}) self.client.login(username="secretary", password="secretary+password") r = self.client.get(url,follow=True) self.assertEqual(r.status_code, 200) @@ -202,11 +215,7 @@ class LockAppTestCase(TestCase): self.assertEqual(len(q(':disabled[name="edit"]')), 1) def test_new_request(self): - meeting = make_meeting_test_data() - meeting.session_request_lock_message='locked' - meeting.save() - group = Group.objects.get(acronym='mars') - url = reverse('ietf.secr.sreq.views.new',kwargs={'acronym':group.acronym}) + url = reverse('ietf.secr.sreq.views.new',kwargs={'acronym':self.group.acronym}) # try as WG Chair self.client.login(username="marschairman", password="marschairman+password") @@ -224,8 +233,8 @@ class LockAppTestCase(TestCase): class NotMeetingCase(TestCase): def test_not_meeting(self): - make_meeting_test_data() - group = Group.objects.get(acronym='mars') + MeetingFactory(type_id='ietf',date=datetime.date.today()) + group = GroupFactory(acronym='mars') url = reverse('ietf.secr.sreq.views.no_session',kwargs={'acronym':group.acronym}) self.client.login(username="secretary", password="secretary+password") diff --git a/ietf/secr/telechat/tests.py b/ietf/secr/telechat/tests.py index a7ca60803..3d83b9d50 100644 --- a/ietf/secr/telechat/tests.py +++ b/ietf/secr/telechat/tests.py @@ -6,13 +6,13 @@ import debug # pyflakes:ignore from django.urls import reverse -from ietf.doc.models import Document, State, BallotDocEvent, BallotType, BallotPositionDocEvent +from ietf.doc.factories import WgDraftFactory, CharterFactory +from ietf.doc.models import BallotDocEvent, BallotType, BallotPositionDocEvent from ietf.doc.utils import update_telechat, create_ballot_if_not_open from ietf.utils.test_utils import TestCase from ietf.iesg.models import TelechatDate from ietf.person.models import Person from ietf.secr.telechat.views import get_next_telechat_date -from ietf.utils.test_data import make_test_data SECR_USER='secretary' @@ -39,7 +39,7 @@ class SecrTelechatTestCase(TestCase): self.assertEqual(response.status_code, 200) def test_doc_detail_draft(self): - draft = make_test_data() + draft = WgDraftFactory(states=[('draft-iesg','pub-req'),]) ad = Person.objects.get(user__username="ad") create_ballot_if_not_open(None, draft, ad, 'approve') d = get_next_telechat_date() @@ -60,7 +60,7 @@ class SecrTelechatTestCase(TestCase): def test_doc_detail_draft_invalid(self): '''Test using a document not on telechat agenda''' - draft = make_test_data() + draft = WgDraftFactory(states=[('draft-iesg','pub-req'),]) date = get_next_telechat_date().strftime('%Y-%m-%d') url = reverse('ietf.secr.telechat.views.doc_detail', kwargs={'date':date, 'name':draft.name}) self.client.login(username="secretary", password="secretary+password") @@ -69,10 +69,8 @@ class SecrTelechatTestCase(TestCase): self.assertTrue('not on the Telechat agenda' in response.content) def test_doc_detail_charter(self): - make_test_data() by=Person.objects.get(name="(System)") - charter = Document.objects.filter(type='charter').first() - charter.set_state(State.objects.get(used=True, slug="intrev", type="charter")) + charter = CharterFactory(states=[('charter','intrev')]) last_week = datetime.date.today()-datetime.timedelta(days=7) BallotDocEvent.objects.create(type='created_ballot',by=by,doc=charter, rev=charter.rev, ballot_type=BallotType.objects.get(doc_type=charter.type,slug='r-extrev'), @@ -100,10 +98,8 @@ class SecrTelechatTestCase(TestCase): self.assertEqual(response.status_code, 200) def test_doc_detail_post_update_ballot(self): - make_test_data() by=Person.objects.get(name="(System)") - charter = Document.objects.filter(type='charter').first() - charter.set_state(State.objects.get(used=True, slug="intrev", type="charter")) + charter = CharterFactory(states=[('charter','intrev')]) last_week = datetime.date.today()-datetime.timedelta(days=7) BallotDocEvent.objects.create(type='created_ballot',by=by,doc=charter, rev=charter.rev, ballot_type=BallotType.objects.get(doc_type=charter.type,slug='r-extrev'), @@ -140,10 +136,8 @@ class SecrTelechatTestCase(TestCase): self.assertTrue(BallotPositionDocEvent.objects.filter(doc=charter, ad_id=13, pos__slug='noobj').exists()) def test_doc_detail_post_update_state(self): - make_test_data() by=Person.objects.get(name="(System)") - charter = Document.objects.filter(type='charter').first() - charter.set_state(State.objects.get(used=True, slug="intrev", type="charter")) + charter = CharterFactory(states=[('charter','intrev')]) last_week = datetime.date.today()-datetime.timedelta(days=7) BallotDocEvent.objects.create(type='created_ballot',by=by,doc=charter, rev=charter.rev, ballot_type=BallotType.objects.get(doc_type=charter.type,slug='r-extrev'),