def test_update_newsletter_status_advanced(self): self.server.mails_hour = 2 self.server.save() mailer = Mailer(self.newsletter) mailer.smtp = FakeSMTP() mailer.run() self.assertEquals(mailer.smtp.mails_sent, 2) self.assertEquals( ContactMailingStatus.objects.filter( status=ContactMailingStatus.SENT, newsletter=self.newsletter).count(), 2) self.assertEquals(self.newsletter.status, Newsletter.SENDING) self.server.mails_hour = 0 self.server.save() mailer = Mailer(self.newsletter) mailer.smtp = FakeSMTP() mailer.run() self.assertEquals(mailer.smtp.mails_sent, 2) self.assertEquals( ContactMailingStatus.objects.filter( status=ContactMailingStatus.SENT, newsletter=self.newsletter).count(), 4) self.assertEquals(self.newsletter.status, Newsletter.SENT)
def send_mail_test(self, request, queryset): """Send newsletter in test""" for newsletter in queryset: if newsletter.test_contacts.count(): mailer = Mailer(newsletter, test=True) try: mailer.run() except HTMLParseError: self.message_user(request, _('Unable send newsletter, due to errors within HTML.')) continue self.message_user(request, _('%s succesfully sent.') % newsletter) else: self.message_user(request, _('No test contacts assigned for %s.') % newsletter)
def test_can_send(self): mailer = Mailer(self.newsletter) self.assertTrue(mailer.can_send) # Checks credits self.server.mails_hour = 1 ContactMailingStatus.objects.create(newsletter=self.newsletter, contact=self.contacts[0], status=ContactMailingStatus.SENT) mailer = Mailer(self.newsletter) self.assertFalse(mailer.can_send) self.server.mails_hour = 10 mailer = Mailer(self.newsletter) self.assertTrue(mailer.can_send) # Checks statut self.newsletter.status = Newsletter.DRAFT mailer = Mailer(self.newsletter) self.assertFalse(mailer.can_send) mailer = Mailer(self.newsletter, test=True) self.assertTrue(mailer.can_send) # Checks expedition time self.newsletter.status = Newsletter.WAITING self.newsletter.sending_date = datetime.now() + timedelta(hours=1) mailer = Mailer(self.newsletter) self.assertFalse(mailer.can_send) self.newsletter.sending_date = datetime.now() mailer = Mailer(self.newsletter) self.assertTrue(mailer.can_send)
def handle_noargs(self, **options): verbose = int(options['verbosity']) if verbose: print 'Starting sending newsletters...' activate(settings.LANGUAGE_CODE) for newsletter in Newsletter.objects.exclude( status=Newsletter.DRAFT).exclude(status=Newsletter.SENT): mailer = Mailer(newsletter, verbose=verbose) if mailer.can_send: if verbose: print 'Start emailing %s' % newsletter.title mailer.run() if verbose: print 'End session sending'
def test_update_newsletter_status(self): mailer = Mailer(self.newsletter, test=True) self.assertEquals(self.newsletter.status, Newsletter.WAITING) mailer.update_newsletter_status() self.assertEquals(self.newsletter.status, Newsletter.WAITING) mailer = Mailer(self.newsletter) self.assertEquals(self.newsletter.status, Newsletter.WAITING) mailer.update_newsletter_status() self.assertEquals(self.newsletter.status, Newsletter.SENDING) for contact in self.contacts: ContactMailingStatus.objects.create( newsletter=self.newsletter, contact=contact, status=ContactMailingStatus.SENT) mailer.update_newsletter_status() self.assertEquals(self.newsletter.status, Newsletter.SENT)
def test_recipients_refused(self): server = SMTPServer.objects.create(name='Local SMTP', host='localhost') contact = Contact.objects.create(email='thisisaninvalidemail') self.newsletter.test_contacts.clear() self.newsletter.test_contacts.add(contact) self.newsletter.server = server self.newsletter.save() self.assertEquals(contact.valid, True) self.assertEquals(ContactMailingStatus.objects.filter( status=ContactMailingStatus.INVALID, newsletter=self.newsletter).count(), 0) mailer = Mailer(self.newsletter, test=True) mailer.run() self.assertEquals(Contact.objects.get(email='thisisaninvalidemail').valid, False) self.assertEquals(ContactMailingStatus.objects.filter( status=ContactMailingStatus.INVALID, newsletter=self.newsletter).count(), 1)
def test_run(self): mailer = Mailer(self.newsletter) mailer.smtp = FakeSMTP() mailer.run() self.assertEquals(mailer.smtp.mails_sent, 4) self.assertEquals(ContactMailingStatus.objects.filter( status=ContactMailingStatus.SENT, newsletter=self.newsletter).count(), 4) mailer = Mailer(self.newsletter, test=True) mailer.smtp = FakeSMTP() mailer.run() self.assertEquals(mailer.smtp.mails_sent, 2) self.assertEquals(ContactMailingStatus.objects.filter( status=ContactMailingStatus.SENT_TEST, newsletter=self.newsletter).count(), 2) mailer.smtp = None
def test_recipients_refused(self): server = SMTPServer.objects.create(name='Local SMTP', host='localhost') contact = Contact.objects.create(email='thisisaninvalidemail') self.newsletter.test_contacts.clear() self.newsletter.test_contacts.add(contact) self.newsletter.server = server self.newsletter.save() self.assertEquals(contact.valid, True) self.assertEquals( ContactMailingStatus.objects.filter( status=ContactMailingStatus.INVALID, newsletter=self.newsletter).count(), 0) mailer = Mailer(self.newsletter, test=True) mailer.run() self.assertEquals( Contact.objects.get(email='thisisaninvalidemail').valid, False) self.assertEquals( ContactMailingStatus.objects.filter( status=ContactMailingStatus.INVALID, newsletter=self.newsletter).count(), 1)
def test_expedition_list(self): mailer = Mailer(self.newsletter, test=True) self.assertEquals(len(mailer.expedition_list), 2) self.server.mails_hour = 1 self.assertEquals(len(mailer.expedition_list), 1) self.server.mails_hour = 100 mailer = Mailer(self.newsletter) self.assertEquals(len(mailer.expedition_list), 4) self.server.mails_hour = 3 self.assertEquals(len(mailer.expedition_list), 3) self.server.mails_hour = 100 ContactMailingStatus.objects.create(newsletter=self.newsletter, contact=self.contacts[0], status=ContactMailingStatus.SENT) ContactMailingStatus.objects.create(newsletter=self.newsletter, contact=self.contacts[1], status=ContactMailingStatus.SENT) ContactMailingStatus.objects.create(newsletter=self.newsletter, contact=self.contacts[1], status=ContactMailingStatus.SENT) self.assertEquals(len(mailer.expedition_list), 2) self.assertFalse(self.contacts[0] in mailer.expedition_list)
def test_update_newsletter_status(self): mailer = Mailer(self.newsletter, test=True) self.assertEquals(self.newsletter.status, Newsletter.WAITING) mailer.update_newsletter_status() self.assertEquals(self.newsletter.status, Newsletter.WAITING) mailer = Mailer(self.newsletter) self.assertEquals(self.newsletter.status, Newsletter.WAITING) mailer.update_newsletter_status() self.assertEquals(self.newsletter.status, Newsletter.SENDING) for contact in self.contacts: ContactMailingStatus.objects.create(newsletter=self.newsletter, contact=contact, status=ContactMailingStatus.SENT) mailer.update_newsletter_status() self.assertEquals(self.newsletter.status, Newsletter.SENT)
def test_update_newsletter_status_advanced(self): self.server.mails_hour = 2 self.server.save() mailer = Mailer(self.newsletter) mailer.smtp = FakeSMTP() mailer.run() self.assertEquals(mailer.smtp.mails_sent, 2) self.assertEquals(ContactMailingStatus.objects.filter( status=ContactMailingStatus.SENT, newsletter=self.newsletter).count(), 2) self.assertEquals(self.newsletter.status, Newsletter.SENDING) self.server.mails_hour = 0 self.server.save() mailer = Mailer(self.newsletter) mailer.smtp = FakeSMTP() mailer.run() self.assertEquals(mailer.smtp.mails_sent, 2) self.assertEquals(ContactMailingStatus.objects.filter( status=ContactMailingStatus.SENT, newsletter=self.newsletter).count(), 4) self.assertEquals(self.newsletter.status, Newsletter.SENT)
def test_run(self): mailer = Mailer(self.newsletter) mailer.smtp = FakeSMTP() mailer.run() self.assertEquals(mailer.smtp.mails_sent, 4) self.assertEquals( ContactMailingStatus.objects.filter( status=ContactMailingStatus.SENT, newsletter=self.newsletter).count(), 4) mailer = Mailer(self.newsletter, test=True) mailer.smtp = FakeSMTP() mailer.run() self.assertEquals(mailer.smtp.mails_sent, 2) self.assertEquals( ContactMailingStatus.objects.filter( status=ContactMailingStatus.SENT_TEST, newsletter=self.newsletter).count(), 2) mailer.smtp = None