def test_edit(self): # Edit an application self.login() # Existing application FinancialAidApplication.objects.create( user=self.user, profession="Foo", experience_level="lots", what_you_want="money", want_to_learn="stuff", use_of_python="fun", presenting=1, ) # New data data = dict( profession="Gourmet", experience_level="none", what_you_want="money", want_to_learn="stuff", use_of_python="fun", presenting='1', hotel_nights='0', travel_amount_requested="0.00", sex='0', ) self.assertEqual(0, len(mail.outbox)) rsp = self.client.post(self.edit_url, data) self.assertRedirects(rsp, self.dashboard_url) # And the application now has new data app = FinancialAidApplication.objects.get(user=self.user) self.assertEqual("Gourmet", app.profession) self.assertEqual("none", app.experience_level) # And an email was sent to user and committee self.assertEqual(2, len(mail.outbox)) msg = mail.outbox[0] self.assertIn("edited", msg.body) self.assertIn(email_address(), msg.from_email) self.assertIn(app.user.email, msg.recipients()) self.assertIn(app.applicant_url(), msg.body) msg = mail.outbox[1] self.assertIn("edited", msg.body) self.assertIn(email_address(), msg.recipients()) self.assertIn(app.user.email, msg.from_email) self.assertIn(app.reviewer_url(), msg.body) # And a message was displayed # Need to tell the test client to follow the redirect if we want # to see the message rsp = self.client.post(self.edit_url, data, follow=True) context = rsp.context self.assertIn('messages', context) self.assertEqual(1, len(context['messages']))
def test_edit(self): # Edit an application self.login() # Existing application FinancialAidApplication.objects.create( user=self.user, profession="Foo", experience_level="lots", what_you_want="money", want_to_learn="stuff", use_of_python="fun", presenting=1, ) # New data data = dict( profession="Gourmet", experience_level="none", what_you_want="money", want_to_learn="stuff", use_of_python="fun", presenting='1', hotel_nights='0', travel_amount_requested="0.00", sex='0', ) self.assertEqual(0, len(mail.outbox)) rsp = self.client.post(self.edit_url, data) self.assertRedirects(rsp, self.dashboard_url) # And the application now has new data app = FinancialAidApplication.objects.get(user=self.user) self.assertEqual("Gourmet", app.profession) self.assertEqual("none", app.experience_level) # And an email was sent to user and committee self.assertEqual(2, len(mail.outbox)) msg = mail.outbox[0] self.assertIn("edited", msg.body) self.assertIn(email_address(), msg.from_email) self.assertIn(app.user.email, msg.recipients()) self.assertIn(app.fa_app_url(), msg.body) msg = mail.outbox[1] self.assertIn("edited", msg.body) self.assertIn(email_address(), msg.recipients()) self.assertIn(app.user.email, msg.from_email) self.assertIn(app.fa_app_url(), msg.body) # And a message was displayed # Need to tell the test client to follow the redirect if we want # to see the message rsp = self.client.post(self.edit_url, data, follow=True) context = rsp.context self.assertIn('messages', context) self.assertEqual(1, len(context['messages']))
def test_submit(self): # Submit an application self.login() data = dict( profession="Foo", experience_level="lots", what_you_want="money", want_to_learn="stuff", use_of_python="fun", presenting='1', hotel_nights='0', travel_amount_requested="0.00", sex='0', ) self.assertEqual(0, len(mail.outbox)) rsp = self.client.post(self.edit_url, data) self.assertRedirects(rsp, self.dashboard_url) # There's an application for this user now app = FinancialAidApplication.objects.get(user=self.user) self.assertEqual("Foo", app.profession) # And an email was sent to both user and committee self.assertEqual(2, len(mail.outbox)) msg = mail.outbox[0] # print("From: %s\nTo: %s\nSubject: %s\n\n%s" % # (msg.from_email, ", ".join(msg.recipients()), # msg.subject, msg.body)) self.assertIn(app.user.email, msg.recipients()) self.assertEqual(email_address(), msg.from_email) self.assertIn("received", msg.body) msg = mail.outbox[1] self.assertIn(email_address(), msg.recipients()) self.assertEqual(app.user.email, msg.from_email) self.assertIn("submitted", msg.body) # And a message was displayed # Need to tell the test client to follow the redirect if we want # to see the message rsp = self.client.post(self.edit_url, data, follow=True) context = rsp.context self.assertIn('messages', context) self.assertEqual(1, len(context['messages']))
def test_email_submit(self, mock_send_mass_mail, mock_render): # Actually submit the thing # Create review record # Most fields are optional data = { 'application': self.application, 'status': STATUS_SUBMITTED, 'hotel_amount': Decimal('6.66'), 'registration_amount': Decimal('0.00'), 'travel_amount': Decimal('0.00'), } review = FinancialAidReviewData(**data) review.save() subject = 'TEST SUBJECT' template_text = 'THE TEMPLATE' FinancialAidEmailTemplate.objects.create( name='template', template="wrong template" ) template2 = FinancialAidEmailTemplate.objects.create( name='template', template=template_text, ) data = { 'template': template2.pk, 'subject': subject, } mock_render.return_value = template_text rsp = self.client.post(self.url, data) self.assertEqual(302, rsp.status_code, rsp.content) # we tried to send the right emails expected_msgs = [(subject, template_text, email_address(), [self.user.email])] mock_send_mass_mail.assert_called_with(expected_msgs) # the template was rendered with a good context context = mock_render.call_args[0][0] self.assertEqual(self.application, context['application']) self.assertEqual(review, context['review'])
def test_email_submit(self, mock_send_mass_mail, mock_render): # Actually submit the thing # Create review record # Most fields are optional data = { 'application': self.application, 'status': STATUS_SUBMITTED, 'hotel_amount': Decimal('6.66'), 'registration_amount': Decimal('0.00'), 'travel_amount': Decimal('0.00'), 'tutorial_amount': Decimal('0.00'), } review = FinancialAidReviewData(**data) review.save() subject = 'TEST SUBJECT' template_text = 'THE TEMPLATE' FinancialAidEmailTemplate.objects.create(name='template', template="wrong template") template2 = FinancialAidEmailTemplate.objects.create( name='template', template=template_text, ) data = { 'template': template2.pk, 'subject': subject, } mock_render.return_value = template_text rsp = self.client.post(self.url, data) self.assertEqual(302, rsp.status_code, rsp.content) # we tried to send the right emails expected_msgs = [(subject, template_text, email_address(), [self.user.email])] mock_send_mass_mail.assert_called_with(expected_msgs) # the template was rendered with a good context context = mock_render.call_args[0][0] self.assertEqual(self.application, context['application']) self.assertEqual(review, context['review'])