A little less waste creating meeting/interim test data. Commit ready for merge.

- Legacy-Id: 18021
This commit is contained in:
Robert Sparks 2020-06-19 21:45:15 +00:00
parent c60cc1b1a0
commit ba41f9ba95
2 changed files with 46 additions and 25 deletions

View file

@ -10,11 +10,13 @@ import debug # pyflakes:ignore
from ietf.doc.factories import DocumentFactory from ietf.doc.factories import DocumentFactory
from ietf.group.models import Group from ietf.group.factories import GroupFactory, RoleFactory
from ietf.group.models import Group
from ietf.meeting.models import (Meeting, Room, TimeSlot, Session, Schedule, SchedTimeSessAssignment, from ietf.meeting.models import (Meeting, Room, TimeSlot, Session, Schedule, SchedTimeSessAssignment,
ResourceAssociation, SessionPresentation, UrlResource, SchedulingEvent) ResourceAssociation, SessionPresentation, UrlResource, SchedulingEvent)
from ietf.meeting.helpers import create_interim_meeting from ietf.meeting.helpers import create_interim_meeting
from ietf.name.models import RoomResourceName from ietf.name.models import RoomResourceName
from ietf.person.factories import PersonFactory
from ietf.person.models import Person from ietf.person.models import Person
from ietf.utils.test_data import make_test_data from ietf.utils.test_data import make_test_data
@ -67,7 +69,7 @@ def make_interim_meeting(group,date,status='sched'):
# #
return meeting return meeting
def make_meeting_test_data(meeting=None): def make_meeting_test_data(meeting=None, create_interims=False):
if not Group.objects.filter(acronym='mars'): if not Group.objects.filter(acronym='mars'):
make_test_data() make_test_data()
system_person = Person.objects.get(name="(System)") system_person = Person.objects.get(name="(System)")
@ -190,12 +192,31 @@ def make_meeting_test_data(meeting=None):
date2 = datetime.date.today() + datetime.timedelta(days=1000) date2 = datetime.date.today() + datetime.timedelta(days=1000)
ames = Group.objects.get(acronym="ames") ames = Group.objects.get(acronym="ames")
if create_interims:
make_interim_meeting(group=mars,date=date,status='sched')
make_interim_meeting(group=mars,date=date2,status='apprw')
make_interim_meeting(group=ames,date=date,status='canceled')
make_interim_meeting(group=ames,date=date2,status='apprw')
return meeting
def make_interim_test_data():
date = datetime.date.today() + datetime.timedelta(days=365)
date2 = datetime.date.today() + datetime.timedelta(days=1000)
PersonFactory(user__username='plain')
area = GroupFactory(type_id='area')
ad = Person.objects.get(user__username='ad')
RoleFactory(group=area,person=ad,name_id='ad')
mars = GroupFactory(acronym='mars',parent=area,name='Martian Special Interest Group')
ames = GroupFactory(acronym='ames',parent=area)
RoleFactory(group=mars,person__user__username='marschairman',name_id='chair')
RoleFactory(group=ames,person__user__username='ameschairman',name_id='chair')
make_interim_meeting(group=mars,date=date,status='sched') make_interim_meeting(group=mars,date=date,status='sched')
make_interim_meeting(group=mars,date=date2,status='apprw') make_interim_meeting(group=mars,date=date2,status='apprw')
make_interim_meeting(group=ames,date=date,status='canceled') make_interim_meeting(group=ames,date=date,status='canceled')
make_interim_meeting(group=ames,date=date2,status='apprw') make_interim_meeting(group=ames,date=date2,status='apprw')
return meeting return

View file

@ -34,7 +34,7 @@ from ietf.meeting.helpers import send_interim_approval_request
from ietf.meeting.helpers import send_interim_cancellation_notice from ietf.meeting.helpers import send_interim_cancellation_notice
from ietf.meeting.helpers import send_interim_minutes_reminder, populate_important_dates, update_important_dates from ietf.meeting.helpers import send_interim_minutes_reminder, populate_important_dates, update_important_dates
from ietf.meeting.models import Session, TimeSlot, Meeting, SchedTimeSessAssignment, Schedule, SessionPresentation, SlideSubmission, SchedulingEvent, Room, Constraint, ConstraintName from ietf.meeting.models import Session, TimeSlot, Meeting, SchedTimeSessAssignment, Schedule, SessionPresentation, SlideSubmission, SchedulingEvent, Room, Constraint, ConstraintName
from ietf.meeting.test_data import make_meeting_test_data, make_interim_meeting from ietf.meeting.test_data import make_meeting_test_data, make_interim_meeting, make_interim_test_data
from ietf.meeting.utils import finalize, condition_slide_order from ietf.meeting.utils import finalize, condition_slide_order
from ietf.meeting.utils import add_event_info_to_session_qs from ietf.meeting.utils import add_event_info_to_session_qs
from ietf.meeting.views import session_draft_list from ietf.meeting.views import session_draft_list
@ -1400,7 +1400,7 @@ class InterimTests(TestCase):
self.client.logout() self.client.logout()
def test_interim_announce(self): def test_interim_announce(self):
make_meeting_test_data() make_interim_test_data()
url = urlreverse("ietf.meeting.views.interim_announce") url = urlreverse("ietf.meeting.views.interim_announce")
meeting = Meeting.objects.filter(type='interim', session__group__acronym='mars').first() meeting = Meeting.objects.filter(type='interim', session__group__acronym='mars').first()
session = meeting.session_set.first() session = meeting.session_set.first()
@ -1431,7 +1431,7 @@ class InterimTests(TestCase):
self.assertEqual(len(outbox), len_before) self.assertEqual(len(outbox), len_before)
def test_interim_send_announcement(self): def test_interim_send_announcement(self):
make_meeting_test_data() make_interim_test_data()
meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first().meeting meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first().meeting
meeting.time_zone = 'America/Los_Angeles' meeting.time_zone = 'America/Los_Angeles'
meeting.save() meeting.save()
@ -1452,7 +1452,7 @@ class InterimTests(TestCase):
self.assertIn('(%s to %s UTC)'%(timeslot.utc_start_time().strftime('%H:%M'),timeslot.utc_end_time().strftime('%H:%M')), get_payload_text(outbox[-1])) self.assertIn('(%s to %s UTC)'%(timeslot.utc_start_time().strftime('%H:%M'),timeslot.utc_end_time().strftime('%H:%M')), get_payload_text(outbox[-1]))
def test_interim_approve_by_ad(self): def test_interim_approve_by_ad(self):
make_meeting_test_data() make_interim_test_data()
meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first().meeting meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first().meeting
url = urlreverse('ietf.meeting.views.interim_request_details', kwargs={'number': meeting.number}) url = urlreverse('ietf.meeting.views.interim_request_details', kwargs={'number': meeting.number})
length_before = len(outbox) length_before = len(outbox)
@ -1465,7 +1465,7 @@ class InterimTests(TestCase):
self.assertIn('ready for announcement', outbox[-1]['Subject']) self.assertIn('ready for announcement', outbox[-1]['Subject'])
def test_interim_approve_by_secretariat(self): def test_interim_approve_by_secretariat(self):
make_meeting_test_data() make_interim_test_data()
meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first().meeting meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first().meeting
url = urlreverse('ietf.meeting.views.interim_request_details', kwargs={'number': meeting.number}) url = urlreverse('ietf.meeting.views.interim_request_details', kwargs={'number': meeting.number})
login_testing_unauthorized(self, "secretary", url) login_testing_unauthorized(self, "secretary", url)
@ -1488,7 +1488,7 @@ class InterimTests(TestCase):
self.assertIn('CANCELLED', q('tr>td>a>span').text()) self.assertIn('CANCELLED', q('tr>td>a>span').text())
def test_upcoming(self): def test_upcoming(self):
make_meeting_test_data() make_meeting_test_data(create_interims=True)
url = urlreverse("ietf.meeting.views.upcoming") url = urlreverse("ietf.meeting.views.upcoming")
today = datetime.date.today() today = datetime.date.today()
add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first() add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first()
@ -1504,7 +1504,7 @@ class InterimTests(TestCase):
self.check_interim_tabs(url) self.check_interim_tabs(url)
def test_upcoming_ical(self): def test_upcoming_ical(self):
make_meeting_test_data() make_meeting_test_data(create_interims=True)
url = urlreverse("ietf.meeting.views.upcoming_ical") url = urlreverse("ietf.meeting.views.upcoming_ical")
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
@ -1520,7 +1520,7 @@ class InterimTests(TestCase):
def test_upcoming_json(self): def test_upcoming_json(self):
make_meeting_test_data() make_meeting_test_data(create_interims=True)
url = urlreverse("ietf.meeting.views.upcoming_json") url = urlreverse("ietf.meeting.views.upcoming_json")
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
@ -1884,7 +1884,7 @@ class InterimTests(TestCase):
def test_interim_pending(self): def test_interim_pending(self):
make_meeting_test_data() make_interim_test_data()
url = urlreverse('ietf.meeting.views.interim_pending') url = urlreverse('ietf.meeting.views.interim_pending')
count = len(set(s.meeting_id for s in add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim')).filter(current_status='apprw'))) count = len(set(s.meeting_id for s in add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim')).filter(current_status='apprw')))
@ -1903,7 +1903,7 @@ class InterimTests(TestCase):
def test_can_approve_interim_request(self): def test_can_approve_interim_request(self):
make_meeting_test_data() make_interim_test_data()
# unprivileged user # unprivileged user
user = User.objects.get(username='plain') user = User.objects.get(username='plain')
group = Group.objects.get(acronym='mars') group = Group.objects.get(acronym='mars')
@ -1926,7 +1926,7 @@ class InterimTests(TestCase):
self.assertFalse(can_approve_interim_request(meeting=meeting,user=user)) self.assertFalse(can_approve_interim_request(meeting=meeting,user=user))
def test_can_view_interim_request(self): def test_can_view_interim_request(self):
make_meeting_test_data() make_interim_test_data()
# unprivileged user # unprivileged user
user = User.objects.get(username='plain') user = User.objects.get(username='plain')
group = Group.objects.get(acronym='mars') group = Group.objects.get(acronym='mars')
@ -1971,7 +1971,7 @@ class InterimTests(TestCase):
self.assertFalse(can_manage_group(user=user,group=group)) self.assertFalse(can_manage_group(user=user,group=group))
def test_interim_request_details(self): def test_interim_request_details(self):
make_meeting_test_data() make_interim_test_data()
meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first().meeting meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first().meeting
url = urlreverse('ietf.meeting.views.interim_request_details',kwargs={'number':meeting.number}) url = urlreverse('ietf.meeting.views.interim_request_details',kwargs={'number':meeting.number})
login_testing_unauthorized(self,"secretary",url) login_testing_unauthorized(self,"secretary",url)
@ -2005,7 +2005,7 @@ class InterimTests(TestCase):
self.assertEqual(len(q("a.btn:contains('Announce')")),2) self.assertEqual(len(q("a.btn:contains('Announce')")),2)
def test_interim_request_disapprove(self): def test_interim_request_disapprove(self):
make_meeting_test_data() make_interim_test_data()
meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first().meeting meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first().meeting
url = urlreverse('ietf.meeting.views.interim_request_details',kwargs={'number':meeting.number}) url = urlreverse('ietf.meeting.views.interim_request_details',kwargs={'number':meeting.number})
login_testing_unauthorized(self,"secretary",url) login_testing_unauthorized(self,"secretary",url)
@ -2015,7 +2015,7 @@ class InterimTests(TestCase):
self.assertEqual(session.current_status,'disappr') self.assertEqual(session.current_status,'disappr')
def test_interim_request_cancel(self): def test_interim_request_cancel(self):
make_meeting_test_data() make_interim_test_data()
meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first().meeting meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first().meeting
url = urlreverse('ietf.meeting.views.interim_request_details', kwargs={'number': meeting.number}) url = urlreverse('ietf.meeting.views.interim_request_details', kwargs={'number': meeting.number})
self.client.login(username="marschairman", password="marschairman+password") self.client.login(username="marschairman", password="marschairman+password")
@ -2051,7 +2051,7 @@ class InterimTests(TestCase):
def test_interim_request_edit_no_notice(self): def test_interim_request_edit_no_notice(self):
'''Edit a request. No notice should go out if it hasn't been announced yet''' '''Edit a request. No notice should go out if it hasn't been announced yet'''
make_meeting_test_data() make_interim_test_data()
meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first().meeting meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first().meeting
group = meeting.session_set.first().group group = meeting.session_set.first().group
url = urlreverse('ietf.meeting.views.interim_request_edit', kwargs={'number': meeting.number}) url = urlreverse('ietf.meeting.views.interim_request_edit', kwargs={'number': meeting.number})
@ -2089,7 +2089,7 @@ class InterimTests(TestCase):
def test_interim_request_edit(self): def test_interim_request_edit(self):
'''Edit request. Send notice of change''' '''Edit request. Send notice of change'''
make_meeting_test_data() make_interim_test_data()
meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='sched').first().meeting meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='sched').first().meeting
group = meeting.session_set.first().group group = meeting.session_set.first().group
url = urlreverse('ietf.meeting.views.interim_request_edit', kwargs={'number': meeting.number}) url = urlreverse('ietf.meeting.views.interim_request_edit', kwargs={'number': meeting.number})
@ -2135,7 +2135,7 @@ class InterimTests(TestCase):
return fmt.format(**d) return fmt.format(**d)
def test_interim_request_details_permissions(self): def test_interim_request_details_permissions(self):
make_meeting_test_data() make_interim_test_data()
meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first().meeting meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first().meeting
url = urlreverse('ietf.meeting.views.interim_request_details',kwargs={'number':meeting.number}) url = urlreverse('ietf.meeting.views.interim_request_details',kwargs={'number':meeting.number})
@ -2145,7 +2145,7 @@ class InterimTests(TestCase):
self.assertEqual(r.status_code, 403) self.assertEqual(r.status_code, 403)
def test_send_interim_approval_request(self): def test_send_interim_approval_request(self):
make_meeting_test_data() make_interim_test_data()
meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first().meeting meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='apprw').first().meeting
length_before = len(outbox) length_before = len(outbox)
send_interim_approval_request(meetings=[meeting]) send_interim_approval_request(meetings=[meeting])
@ -2153,7 +2153,7 @@ class InterimTests(TestCase):
self.assertIn('New Interim Meeting Request', outbox[-1]['Subject']) self.assertIn('New Interim Meeting Request', outbox[-1]['Subject'])
def test_send_interim_cancellation_notice(self): def test_send_interim_cancellation_notice(self):
make_meeting_test_data() make_interim_test_data()
meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='sched').first().meeting meeting = add_event_info_to_session_qs(Session.objects.filter(meeting__type='interim', group__acronym='mars')).filter(current_status='sched').first().meeting
length_before = len(outbox) length_before = len(outbox)
send_interim_cancellation_notice(meeting=meeting) send_interim_cancellation_notice(meeting=meeting)
@ -2172,7 +2172,7 @@ class InterimTests(TestCase):
def test_group_ical(self): def test_group_ical(self):
make_meeting_test_data() make_interim_test_data()
meeting = Meeting.objects.filter(type='interim', session__group__acronym='mars').first() meeting = Meeting.objects.filter(type='interim', session__group__acronym='mars').first()
s1 = Session.objects.filter(meeting=meeting, group__acronym="mars").first() s1 = Session.objects.filter(meeting=meeting, group__acronym="mars").first()
a1 = s1.official_timeslotassignment() a1 = s1.official_timeslotassignment()
@ -2260,7 +2260,7 @@ class IphoneAppJsonTests(TestCase):
pass pass
def test_iphone_app_json_interim(self): def test_iphone_app_json_interim(self):
make_meeting_test_data() make_interim_test_data()
meeting = Meeting.objects.filter(type_id='interim').order_by('id').last() meeting = Meeting.objects.filter(type_id='interim').order_by('id').last()
url = urlreverse('ietf.meeting.views.agenda_json',kwargs={'num':meeting.number}) url = urlreverse('ietf.meeting.views.agenda_json',kwargs={'num':meeting.number})
r = self.client.get(url) r = self.client.get(url)