def test_rsvp_view(self): # Setup data for RSVP -> StudyGroup + Signup + Meeting in future c = Client() study_group = StudyGroup.objects.get(pk=1) meeting_time = timezone.now() + datetime.timedelta(days=2) study_group_meeting = Meeting(study_group=study_group, meeting_time=meeting_time.time(), meeting_date=meeting_time.date()) study_group_meeting.save() signup_data = self.APPLICATION_DATA.copy() resp = c.post('/en/signup/foo-bob-1/', signup_data) self.assertRedirects(resp, '/en/signup/1/success/') self.assertEqual(Application.objects.active().count(), 1) qs = gen_rsvp_querystring(signup_data['email'], study_group.pk, study_group_meeting.meeting_datetime(), 'yes') url = '/en/rsvp/?{0}'.format(qs) # Generate RSVP link # visit link self.assertEqual(0, Rsvp.objects.count()) resp = c.get(url) self.assertEqual(1, Rsvp.objects.count()) self.assertTrue(Rsvp.objects.first().attending) qs = gen_rsvp_querystring(signup_data['email'], study_group.pk, study_group_meeting.meeting_datetime(), 'no') url = '/en/rsvp/?{0}'.format(qs) self.assertEqual(1, Rsvp.objects.count()) resp = c.get(url) self.assertEqual(1, Rsvp.objects.count()) self.assertFalse(Rsvp.objects.first().attending) # Test RSVP with mobile number signup_data = self.APPLICATION_DATA.copy() signup_data['email'] = '*****@*****.**' signup_data['mobile'] = '+12812347890' resp = c.post('/en/signup/foo-bob-1/', signup_data) self.assertRedirects(resp, '/en/signup/1/success/') self.assertEqual(Application.objects.active().count(), 2) qs = gen_rsvp_querystring(signup_data['mobile'], study_group.pk, study_group_meeting.meeting_datetime(), 'yes') url = '/en/rsvp/?{0}'.format(qs) # Generate RSVP link # visit link c = Client() Rsvp.objects.all().delete() self.assertEqual(0, Rsvp.objects.count()) resp = c.get(url) self.assertEqual(1, Rsvp.objects.count()) self.assertTrue(Rsvp.objects.first().attending)
def test_receive_sms_rsvp(self): signup_data = self.APPLICATION_DATA.copy() signup_data['mobile'] = '+12812347890' c = Client() resp = c.post('/en/signup/foo-bob-1/', signup_data) self.assertRedirects(resp, '/en/signup/1/success/') self.assertEqual(Application.objects.active().count(), 1) mail.outbox = [] next_meeting = Meeting() next_meeting.study_group = StudyGroup.objects.get( pk=signup_data['study_group']) next_meeting.meeting_time = (timezone.now() + datetime.timedelta(days=1)).time() next_meeting.meeting_date = timezone.now().date() + datetime.timedelta( days=1) next_meeting.save() url = '/en/receive_sms/' sms_data = { 'Body': 'Sorry, I won\'t make it, have family responsibilities this week :(', 'From': '+12812347890' } resp = c.post(url, sms_data) self.assertEqual(len(mail.outbox), 1) self.assertTrue(mail.outbox[0].subject.find('+12812347890') > 0) self.assertTrue(mail.outbox[0].subject.find('Test User') > 0) self.assertIn( StudyGroup.objects.get(pk=1).facilitator.email, mail.outbox[0].to) self.assertIn( '{0}/{1}/rsvp/?user=%2B12812347890&study_group=1&meeting_date={2}&attending=yes&sig=' .format( settings.DOMAIN, get_language(), urllib.parse.quote( next_meeting.meeting_datetime().isoformat())), mail.outbox[0].body) self.assertIn( '{0}/{1}/rsvp/?user=%2B12812347890&study_group=1&meeting_date={2}&attending=no&sig=' .format( settings.DOMAIN, get_language(), urllib.parse.quote( next_meeting.meeting_datetime().isoformat())), mail.outbox[0].body)