def test_get_templates(self): """Make sure the get_templates method behaves as expected.""" worker_base = SubscriptionEmailWorker({}) # Basic template test. subject, txt, html = worker_base.get_templates(method='POST', resource_name='story', sub_resource_name=None) self.assertEqual('story/POST_subject.txt', subject) self.assertEqual('story/POST.txt', txt) self.assertEqual('story/POST.html', html) # Subresource template test. subject, txt, html = worker_base.get_templates(method='POST', resource_name='story', sub_resource_name='f') self.assertEqual('story/f/POST_subject.txt', subject) self.assertEqual('story/f/POST.txt', txt) self.assertEqual('story/f/POST.html', html)
def test_handle_email(self, get_smtp_client): """Make sure that events from the queue are sent as emails.""" dummy_smtp = mock.Mock(smtplib.SMTP) worker_base = SubscriptionEmailWorker({}) get_smtp_client.return_value.__enter__ = dummy_smtp with base.HybridSessionManager(): session = db_api_base.get_session() author = db_api_base.entity_get(models.User, 2, session=session) story = db_api_base.entity_get(models.Story, 1, session=session) story_dict = story.as_dict() story_after_dict = copy.copy(story_dict) story_after_dict['title'] = 'New Test Title' subscribers = worker_base.get_subscribers(session, 'story', 1) self.assertEqual(2, len(subscribers)) worker_base.handle_email(session=session, author=author, subscribers=subscribers, method='PUT', url='http://localhost/', path='/stories/1', query_string='', status=200, resource='story', resource_id=1, resource_before=story_dict, resource_after=story_after_dict) # There should be two subscribers, but only one should get an # email since the other is a digest receiver. subscribed_user = db_api_base.entity_get(models.User, 3, session=session) self.assertEqual(dummy_smtp.return_value.sendmail.call_count, 1) self.assertEqual( dummy_smtp.return_value.sendmail.call_args[1]['to_addrs'], subscribed_user.email)