def test_send_mail_to_all_attendees(self): mail.outbox = [] self.client.login(username=settings.ADMINUSER_EMAIL, password="******") attendee_testutils.create_test_user("*****@*****.**") user, _ = attendee_testutils.create_test_user("*****@*****.**") user.contact_permission_date = timezone.now() user.save() user, _ = attendee_testutils.create_test_user("*****@*****.**") Attendee.objects.create(user=user, event=Event.objects.current_event()) r = self.client.post( self.url, data={ "recipients": "users", "subject": "a message to all users", "body": "<p>a single sentence as the <b>message</b>.", "sendreal": "", }, ) self.assertEqual(len(mail.outbox), 1, "should have one message") msg = mail.outbox[0] self.assertNotIn(settings.ADMINUSER_EMAIL, msg.recipients()) self.assertIn("*****@*****.**", msg.recipients()) self.assertIn("*****@*****.**", msg.recipients()) self.assertNotIn("*****@*****.**", msg.recipients())
def test_send_mail_to_all_attendees(self): mail.outbox = [] self.client.login(username=settings.ADMINUSER_EMAIL, password='******') attendee_testutils.create_test_user('*****@*****.**') user, _ = attendee_testutils.create_test_user('*****@*****.**') user.contact_permission_date = timezone.now() user.save() user, _ = attendee_testutils.create_test_user('*****@*****.**') Attendee.objects.create(user=user, event=Event.objects.current_event()) r = self.client.post(self.url, data={ 'recipients': 'users', 'subject': 'a message to all users', 'body': '<p>a single sentence as the <b>message</b>.', 'sendreal': '', }) self.assertEquals(len(mail.outbox), 1, 'should have one message') msg = mail.outbox[0] self.assertNotIn(settings.ADMINUSER_EMAIL, msg.recipients()) self.assertIn('*****@*****.**', msg.recipients()) self.assertIn('*****@*****.**', msg.recipients()) self.assertNotIn('*****@*****.**', msg.recipients())
def test_save_checks_availability_with_confirmation(self): event = Event.objects.current_event() speaker, _, _ = speaker_testutils.create_test_speaker() talk = Talk.objects.create(draft_speaker=speaker, event=event, title="Test talk", spots=1) track = Track.objects.create(name="Test track") talk.publish(track) user1, _ = attendee_testutils.create_test_user() attendee1 = Attendee.objects.create(user=user1, event=event) user2, _ = attendee_testutils.create_test_user("*****@*****.**") attendee2 = Attendee.objects.create(user=user2, event=event) form = TalkAddReservationForm(attendee=attendee1, talk=talk, data={}) form.full_clean() reservation1 = form.save() self.assertFalse(reservation1.is_waiting) self.assertFalse(reservation1.is_confirmed) reservation1.is_confirmed = True reservation1.save() form = TalkAddReservationForm(attendee=attendee2, talk=talk, data={}) form.full_clean() reservation2 = form.save() self.assertTrue(reservation2.is_waiting) self.assertFalse(reservation2.is_confirmed)
def test_send_confirmation_mails_to_remaining_attendees(self): request = RequestFactory().request() request.user = self.attendee.user SessionReservation.objects.create( talk=self.talk, attendee=self.attendee, is_confirmed=False, is_waiting=False ) speaker, _, _ = speaker_testutils.create_test_speaker( email="*****@*****.**", name="Test Speaker 2" ) talk2 = Talk.objects.create( event=self.event, title="Test talk 2", draft_speaker=speaker, spots=2 ) track = Track.objects.create(event=self.event, name="Test track 2") self.talk.publish(track) SessionReservation.objects.create( talk=talk2, attendee=self.attendee, is_confirmed=False, is_waiting=False ) attendence_cancelled.send( self.__class__, attendee=self.attendee, request=request ) # no mails sent if there are no pending reservations self.assertEqual(len(mail.outbox), 0) # register 2nd attendee with waiting reservations for both talks user2, _ = attendee_testutils.create_test_user("*****@*****.**") attendee2 = Attendee.objects.create(user=user2, event=self.event) reservation = SessionReservation.objects.create( talk=self.talk, attendee=attendee2, is_confirmed=False, is_waiting=True ) reservation2 = SessionReservation.objects.create( talk=talk2, attendee=attendee2, is_confirmed=False, is_waiting=True ) user3, _ = attendee_testutils.create_test_user("*****@*****.**") attendee3 = Attendee.objects.create(user=user3, event=self.event) reservation3 = SessionReservation.objects.create( talk=talk2, attendee=attendee3, is_confirmed=False, is_waiting=True ) attendence_cancelled.send( self.__class__, attendee=self.attendee, request=request ) # mails sent to waiting attendee self.assertEqual(len(mail.outbox), 2) self.assertIn(attendee2.user.email, mail.outbox[0].recipients()) self.assertEqual(len(mail.outbox[0].recipients()), 1) self.assertIn(attendee2.user.email, mail.outbox[1].recipients()) self.assertEqual(len(mail.outbox[1].recipients()), 1) reservation.refresh_from_db() self.assertFalse(reservation.is_waiting) reservation2.refresh_from_db() self.assertFalse(reservation2.is_waiting) reservation3.refresh_from_db() self.assertTrue(reservation3.is_waiting)
def setUpTestData(cls): cls.event = event_testutils.create_test_event(title="Test event") user1, _ = attendee_testutils.create_test_user("*****@*****.**") user2, _ = attendee_testutils.create_test_user("*****@*****.**") cls.attendees = [ Attendee.objects.create(user=user1, event=cls.event), Attendee.objects.create(user=user2, event=cls.event), ] cls.badge_data = BadgeData.objects.create( attendee=cls.attendees[0], title="The Attendee", contact="@attendee", topics="- Code\n- Hack\n- Play", )
def test_save_with_commit(self): event = event_testutils.create_test_event() user, _ = attendee_testutils.create_test_user() form = EventRegistrationForm(event=event, instance=user, data={}) submitted_user = form.save() self.assertEqual(submitted_user, user)
def test_is_committee_member_is_false_for_attendee(self): user, password = attendee_testutils.create_test_user() event = event_testutils.create_test_event() Attendee.objects.create(user=user, event=event) self.client.login(username=user.email, password=password) response = self.client.get("/") self.assertFalse(response.context["is_committee_member"])
def test_form_save_no_commit(self): user, _ = attendee_testutils.create_test_user() user.save = MagicMock(return_value=None) form = AttendeeProfileForm(instance=user, data={}) form.save(commit=False) user.save.assert_not_called()
def setUpTestData(cls): cls.event = event_testutils.create_test_event(title="Test event") user1, _ = attendee_testutils.create_test_user("*****@*****.**") user2, _ = attendee_testutils.create_test_user("*****@*****.**") cls.attendees = [ Attendee.objects.create(user=user1, event=cls.event), Attendee.objects.create(user=user2, event=cls.event), ] cls.feedback = AttendeeEventFeedback.objects.create( event=cls.event, attendee=cls.attendees[0], overall_score=5, organisation_score=3, session_score=4, comment="It rocks", )
def test_parse_attendee(self): user, password = attendee_testutils.create_test_user() Attendee.objects.create(user=user, event=self.event) self.client.login(username=user.email, password=password) response = self.client.get(self.url) self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, "base.html")
def test_send_confirmation_mails_to_pending_reservations(self): request = RequestFactory().request() request.user = self.attendee.user reservation = SessionReservation.objects.create( talk=self.talk, attendee=self.attendee, is_confirmed=False, is_waiting=False ) session_reservation_cancelled.send( self.__class__, reservation=reservation, request=request ) # no mails sent if there are no pending reservations self.assertEqual(len(mail.outbox), 0) user2, _ = attendee_testutils.create_test_user("*****@*****.**") attendee2 = Attendee.objects.create(user=user2, event=self.event) reservation = SessionReservation.objects.create( talk=self.talk, attendee=attendee2, is_confirmed=False, is_waiting=True ) session_reservation_cancelled.send( self.__class__, reservation=reservation, request=request ) # mails sent to waiting attendee self.assertEqual(len(mail.outbox), 1) self.assertIn(attendee2.user.email, mail.outbox[0].recipients()) self.assertEqual(len(mail.outbox[0].recipients()), 1) reservation.refresh_from_db() self.assertFalse(reservation.is_waiting)
def setUpTestData(cls): cls.event = event_testutils.create_test_event(title="Test event") user1, _ = attendee_testutils.create_test_user("*****@*****.**") user2, _ = attendee_testutils.create_test_user("*****@*****.**") cls.attendees = [ Attendee.objects.create(user=user1, event=cls.event), Attendee.objects.create(user=user2, event=cls.event), ] speaker, _, _ = speaker_testutils.create_test_speaker() cls.talk = Talk.objects.create( draft_speaker=speaker, event=cls.event, title="Test Talk" ) track = Track.objects.create(name="Test Track") cls.talk.publish(track) cls.feedback = AttendeeFeedback.objects.create( talk=cls.talk, attendee=cls.attendees[0], score=4, comment="Nice try" )
def test_parse_staff(self): user, password = attendee_testutils.create_test_user() user.is_staff = True user.save() self.client.login(username=user.email, password=password) response = self.client.get(self.url) self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, "base.html")
def setUpTestData(cls): cls.email = '*****@*****.**' user, cls.password = attendee_testutils.create_test_user(cls.email) cls.speaker = Speaker.objects.create( user=user, shirt_size=2, video_permission=True, short_biography='A short biography text')
def test_dispatch_speaker(self): user, password = attendee_testutils.create_test_user(self.email) Speaker.objects.create(user=user, shirt_size=2, video_permission=True, short_biography='A short biography text') self.client.login(username=self.email, password=password) response = self.client.get(self.url) self.assertRedirects(response, '/speaker/profile/')
def test_parse_committee_member(self): user, password = attendee_testutils.create_test_user() group = Group.objects.get(name=COMMITTEE_GROUP) user.groups.add(group) user.save() self.client.login(username=user.email, password=password) response = self.client.get(self.url) self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, "base.html")
def test_form_save_no_commit(self): event = event_testutils.create_test_event() user, _ = attendee_testutils.create_test_user() form = EventRegistrationForm(event=event, user=user, data={}) attendee = form.save(commit=False) self.assertIsNone(attendee.id) self.assertEqual(attendee.event, event) self.assertEqual(attendee.user, user)
def test_post_performs_login(self): user, password = attendee_testutils.create_test_user() response = self.client.post(self.url, data={ "username": user.email, "password": password }) self.assertEqual(response.status_code, 302) response = self.client.get(response.url) self.assertEqual(response.context["request"].user, user)
def setUp(self): event = event_testutils.create_test_event() speaker, _, _ = speaker_testutils.create_test_speaker() self.talk = Talk.objects.create(draft_speaker=speaker, event=event, title="Test Talk") track = Track.objects.create(name="Test Track") self.talk.publish(track) user, _ = attendee_testutils.create_test_user() self.attendee = Attendee.objects.create(event=event, user=user)
def create_test_speaker(email='*****@*****.**', name='Test Speaker', **kwargs): user, password = attendee_testutils.create_test_user(email) speaker = Speaker.objects.create(user=user, name=name, video_permission=True, shirt_size=1, **kwargs) return speaker, user, password
def setUp(self): self.event = Event.objects.current_event() speaker, _, _ = speaker_testutils.create_test_speaker() self.talk = Talk.objects.create( event=self.event, title="Test talk", draft_speaker=speaker, spots=2 ) track = Track.objects.create(event=self.event, name="Test track") self.talk.publish(track) user, _ = attendee_testutils.create_test_user() self.attendee = Attendee.objects.create(user=user, event=self.event)
def test_form_valid(self): _, password = attendee_testutils.create_test_user( '*****@*****.**') data = { 'name': 'Special Tester', 'shirt_size': '2', 'video_permission': 'checked', 'short_biography': 'A guy from somewhere having something great', } self.client.login(email='*****@*****.**', password=password) response = self.client.post(self.url, data=data) self.assertRedirects(response, '/speaker/upload_portrait/')
def setUp(self): event = create_test_event() speaker, _, _ = speaker_testutils.create_test_speaker() self.talk = Talk.objects.create( draft_speaker=speaker, title="Test", abstract="Test abstract", remarks="Test remarks", event=event, ) self.test_user, _ = attendee_testutils.create_test_user() self.attendee = Attendee.objects.create(user=self.test_user, event=event)
def test_form_valid(self): _, password = attendee_testutils.create_test_user( "*****@*****.**") data = { "name": "Special Tester", "shirt_size": "2", "video_permission": "checked", "short_biography": "A guy from somewhere having something great", } self.client.login(email="*****@*****.**", password=password) response = self.client.post(self.url, data=data) self.assertRedirects(response, "/speaker/upload_portrait/")
def test_form_save_accept_general_contact(self): user, _ = attendee_testutils.create_test_user() form = AttendeeProfileForm( instance=user, data={ "accept_general_contact": "checked", "contact_permission_date": "", "date_joined": user.date_joined.isoformat(), }, ) user = form.save() self.assertIsNotNone(user.contact_permission_date)
def setUp(self): event = create_test_event() speaker, _, _ = speaker_testutils.create_test_speaker() talk = Talk.objects.create( draft_speaker=speaker, title="Test", abstract="Test abstract", remarks="Test remarks", event=event, ) track = Track.objects.create(name="Test") talk.publish(track=track) user, _ = attendee_testutils.create_test_user() attendee = Attendee.objects.create(user=user, event=event) self.reservation = SessionReservation.objects.create(talk=talk, attendee=attendee)
def test_form_save_accept_general_contact_again(self): user, _ = attendee_testutils.create_test_user() user.contact_permission_date = timezone.now() - timedelta(days=1) user.save() user.refresh_from_db() permission_date = user.contact_permission_date form = AttendeeProfileForm( instance=user, data={ "accept_general_contact": "checked", "contact_permission_date": user.contact_permission_date.isoformat(), "date_joined": user.date_joined.isoformat(), }, ) user = form.save() self.assertIsNotNone(user.contact_permission_date) self.assertEqual(user.contact_permission_date, permission_date)
def test_logged_in_online_event(self): self.event.online_event = True self.event.save() (user, _) = create_test_user() Attendee.objects.filter(user=user, event=self.event).delete() entries = get_nodes(user=user) self.assertEqual(entries[4].url, "#") children = entries[4].children self.assertEqual(children[0].url, reverse("user_profile")) self.assertEqual(children[1].url, reverse("auth_logout")) Attendee.objects.create(user=user, event=self.event) entries = get_nodes(user=user) self.assertEqual(entries[3].url, "#") children = entries[3].children self.assertEqual(len(children), 2, "profile menu should have two entries") self.assertEqual(children[0].url, reverse("user_profile")) self.assertEqual(children[1].url, reverse("auth_logout"))
def test_logged_in(self): (user, _) = create_test_user() Attendee.objects.filter(user=user, event=self.event).delete() entries = get_nodes(user=user) self.assertEquals(entries[4].url, '#') children = entries[4].children self.assertEquals(children[0].url, reverse('user_profile')) self.assertEquals(children[1].url, reverse('auth_logout')) Attendee.objects.create(user=user, event=self.event) entries = get_nodes(user=user) self.assertEquals(entries[3].url, '#') children = entries[3].children self.assertEquals(len(children), 3, 'profile menu should have three entries') self.assertEquals(children[0].url, reverse('user_profile')) self.assertEquals( children[1].url, reverse('attendee_checkin_qrcode', kwargs={'event': self.event.slug})) self.assertEquals(children[2].url, reverse('auth_logout'))
def test_logged_in(self): (user, _) = create_test_user() Attendee.objects.filter(user=user, event=self.event).delete() entries = get_nodes(user=user) self.assertEqual(entries[4].url, "#") children = entries[4].children self.assertEqual(children[0].url, reverse("user_profile")) self.assertEqual(children[1].url, reverse("auth_logout")) Attendee.objects.create(user=user, event=self.event) entries = get_nodes(user=user) self.assertEqual(entries[3].url, "#") children = entries[3].children self.assertEqual(len(children), 3, "profile menu should have three entries") self.assertEqual(children[0].url, reverse("user_profile")) self.assertEqual( children[1].url, reverse("attendee_checkin_qrcode", kwargs={"event": self.event.slug}), ) self.assertEqual(children[2].url, reverse("auth_logout"))