def test_if_scheduled_for_future_does_not_send_until_future(self): people = [] num_subscribers = Factory.rand_int(end=20) for i in range(0, num_subscribers): s = Factory.subscription(newsletter=self.newsletter) s.double_opt_in() people.append(s) future_date = self.now() + datetime.timedelta(hours=1) self.scheduled_newsletter_message = Factory.scheduled_newsletter_message( newsletter=self.newsletter, send_at_date=future_date, send_at_hour=future_date.hour, send_at_minute=future_date.minute, use_local_time=False, ) self.subject = self.scheduled_newsletter_message.message.subject self.body = self.scheduled_newsletter_message.message.body_text_unrendered queue_newsletter_message(self.scheduled_newsletter_message.hashid) process_outgoing_message_queue() self.assertEquals(len(mail.outbox), 0) with freeze_time(self.now() + datetime.timedelta(hours=1)): process_outgoing_message_queue() self.assertEquals(len(mail.outbox), num_subscribers)
def test_sends_to_everyone_in_list(self): people = [] num_subscribers = Factory.rand_int(end=20) for i in range(0, num_subscribers): s = Factory.subscription(newsletter=self.newsletter) s.double_opt_in() people.append(s) self.send_newsletter_message() self.assertEquals(len(mail.outbox), num_subscribers)
def test_does_not_send_to_everyone_not_in_list(self): subscribed_people = [] subscribed_people_emails = [] nonsubscribed_people = [] nonsubscribed_people_emails = [] num_subscribers = Factory.rand_int(end=20) num_nonsubscribers = Factory.rand_int(end=20) for i in range(0, num_subscribers): s = Factory.subscription(newsletter=self.newsletter) s.double_opt_in() subscribed_people.append(s) subscribed_people_emails.append(s.person.email) for i in range(0, num_nonsubscribers): p = Factory.person() nonsubscribed_people.append(p) nonsubscribed_people_emails.append(p.email) self.send_newsletter_message() self.assertEquals(len(mail.outbox), num_subscribers) for m in mail.outbox: self.assertEquals(len(m.to), 1) self.assertIn(m.to[0], subscribed_people_emails) self.assertNotIn(m.to[0], nonsubscribed_people_emails)
def test_if_scheduled_for_past_date_sends_immediately(self): people = [] num_subscribers = Factory.rand_int(end=20) for i in range(0, num_subscribers): s = Factory.subscription(newsletter=self.newsletter) s.double_opt_in() people.append(s) self.scheduled_newsletter_message = Factory.scheduled_newsletter_message( newsletter=self.newsletter, send_at_date=self.now() - datetime.timedelta(days=2), send_at_hour=self.now().hour, send_at_minute=self.now().minute, use_local_time=False, ) self.subject = self.scheduled_newsletter_message.message.subject self.body = self.scheduled_newsletter_message.message.body_text_unrendered queue_newsletter_message(self.scheduled_newsletter_message.hashid) process_outgoing_message_queue() self.assertEquals(len(mail.outbox), num_subscribers)