def test_vol_opp_present(self): vol_context = VolunteerContext() vol_context.sched_event.max_volunteer = 7 vol_context.sched_event.save() vol_context.opp_event.set_locations([]) grant_privilege(self.privileged_user, 'Volunteer Coordinator') login_as(self.privileged_user, self) self.url = reverse(self.view_name, args=[ vol_context.conference.conference_slug, vol_context.sched_event.pk ], urlconf='gbe.scheduling.urls') response = self.client.get(self.url, follow=True) self.assertContains( response, 'type="hidden" name="opp_event_id" value="%d"' % (vol_context.opportunity.pk)) self.assertContains( response, 'type="hidden" name="opp_sched_id" value="%d"' % (vol_context.opp_event.pk)) assert_option_state(response, vol_context.conf_day.pk, vol_context.conf_day.day.strftime("%b. %-d, %Y"), True) self.assertContains(response, 'name="max_volunteer" value="2"') self.assertContains(response, 'name="duration" value="1.0"') self.assertContains(response, "Display Staff", 2)
def test_authorized_user_get_default_room_preset(self): room = self.context.get_room() self.context.area.default_location = room self.context.area.save() login_as(self.privileged_user, self) response = self.client.get(self.url) self.assert_good_mode_form(response, self.context.area.title) assert_option_state(response, room.pk, room.name, True)
def test_edit_no_music_rehearsal_ready(self): context = ActTechInfoContext(schedule_rehearsal=True) context.tech.confirm_no_music = True context.tech.save() url = reverse(self.view_name, urlconf='gbe.urls', args=[context.act.pk]) login_as(context.performer.contact, self) response = self.client.get(url) assert_option_state(response, "1", "No, I will not need an audio track", True)
def test_authorized_user_can_access(self): login_as(self.privileged_user, self) response = self.client.get(self.url) self.assertEqual(response.status_code, 200) self.assertNotContains(response, "Volunteer Management") self.assertContains(response, "Edit Staff Area Details") self.assertContains(response, self.context.area.title) self.assertContains(response, self.context.area.description) assert_option_state(response, self.context.staff_lead.profile.pk, str(self.context.staff_lead.profile), True) self.assertContains(response, 'name="default_volunteers" value="7"')
def check_second_stage(self, response, title, selected_rehearsal): self.assertContains(response, "Change Rehearsal") assert_option_state( response, str(selected_rehearsal.id), date_format(selected_rehearsal.starttime, "TIME_FORMAT"), True) self.assertContains(response, "Provide Technical Information") self.assertContains(response, title) self.assertContains( response, "Current Rehearsal Reservation: %s, at %s" % (str(selected_rehearsal), selected_rehearsal.starttime.strftime(GBE_DATETIME_FORMAT)))
def test_authorized_user_can_also_get_volunteer_mgmt(self): grant_privilege(self.privileged_user, 'Volunteer Coordinator') login_as(self.privileged_user, self) response = self.client.get(self.url, follow=True) self.assertEqual(response.status_code, 200) self.assertContains(response, "Volunteer Management") self.assertContains(response, "Save and Continue") assert_option_state(response, self.context.conf_day.pk, self.context.conf_day.day.strftime("%b. %-d, %Y"), True) self.assertContains(response, 'name="new_opp-max_volunteer" value="7"') self.assertContains(response, 'name="new_opp-duration" value="1.5"')
def test_authorized_user_get_w_child_events(self): target_event = VolunteerContext() self.context.add_opportunity() login_as(self.privileged_user, self) response = self.client.get(self.url) self.assert_good_mode_form( response, target_event.event.e_title, target_event.sched_event.start_time) assert_option_state( response, target_event.room.pk, target_event.room.name)
def test_edit_event_and_continue(self): grant_privilege(self.privileged_user, 'Volunteer Coordinator') login_as(self.privileged_user, self) data = self.edit_event() data['edit_event'] = "Save and Continue" response = self.client.post( self.url, data=data, follow=True) self.assertRedirects( response, "%s?worker_open=True" % self.url) assert_alert_exists( response, 'success', 'Success', 'Occurrence has been updated.<br>%s, Start Time: %s 11:00 AM' % ( data['e_title'], self.extra_day.day.strftime(GBE_DATE_FORMAT)) ) self.assertContains(response, data['e_title']) self.assertContains(response, data['e_description']) assert_option_state( response, self.extra_day.pk, self.extra_day.day.strftime(GBE_DATE_FORMAT), True) self.assertContains( response, '<input type="number" name="max_volunteer" value="3" min="0" ' + 'required id="id_max_volunteer">', html=True) self.assertContains( response, '<input type="number" name="duration" value="2.5" min="0.5" ' + 'max="12" step="any" required id="id_duration" />', html=True) self.assertContains( response, '<input type="checkbox" name="approval" ' + 'id="id_approval" checked />', html=True) self.assertContains( response, '<option value="%d">%s - %s</option>' % ( self.context.sched_event.pk, self.context.event.e_title, self.context.sched_event.start_time.strftime( GBE_DATETIME_FORMAT)), html=True)
def test_edit_act_techinfo_rehearsal_ready(self): context = ActTechInfoContext() rehearsal = context._schedule_rehearsal(context.sched_event) url = reverse(self.view_name, urlconf='gbe.urls', args=[context.act.pk]) login_as(context.performer.contact, self) response = self.client.get(url) self.assertContains(response, "Set Rehearsal Time") assert_option_state(response, str(rehearsal.id), date_format(rehearsal.starttime, "TIME_FORMAT"), True) self.assertNotContains(response, "Provide Technical Information") self.assertNotContains(response, 'Advanced Technical Information (Optional)')
def test_edit_area_and_continue(self): grant_privilege(self.privileged_user, 'Volunteer Coordinator') login_as(self.privileged_user, self) data = self.edit_area() data['edit_event'] = "Save and Continue" response = self.client.post(self.url, data=data, follow=True) self.assertRedirects(response, "%s?volunteer_open=True" % self.url) assert_alert_exists( response, 'success', 'Success', 'Staff Area has been updated.<br>Title: %s' % (data['title'])) self.assertContains(response, data['title']) self.assertContains(response, data['description']) assert_option_state(response, self.privileged_user.profile.pk, str(self.privileged_user.profile), True) self.assertContains(response, 'name="default_volunteers" value="3"')
def test_authorized_user_can_access_event(self): login_as(self.privileged_user, self) response = self.client.get(self.url) self.assertEqual(response.status_code, 200) self.assert_role_choice(response, "Staff Lead") self.assertNotContains(response, "Volunteer Management") self.assertContains(response, "Finish") self.assertContains(response, self.context.event.e_title) self.assertContains(response, self.context.event.e_description) assert_option_state( response, self.context.conf_day.pk, self.context.conf_day.day.strftime(GBE_DATE_FORMAT), True) self.assertContains(response, 'name="max_volunteer" value="7"') self.assertContains(response, 'name="duration" value="1.5"') assert_option_state(response, self.staff_lead.pk, str(self.staff_lead), True)
def test_edit_event_and_continue(self): grant_privilege(self.privileged_user, 'Volunteer Coordinator') login_as(self.privileged_user, self) data = self.edit_event() data['edit_event'] = "Save and Continue" response = self.client.post(self.url, data=data, follow=True) self.assertRedirects(response, "%s?volunteer_open=True" % self.url) assert_alert_exists( response, 'success', 'Success', 'Occurrence has been updated.<br>%s, Start Time: %s 11:00 AM' % (data['e_title'], self.extra_day.day.strftime(GBE_DATE_FORMAT))) self.assertContains(response, data['e_title']) self.assertContains(response, data['e_description']) assert_option_state(response, self.extra_day.pk, self.extra_day.day.strftime(GBE_DATE_FORMAT), True) self.assertContains(response, 'name="max_volunteer" value="3"') self.assertContains(response, 'name="duration" value="2.5"')
def test_edit_act_techinfo_with_rehearsal(self): context = ActTechInfoContext(schedule_rehearsal=True) url = reverse(self.view_name, urlconf='gbe.urls', args=[context.act.pk]) login_as(context.performer.contact, self) response = self.client.get(url) assert_option_state( response, str(context.rehearsal.id), date_format(context.rehearsal.starttime, "TIME_FORMAT"), True) self.check_second_stage(response, context.act.tech.track_title, context.rehearsal) self.assertContains(response, 'name="%d-booking_id"' % context.sched_event.pk) assert_option_state(response, "0", "Yes, I will upload an audio track", True) self.assertNotContains(response, 'Advanced Technical Information (Optional)')
def test_authorized_user_get_right_rooms(self): not_this_room = RoomFactory() login_as(self.privileged_user, self) self.url = reverse( self.view_name, args=[self.context.opp_event.pk], urlconf='gbe.scheduling.urls') response = self.client.get(self.url) self.assertEqual(response.status_code, 200) self.assertContains( response, self.context.conf_day.day.strftime(GBE_DATE_FORMAT)) self.assertNotContains(response, not_this_room.name) assert_option_state( response, self.context.room.pk, self.context.room.name, True)
def test_vol_is_booked(self): grant_privilege(self.privileged_user, 'Volunteer Coordinator') login_as(self.privileged_user, self) response = self.client.get(self.url, follow=True) self.assert_hidden_value( response, "id_alloc_id", "alloc_id", self.context.allocation.pk) assert_option_state( response, self.context.profile.pk, self.context.profile.display_name, True) self.assertContains( response, '<option value="Volunteer" selected>Volunteer</option>', 2)
def test_vol_opp_present(self): self.context.area.default_room = self.room self.context.area.save() vol_opp = self.context.add_volunteer_opp() self.extra_day = ConferenceDayFactory( conference=self.context.conference, day=self.context.conf_day.day + timedelta(days=1)) grant_privilege(self.privileged_user, 'Volunteer Coordinator') login_as(self.privileged_user, self) response = self.client.get(self.url, follow=True) self.assertContains( response, 'name="opp_event_id" value="%d"' % (vol_opp.eventitem.event_id)) self.assertContains(response, 'name="opp_sched_id" value="%d"' % (vol_opp.pk)) assert_option_state(response, self.context.conf_day.pk, self.context.conf_day.day.strftime("%b. %-d, %Y"), True) self.assertContains(response, 'name="max_volunteer" value="7"') self.assertContains(response, "Display Staff", 2)
def test_book_no_rehearsal_and_continue(self): context = ActTechInfoContext(schedule_rehearsal=True) context.act.tech.save() url = reverse(self.view_name, urlconf='gbe.urls', args=[context.act.pk]) login_as(context.performer.contact, self) data = {'book_continue': "Book & Continue"} data['%d-rehearsal' % context.sched_event.pk] = -1 alloc = ResourceAllocation.objects.get( event=context.rehearsal, ordering__class_id=context.act.pk) data['%d-booking_id' % context.sched_event.pk] = alloc.pk response = self.client.post(url, data) assert_alert_exists(response, 'success', 'Success', rehearsal_remove_confirmation) self.assertNotContains(response, "Current Rehearsal Reservation") self.assertContains(response, 'name="%d-booking_id"' % context.sched_event.pk) self.assertContains(response, "Provide Technical Information") assert_option_state(response, "-1", "No rehearsal needed", True)
def test_edit_act_techinfo_w_prop_settings(self): context = ActTechInfoContext(schedule_rehearsal=True) context.act.tech.prop_setup = "[u'I have props I will need set " + \ "before my number']" context.act.tech.save() url = reverse(self.view_name, urlconf='gbe.urls', args=[context.act.pk]) login_as(context.performer.contact, self) response = self.client.get(url) assert_option_state( response, str(context.rehearsal.id), date_format(context.rehearsal.starttime, "TIME_FORMAT"), True) self.check_second_stage(response, context.act.tech.track_title, context.rehearsal) self.assertContains( response, '<input type="checkbox" name="prop_setup" value="I have props ' 'I will need set before my number" ' 'id="id_prop_setup_1" checked />', html=True)
def test_authorized_user_get_w_child_events_special(self): original_event = GenericEventFactory(type='Special') target_event = GenericEventFactory(type='Special') target_context = VolunteerContext(event=target_event) original_context = VolunteerContext(event=original_event) original_context.add_opportunity() url = reverse( self.view_name, args=[original_context.sched_event.pk], urlconf='gbe.scheduling.urls') login_as(self.privileged_user, self) response = self.client.get(url) self.assert_good_mode_form( response, target_context.event.e_title, target_context.sched_event.start_time) assert_option_state( response, target_context.room.pk, target_context.room.name) self.assertContains(response, target_event.e_title)
def test_authorized_user_can_access_event_w_parent(self): login_as(self.privileged_user, self) response = self.client.get(self.url) self.assertEqual(response.status_code, 200) self.assertNotContains(response, "Manage Volunteers") self.assertContains(response, "Finish") self.assertContains(response, self.context.opportunity.e_title) self.assertContains(response, self.context.opportunity.e_description) self.assertContains( response, '<option value="%d" selected>%s - %s</option>' % ( self.context.sched_event.pk, self.context.event.e_title, self.context.sched_event.start_time.strftime( GBE_DATETIME_FORMAT)), html=True) assert_option_state( response, self.context.conf_day.pk, self.context.conf_day.day.strftime(GBE_DATE_FORMAT), True)
def test_book_rehearsal_and_continue(self): context = ActTechInfoContext(schedule_rehearsal=True) context.act.tech.prop_setup = "[u'I have props I will need set " + \ "before my number']" context.act.tech.save() extra_rehearsal = context._schedule_rehearsal(context.sched_event) extra_rehearsal.starttime = extra_rehearsal.starttime - timedelta( hours=1) extra_rehearsal.save() url = reverse(self.view_name, urlconf='gbe.urls', args=[context.act.pk]) login_as(context.performer.contact, self) data = {'book_continue': "Book & Continue"} data['%d-rehearsal' % context.sched_event.pk] = extra_rehearsal.pk alloc = ResourceAllocation.objects.get( event=context.rehearsal, ordering__class_id=context.act.pk) data['%d-booking_id' % context.sched_event.pk] = alloc.pk response = self.client.post(url, data) success_msg = "%s Rehearsal Name: %s, Start Time: %s" % ( default_rehearsal_booked, str(extra_rehearsal), extra_rehearsal.starttime.strftime(GBE_DATETIME_FORMAT)) assert_alert_exists(response, 'success', 'Success', success_msg) self.assertContains(response, 'name="%d-booking_id"' % context.sched_event.pk) self.check_second_stage(response, context.act.tech.track_title, extra_rehearsal) self.assertContains( response, '<input type="checkbox" name="prop_setup" value="I have props ' 'I will need set before my number" ' 'id="id_prop_setup_1" checked />', html=True) alloc = ResourceAllocation.objects.filter( ordering__class_id=context.act.pk) self.assertEqual(alloc.count(), 2) assert_option_state(response, "0", "Yes, I will upload an audio track", True) self.assertNotContains(response, 'Advanced Technical Information (Optional)')
def assert_post_contents(self, response, volunteer_opp, volunteer, alloc, notes, role="Volunteer", allocations=2): if volunteer == -1: assert_option_state(response, "", "---------", True) else: assert_option_state(response, str(volunteer.pk), str(volunteer), True) assert_option_state(response, role, role, True) self.assertContains(response, '<input type="hidden" name="alloc_id" value="' + str(alloc.pk) + '" id="id_alloc_id" />', html=True) self.assertContains(response, '<input type="text" name="label" value="' + notes + '" maxlength="100" id="id_label" />', html=True) self.assertContains( response, '<form method="POST" action="%s' % (reverse('manage_workers', urlconf='gbe.scheduling.urls', args=[ volunteer_opp.eventitem.e_conference.conference_slug, volunteer_opp.pk ])))
def test_book_rehearsal_and_continue_no_music(self): context = ActTechInfoContext(schedule_rehearsal=True) context.act.tech.prop_setup = "[u'I have props I will need set " + \ "before my number']" context.act.tech.confirm_no_music = True context.act.tech.save() extra_rehearsal = context._schedule_rehearsal(context.sched_event) extra_rehearsal.starttime = extra_rehearsal.starttime - timedelta( hours=1) extra_rehearsal.save() url = reverse(self.view_name, urlconf='gbe.urls', args=[context.act.pk]) login_as(context.performer.contact, self) data = {'book_continue': "Book & Continue"} data['%d-rehearsal' % context.sched_event.pk] = extra_rehearsal.pk alloc = ResourceAllocation.objects.get( event=context.rehearsal, ordering__class_id=context.act.pk) data['%d-booking_id' % context.sched_event.pk] = alloc.pk response = self.client.post(url, data) assert_option_state(response, "1", "No, I will not need an audio track", True)
def test_get_advanced(self): context = ActTechInfoContext(schedule_rehearsal=True) context.act.tech.confirm_no_music = True context.act.tech.mic_choice = mic_options[2][0] context.act.tech.prop_setup = "[u'I have props I will need set " + \ "before my number']" context.act.tech.feel_of_act = "feel" context.act.tech.starting_position = "Onstage" context.act.tech.primary_color = "Red" context.act.tech.pronouns = "Me/Myself" context.act.tech.duration = timedelta(minutes=2) context.act.tech.introduction_text = "Yo this is an intro" context.act.tech.start_blackout = True context.act.tech.end_blackout = True context.act.tech.special_lighting_cue = "so special!" context.act.tech.save() url = reverse(self.view_name, urlconf='gbe.urls', args=[context.act.pk]) login_as(context.performer.contact, self) response = self.client.get(url) self.assertContains(response, 'Advanced Technical Information (Optional)') assert_option_state( response, str(context.rehearsal.id), date_format(context.rehearsal.starttime, "TIME_FORMAT"), True) self.assertContains(response, 'name="%d-booking_id"' % context.sched_event.pk) self.assertContains(response, '<input type="checkbox" name="start_blackout" ' + 'id="id_start_blackout" checked />', html=True) self.assertContains(response, '<input type="checkbox" name="end_blackout" ' + 'id="id_end_blackout" checked />', html=True) self.assertContains(response, "so special!") assert_option_state(response, mic_options[2][0], mic_options[2][1], True)
def test_create_area_w_all_vals_and_continue(self): grant_privilege(self.privileged_user, 'Volunteer Coordinator') login_as(self.privileged_user, self) data = self.edit_area() data['default_volunteers'] = 3 data['staff_lead'] = self.privileged_user.profile.pk data['default_location'] = self.room.pk data['set_event'] = "More..." response = self.client.post(self.url, data=data, follow=True) new_area = StaffArea.objects.get(slug=data['slug'], conference=self.current_conference) self.assertRedirects( response, "%s?start_open=False" % reverse('edit_staff', urlconf='gbe.scheduling.urls', args=[new_area.id])) assert_alert_exists( response, 'success', 'Success', 'Staff area has been created.<br>Title: %s' % (data['title'])) assert_option_state(response, self.room.pk, str(self.room), True) assert_option_state(response, self.privileged_user.profile.pk, str(self.privileged_user.profile), True) self.assertContains(response, 'name="default_volunteers" value="3"')
def test_review_special_role_already_cast(self): context = ActTechInfoContext(act_role="Hosted by...") response = self.get_act_w_roles(context.act) self.assertEqual(response.status_code, 200) assert_option_state(response, "Hosted by...", "Hosted by...", True)
def test_review_default_role_present(self): response = self.get_act_w_roles(self.act) self.assertEqual(response.status_code, 200) assert_option_state(response, "Regular Act", "Regular Act", False) assert_option_state(response, "Hosted by...", "Hosted by...", False)