Example #1
0
    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())
Example #2
0
    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())
Example #3
0
    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)
Example #5
0
 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",
     )
Example #6
0
    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"])
Example #8
0
    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",
     )
Example #10
0
 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)
Example #12
0
 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"
     )
Example #13
0
 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")
Example #14
0
 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')
Example #15
0
 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/')
Example #16
0
 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")
Example #17
0
    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)
Example #18
0
 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)
Example #19
0
 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)
Example #22
0
 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)
Example #24
0
 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/")
Example #25
0
 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)
Example #26
0
 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)
Example #27
0
 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)
Example #28
0
    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"))
Example #29
0
    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'))
Example #30
0
    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"))