def test_review_volunteer_w_conf(self): ''' when a specific conf has specific bids, check bid details''' volunteer = VolunteerFactory( submitted=True) interest = VolunteerInterestFactory( volunteer=self.volunteer ) volunteer.profile.user_object.email = "*****@*****.**" volunteer.profile.user_object.save() prefs = ProfilePreferencesFactory( profile=volunteer.profile, in_hotel="Maybe", inform_about=True, show_hotel_infobox=True) login_as(self.privileged_user, self) response = self.client.get( self.url, {'conf_slug': self.volunteer.b_conference.conference_slug}) nt.assert_equal(response.status_code, 200) nt.assert_true('Bid Information' in response.content) nt.assert_true(str(self.volunteer.number_shifts) in response.content) nt.assert_true(self.volunteer.background in response.content) nt.assert_true(self.volunteer.profile.display_name in response.content) nt.assert_true(interest.interest.interest in response.content) nt.assert_true( self.volunteer.profile.user_object.email in response.content) nt.assert_true(self.prefs.in_hotel in response.content) nt.assert_true("Needs Review" in response.content) nt.assert_true("Review" in response.content)
def setUp(self): self.client = Client() self.profile = ProfilePreferencesFactory( profile__purchase_email='*****@*****.**').profile self.privileged_user = ProfileFactory().user_object grant_privilege(self.privileged_user, 'Registrar') self.url = reverse('manage_users', urlconf='gbe.urls')
def test_update_profile_no_display_name(self): pref = ProfilePreferencesFactory(profile__display_name="") url = reverse(self.view_name, urlconf='gbe.urls') login_as(pref.profile.user_object, self) response = self.client.get(url) self.assertContains( response, "%s %s" % (pref.profile.user_object.first_name, pref.profile.user_object.last_name))
def test_get(self): profile = self.performer.contact ProfilePreferencesFactory(profile=profile) url = reverse(self.view_name, args=[profile.pk], urlconf="gbe.urls") login_as(self.privileged_user, self) response = self.client.get(url) nt.assert_equal(200, response.status_code)
def test_update_profile_post_invalid_form(self): profile = ProfilePreferencesFactory().profile url = reverse(self.view_name, urlconf='gbe.urls') login_as(profile, self) data = self.get_form(invalid=True) response = self.client.post(url, data=data, follow=True) self.assertTrue("Update Profile" in response.content) self.assertEqual(response.status_code, 200)
def test_post_invalid_form(self): profile = self.performer.contact ProfilePreferencesFactory(profile=profile) url = reverse(self.view_name, args=[profile.pk], urlconf="gbe.urls") data = self.get_form(invalid=True) login_as(self.privileged_user, self) response = self.client.post(url, data=data) self.assertContains(response, 'There is an error on the form.')
def test_update_profile_how_heard(self): pref = ProfilePreferencesFactory( profile__how_heard="[u'Word of mouth']") url = reverse(self.view_name, urlconf='gbe.urls') login_as(pref.profile.user_object, self) response = self.client.get(url) self.assertTrue( '<input checked="checked" id="id_how_heard_6" name="how_heard" ' + 'type="checkbox" value="Word of mouth" />' in response.content)
def setUp(self): self.client = Client() self.profile = ProfilePreferencesFactory( profile__purchase_email='*****@*****.**').profile self.troupe = TroupeFactory(contact=self.profile) self.member = PersonaFactory() self.troupe.membership.add(self.member) self.privileged_user = ProfileFactory().user_object grant_privilege(self.privileged_user, 'Registrar') self.url = reverse(self.view_name, urlconf='gbe.urls')
def test_create_bad_profile(self): url = reverse(self.view_name, urlconf='gbe.urls') cptn_tinypants = ProfileFactory(display_name="", phone="") ProfilePreferencesFactory(profile=cptn_tinypants) login_as(cptn_tinypants.user_object, self) response = self.client.get(url, follow=True) self.assertRedirects( response, "%s?next=%s" % (reverse('profile_update', urlconf='gbe.urls'), url)) assert_alert_exists(response, 'warning', 'Warning', no_profile_msg)
def test_post_invalid_form(self): profile = self.performer.contact ProfilePreferencesFactory(profile=profile) url = reverse(self.view_name, args=[profile.pk], urlconf="gbe.urls") data = self.get_form(invalid=True) login_as(self.privileged_user, self) response = self.client.post(url, data=data) nt.assert_true('Your Profile' in response.content) nt.assert_equal(200, response.status_code)
def test_post_form_edit_exclude_unsubscribed(self): new_volunteer = ProfileFactory() data = self.get_edit_data() data['worker'] = new_volunteer.pk, data['role'] = 'Producer', ProfilePreferencesFactory(profile=new_volunteer, send_schedule_change_notifications=False) login_as(self.privileged_profile, self) response = self.client.post(self.url, data=data, follow=True) self.assertEqual(0, len(mail.outbox))
def test_update_profile_how_heard(self): pref = ProfilePreferencesFactory( profile__how_heard="[u'Word of mouth']") url = reverse(self.view_name, urlconf='gbe.urls') login_as(pref.profile.user_object, self) response = self.client.get(url) self.assertContains( response, '<input type="checkbox" name="how_heard" value="Word of mouth" ' + 'id="id_how_heard_6" checked />', html=True)
def test_post_valid_form(self): profile = self.performer.contact ProfilePreferencesFactory(profile=profile) url = reverse(self.view_name, args=[profile.pk], urlconf="gbe.urls") data = self.get_form() login_as(self.privileged_user, self) response = self.client.post(url, data=data, follow=True) nt.assert_true(('http://testserver/profile/manage', 302) in response.redirect_chain) nt.assert_equal(200, response.status_code)
def test_pick_everyone_except_unsubscribed(self): ProfilePreferencesFactory(profile=self.context.teacher.contact, send_bid_notifications=False) login_as(self.privileged_profile, self) data = { 'everyone': "Everyone", } response = self.client.post(self.url, data=data, follow=True) self.assertNotContains(response, self.context.teacher.contact.user_object.email) self.assertContains(response, group_filter_note)
def test_pick_everyone(self): second_context = ClassContext() ProfilePreferencesFactory(profile=second_context.teacher.contact) login_as(self.privileged_profile, self) data = { 'everyone': "Everyone", } response = self.client.post(self.url, data=data, follow=True) for user in User.objects.exclude(username="******"): self.assertContains(response, user.email)
def test_exclude_unsubscribed(self): ProfilePreferencesFactory(profile=self.context.teacher.contact, send_role_notifications=False) login_as(self.privileged_profile, self) data = { 'email-select-conference': [self.context.conference.pk], 'email-select-roles': self.role_list, 'filter': True, } response = self.client.post(self.url, data=data, follow=True) self.assertNotContains(response, self.context.teacher.contact.user_object.email)
def __init__(self, profile=None, bid=None, event=None, opportunity=None, role=None): if not event: self.window = VolunteerWindowFactory() self.conference = self.window.day.conference else: self.conference = event.e_conference if not VolunteerWindow.objects.filter( day__conference=self.conference).exists(): self.window = VolunteerWindowFactory( day__conference=self.conference) else: self.window = VolunteerWindow.objects.all().first() self.conf_day = self.window.day self.profile = profile or ProfileFactory() if not hasattr(self.profile, 'preferences'): ProfilePreferencesFactory(profile=self.profile) if bid is False: self.bid = None elif bid: self.bid = bid self.profile = self.bid.profile else: self.bid = VolunteerFactory( b_conference=self.conference, profile=self.profile) self.interest = VolunteerInterestFactory( volunteer=self.bid) self.event = event or ShowFactory( e_conference=self.conference) self.role = role or "Volunteer" self.room = RoomFactory() self.sched_event = SchedEventFactory( eventitem=self.event.eventitem_ptr, starttime=datetime.combine(self.window.day.day, self.window.start)) ResourceAllocationFactory( event=self.sched_event, resource=LocationFactory(_item=self.room)) EventLabelFactory(event=self.sched_event, text="General") EventLabelFactory(event=self.sched_event, text=self.conference.conference_slug) self.worker = WorkerFactory(_item=self.profile.workeritem, role=self.role) self.opportunity, self.opp_event = self.add_opportunity(opportunity) self.allocation = ResourceAllocationFactory(resource=self.worker, event=self.opp_event)
def post_profile(self, redirect=None, form=None): profile = ProfilePreferencesFactory().profile url = reverse(self.view_name, urlconf='gbe.urls') if redirect: url = url + "?next=" + redirect login_as(profile, self) if not form: data = self.get_form() else: data = form response = self.client.post(url, data=data, follow=True) return response
def test_exclude_unsubscribed(self): start_time = datetime.combine( datetime.now().date() + timedelta(days=1), time(0, 0, 0, 0)) context = ClassContext(starttime=start_time) ProfilePreferencesFactory(profile=context.teacher.contact, send_daily_schedule=False) num = schedule_email() self.assertEqual(0, num) queued_email = Email.objects.filter( status=2, subject=self.subject, from_email=settings.DEFAULT_FROM_EMAIL, ) self.assertEqual(queued_email.count(), 0)
def test_post_valid_form(self): profile = self.performer.contact ProfilePreferencesFactory(profile=profile) url = "%s?next=%s" % (reverse( self.view_name, args=[profile.pk], urlconf="gbe.urls"), reverse('manage_users', urlconf='gbe.urls')) data = self.get_form() login_as(self.privileged_user, self) response = self.client.post(url, data=data, follow=True) self.assertRedirects(response, reverse('manage_users', urlconf='gbe.urls')) self.assertContains(response, "Updated Profile: %s" % data['display_name'])
def test_obey_email_preference(self): incomplete_act_context = ActTechInfoContext() incomplete_act_context.act.accepted = 3 incomplete_act_context.act.save() act = incomplete_act_context.act ProfilePreferencesFactory(profile=act.performer.contact, send_schedule_change_notifications=False) call_command("send_tech_reminder") queued_email = Email.objects.filter( status=2, subject="Reminder to Finish your Act Tech Info", from_email=settings.DEFAULT_FROM_EMAIL, ) self.assertEqual(queued_email.count(), 0)
def test_draft_exclude_unsubscribed(self): second_bid = ClassFactory() ProfilePreferencesFactory(profile=second_bid.teacher.contact, send_bid_notifications=False) login_as(self.privileged_profile, self) data = { 'email-select-conference': [self.context.conference.pk], 'email-select-bid_type': self.priv_list, 'email-select-state': [0, 1, 2, 3, 4, 5], 'filter': True, } response = self.client.post(self.url, data=data, follow=True) self.assertNotContains(response, second_bid.teacher.contact.user_object.email)
def test_get(self): profile = self.performer.contact ProfilePreferencesFactory(profile=profile) url = reverse(self.view_name, args=[profile.pk], urlconf="gbe.urls") login_as(self.privileged_user, self) response = self.client.get(url) self.assertContains( response, '<input type="submit" value="Update User Account" ' + 'class="btn gbe-btn-primary">', html=True) self.assertContains(response, admin_note) self.assertContains(response, "<title>Update User Profile</title")
def test_volunteer_changestate_gives_overbook_warning(self): ProfilePreferencesFactory(profile=self.volunteer.profile) context = VolunteerContext( profile=self.volunteer.profile) x, opp = context.add_opportunity() url = reverse(self.view_name, args=[self.volunteer.pk], urlconf='gbe.urls') login_as(self.privileged_user, self) data = {'conference': context.conference, 'events': [opp.pk], 'accepted': 3} response = self.client.post(url, data=data, follow=True) self.assertContains(response, "SCHEDULE_CONFLICT")
def setUp(self): self.client = Client() self.performer = PersonaFactory() self.privileged_profile = ProfileFactory() self.privileged_user = self.privileged_profile.user_object grant_privilege(self.privileged_user, 'Volunteer Reviewers') self.volunteer = VolunteerFactory( submitted=True, profile__user_object__email="*****@*****.**") self.prefs = ProfilePreferencesFactory( profile=self.volunteer.profile, in_hotel="Maybe", inform_about=True, show_hotel_infobox=True) self.url = reverse(self.view_name, urlconf='gbe.urls')
def edit_volunteer(self, rank=5): clear_conferences() pref = ProfilePreferencesFactory() context = VolunteerContext(profile=pref.profile) add_window = context.add_window() url = reverse('volunteer_edit', urlconf='gbe.urls', args=[context.bid.pk]) login_as(self.privileged_user, self) form = self.get_form(context, rank=rank) form['unavailable_windows'] = add_window.pk response = self.client.post( url, form, follow=True) return response, context
def test_update_profile_email_settings(self): pref = ProfilePreferencesFactory(send_bid_notifications=False) url = reverse(self.view_name, urlconf='gbe.urls') login_as(pref.profile.user_object, self) response = self.client.get(url) self.assertContains( response, '<input type="checkbox" name="email_pref-send_daily_schedule" ' + 'id="id_email_pref-send_daily_schedule" checked />', html=True) self.assertContains( response, '<input type="checkbox" name="email_pref-send_bid_notifications"' + ' id="id_email_pref-send_bid_notifications" />', html=True) self.assertContains(response, email_pref_note.replace("'", "'"))
def test_volunteer_withdraw_sends_notification_fail(self): ProfilePreferencesFactory(profile=self.volunteer.profile) EmailTemplateSenderFactory( from_email="*****@*****.**", template__name='volunteer withdrawn', template__subject="test template {% url 'gbehome' %}" ) url = reverse(self.view_name, args=[self.volunteer.pk], urlconf='gbe.urls') login_as(self.privileged_user, self) data = {'conference': self.volunteer.b_conference, 'events': [], 'accepted': 4} response = self.client.post(url, data=data, follow=True) self.assertContains(response, bidder_email_fail_msg)
def test_dont_send_today(self): EmailFrequency.objects.all().delete() incomplete_act_context = ActTechInfoContext() incomplete_act_context.act.accepted = 3 incomplete_act_context.act.save() act = incomplete_act_context.act ProfilePreferencesFactory(profile=act.performer.contact) out = StringIO() call_command("send_tech_reminder", stdout=out) queued_email = Email.objects.filter( status=2, subject="Reminder to Finish your Act Tech Info", from_email=settings.DEFAULT_FROM_EMAIL, ) self.assertEqual(queued_email.count(), 0) response = out.getvalue() self.assertIn('Today is day %s, and not a scheduled day.' % ( day_of_week[datetime.now().weekday()][1]), response)
def test_volunteer_changestate_gives_event_over_full_warning(self): ProfilePreferencesFactory(profile=self.volunteer.profile) context = StaffAreaContext( conference=self.volunteer.b_conference, ) opp = context.add_volunteer_opp() context.book_volunteer( volunteer_sched_event=opp, volunteer=context.staff_lead) url = reverse(self.view_name, args=[self.volunteer.pk], urlconf='gbe.urls') login_as(self.privileged_user, self) data = {'conference': self.volunteer.b_conference, 'events': [opp.pk], 'accepted': 3} response = self.client.post(url, data=data, follow=True) self.assertContains(response, "OCCURRENCE_OVERBOOKED")