def test_send_search_digest_send_if_none(self): SavedSearchDigestFactory(user=self.user, send_if_none=True) send_search_digests() self.assertEqual(len(mail.outbox), 0) SavedSearchFactory(user=self.user) send_search_digests() self.assertEqual(len(mail.outbox), 1)
def test_fix_fixable_search(self): self.patcher.stop() SavedSearchDigestFactory(user=self.user) search = SavedSearchFactory(user=self.user, feed='') self.assertFalse(search.feed) # Celery raises a retry that makes the test fail. In reality # everything is fine, so ignore the retry-fail. try: send_search_digests() except RetryTaskError: pass self.assertEqual(len(mail.outbox), 0) search = SavedSearch.objects.get(pk=search.pk) self.assertTrue(search.is_active) self.assertTrue(search.feed)
def test_disable_bad_search(self): self.patcher.stop() SavedSearchDigestFactory(user=self.user) search = SavedSearchFactory(user=self.user, feed='', url='http://example.com') self.assertFalse(search.feed) # Celery raises a retry that makes the test fail. In reality # everything is fine, so ignore the retry-fail. try: send_search_digests() except RetryTaskError: pass email = mail.outbox.pop() search = SavedSearch.objects.get(pk=search.pk) self.assertFalse(search.is_active) self.assertTrue('has failed URL validation' in email.body)
def test_errors_dont_disable_searches(self): """ We should retry sending saved searches but exceeding our maximum number of retries should not disable those searches. """ self.mock_urlopen.side_effect = ValueError("bork bork bork") SavedSearchDigestFactory(user=self.user) search = SavedSearchFactory(user=self.user, feed='www.my.jobs') # Celery raises a retry that makes the test fail. In reality # everything is fine, so ignore the retry. try: send_search_digests() except RetryTaskError: pass self.assertEqual(len(mail.outbox), 0) search = SavedSearch.objects.get(pk=search.pk) self.assertTrue(search.is_active)
def test_send_search_digest_email(self): SavedSearchDigestFactory(user=self.user) send_search_digests() self.assertEqual(len(mail.outbox), 0) self.assertEqual(SavedSearchLog.objects.count(), 1) log = SavedSearchLog.objects.get() self.assertTrue('No saved searches' in log.reason) self.assertFalse(log.was_sent) search1 = SavedSearchFactory(user=self.user) self.assertIsNone(SavedSearch.objects.get(pk=search1.pk).last_sent) send_search_digests() self.assertIsNotNone(SavedSearch.objects.get(pk=search1.pk).last_sent) self.assertEqual(len(mail.outbox), 1) self.assertEqual(SavedSearchLog.objects.count(), 2) log = SavedSearchLog.objects.last() self.assertTrue(log.was_sent) search2 = SavedSearchFactory(user=self.user) self.assertIsNone(SavedSearch.objects.get(pk=search2.pk).last_sent) send_search_digests() self.assertIsNotNone(SavedSearch.objects.get(pk=search2.pk).last_sent) self.assertEqual(len(mail.outbox), 2) self.assertEqual(SavedSearchLog.objects.count(), 3) log = SavedSearchLog.objects.last() self.assertTrue(log.was_sent) email = mail.outbox.pop() self.assertEqual(email.from_email, 'My.jobs Saved Search <*****@*****.**>') self.assertEqual(email.to, [self.user.email]) self.assertEqual(email.subject, "Your Saved Search Digest") self.assertTrue("table" in email.body) self.assertTrue(email.to[0] in email.body)
def test_send_search_digest_email(self): SavedSearchDigestFactory(user=self.user) send_search_digests() self.assertEqual(len(mail.outbox), 0) self.assertEqual(SavedSearchLog.objects.count(), 1) log = SavedSearchLog.objects.get() self.assertTrue('No saved searches' in log.reason) self.assertFalse(log.was_sent) search1 = SavedSearchFactory(user=self.user) self.assertIsNone(search1.last_sent) send_search_digests() self.assertIsNotNone(SavedSearch.objects.get(pk=search1.pk).last_sent) self.assertEqual(len(mail.outbox), 1) self.assertEqual(SavedSearchLog.objects.count(), 2) log = SavedSearchLog.objects.last() self.assertTrue(log.was_sent) search2 = SavedSearchFactory(user=self.user) self.assertIsNone(search2.last_sent) send_search_digests() self.assertIsNotNone(SavedSearch.objects.get(pk=search2.pk).last_sent) self.assertEqual(len(mail.outbox), 2) self.assertEqual(SavedSearchLog.objects.count(), 3) log = SavedSearchLog.objects.last() self.assertTrue(log.was_sent) email = mail.outbox.pop() self.assertEqual(email.from_email, 'My.jobs Saved Search <*****@*****.**>') self.assertEqual(email.to, [self.user.email]) self.assertEqual(email.subject, "Your Saved Search Digest") self.assertTrue("table" in email.body) self.assertTrue(email.to[0] in email.body)
def test_send_search_email(self): SavedSearchDigestFactory(user=self.user, is_active=False) search = SavedSearchFactory(user=self.user, is_active=True, frequency='D', url='www.my.jobs/jobs?q=new+search') send_search_digests() self.assertEqual(len(mail.outbox), 1) self.assertEqual(SavedSearchLog.objects.count(), 1) log = SavedSearchLog.objects.get() self.assertTrue(log.was_sent) email = mail.outbox.pop() self.assertEqual(email.from_email, 'My.jobs Saved Search <*****@*****.**>') self.assertEqual(email.to, [self.user.email]) self.assertEqual(email.subject, search.label) self.assertTrue("table" in email.body) self.assertTrue(email.to[0] in email.body) self.assertNotEqual(email.body.find(search.url), -1, "Search url was not found in email body") self.assertTrue("Your resume is %s%% complete" % self.user.profile_completion in email.body)
def test_send_search_email(self): SavedSearchDigestFactory(user=self.user, is_active=False) search = SavedSearchFactory(user=self.user, is_active=True, frequency='D', url='www.my.jobs/jobs?q=new+search') send_search_digests() self.assertEqual(len(mail.outbox), 1) self.assertEqual(SavedSearchLog.objects.count(), 1) log = SavedSearchLog.objects.get() self.assertTrue(log.was_sent) email = mail.outbox.pop() self.assertEqual(email.from_email, 'My.jobs Saved Search <*****@*****.**>') self.assertEqual(email.to, [self.user.email]) self.assertEqual(email.subject, search.label) self.assertTrue("table" in email.body) self.assertTrue(email.to[0] in email.body) self.assertNotEqual(email.body.find(search.url), -1, "Search url was not found in email body") self.assertTrue("Your profile is %s%% complete" % self.user.profile_completion in email.body)