Merged in [18021] from rjsparks@nostrum.com:

A little less waste creating meeting/interim test data.
 - Legacy-Id: 18024
Note: SVN reference [18021] has been migrated to Git commit ba41f9ba95
This commit is contained in:
Henrik Levkowetz 2020-06-22 13:18:12 +00:00
commit 66d2fd8604
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.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,
ResourceAssociation, SessionPresentation, UrlResource, SchedulingEvent)
from ietf.meeting.helpers import create_interim_meeting
from ietf.name.models import RoomResourceName
from ietf.person.factories import PersonFactory
from ietf.person.models import Person
from ietf.utils.test_data import make_test_data
@ -67,7 +69,7 @@ def make_interim_meeting(group,date,status='sched'):
#
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'):
make_test_data()
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)
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=date2,status='apprw')
make_interim_meeting(group=ames,date=date,status='canceled')
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_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.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 add_event_info_to_session_qs
from ietf.meeting.views import session_draft_list
@ -1400,7 +1400,7 @@ class InterimTests(TestCase):
self.client.logout()
def test_interim_announce(self):
make_meeting_test_data()
make_interim_test_data()
url = urlreverse("ietf.meeting.views.interim_announce")
meeting = Meeting.objects.filter(type='interim', session__group__acronym='mars').first()
session = meeting.session_set.first()
@ -1431,7 +1431,7 @@ class InterimTests(TestCase):
self.assertEqual(len(outbox), len_before)
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.time_zone = 'America/Los_Angeles'
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]))
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
url = urlreverse('ietf.meeting.views.interim_request_details', kwargs={'number': meeting.number})
length_before = len(outbox)
@ -1465,7 +1465,7 @@ class InterimTests(TestCase):
self.assertIn('ready for announcement', outbox[-1]['Subject'])
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
url = urlreverse('ietf.meeting.views.interim_request_details', kwargs={'number': meeting.number})
login_testing_unauthorized(self, "secretary", url)
@ -1488,7 +1488,7 @@ class InterimTests(TestCase):
self.assertIn('CANCELLED', q('tr>td>a>span').text())
def test_upcoming(self):
make_meeting_test_data()
make_meeting_test_data(create_interims=True)
url = urlreverse("ietf.meeting.views.upcoming")
today = datetime.date.today()
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)
def test_upcoming_ical(self):
make_meeting_test_data()
make_meeting_test_data(create_interims=True)
url = urlreverse("ietf.meeting.views.upcoming_ical")
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
@ -1520,7 +1520,7 @@ class InterimTests(TestCase):
def test_upcoming_json(self):
make_meeting_test_data()
make_meeting_test_data(create_interims=True)
url = urlreverse("ietf.meeting.views.upcoming_json")
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
@ -1884,7 +1884,7 @@ class InterimTests(TestCase):
def test_interim_pending(self):
make_meeting_test_data()
make_interim_test_data()
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')))
@ -1903,7 +1903,7 @@ class InterimTests(TestCase):
def test_can_approve_interim_request(self):
make_meeting_test_data()
make_interim_test_data()
# unprivileged user
user = User.objects.get(username='plain')
group = Group.objects.get(acronym='mars')
@ -1926,7 +1926,7 @@ class InterimTests(TestCase):
self.assertFalse(can_approve_interim_request(meeting=meeting,user=user))
def test_can_view_interim_request(self):
make_meeting_test_data()
make_interim_test_data()
# unprivileged user
user = User.objects.get(username='plain')
group = Group.objects.get(acronym='mars')
@ -1971,7 +1971,7 @@ class InterimTests(TestCase):
self.assertFalse(can_manage_group(user=user,group=group))
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
url = urlreverse('ietf.meeting.views.interim_request_details',kwargs={'number':meeting.number})
login_testing_unauthorized(self,"secretary",url)
@ -2005,7 +2005,7 @@ class InterimTests(TestCase):
self.assertEqual(len(q("a.btn:contains('Announce')")),2)
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
url = urlreverse('ietf.meeting.views.interim_request_details',kwargs={'number':meeting.number})
login_testing_unauthorized(self,"secretary",url)
@ -2015,7 +2015,7 @@ class InterimTests(TestCase):
self.assertEqual(session.current_status,'disappr')
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
url = urlreverse('ietf.meeting.views.interim_request_details', kwargs={'number': meeting.number})
self.client.login(username="marschairman", password="marschairman+password")
@ -2051,7 +2051,7 @@ class InterimTests(TestCase):
def test_interim_request_edit_no_notice(self):
'''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
group = meeting.session_set.first().group
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):
'''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
group = meeting.session_set.first().group
url = urlreverse('ietf.meeting.views.interim_request_edit', kwargs={'number': meeting.number})
@ -2135,7 +2135,7 @@ class InterimTests(TestCase):
return fmt.format(**d)
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
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)
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
length_before = len(outbox)
send_interim_approval_request(meetings=[meeting])
@ -2153,7 +2153,7 @@ class InterimTests(TestCase):
self.assertIn('New Interim Meeting Request', outbox[-1]['Subject'])
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
length_before = len(outbox)
send_interim_cancellation_notice(meeting=meeting)
@ -2172,7 +2172,7 @@ class InterimTests(TestCase):
def test_group_ical(self):
make_meeting_test_data()
make_interim_test_data()
meeting = Meeting.objects.filter(type='interim', session__group__acronym='mars').first()
s1 = Session.objects.filter(meeting=meeting, group__acronym="mars").first()
a1 = s1.official_timeslotassignment()
@ -2260,7 +2260,7 @@ class IphoneAppJsonTests(TestCase):
pass
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()
url = urlreverse('ietf.meeting.views.agenda_json',kwargs={'num':meeting.number})
r = self.client.get(url)