def test_unsubscription(self): self.backend.unregister('*****@*****.**', self.monthly, 'fr') self.backend.register('*****@*****.**', self.monthly, 'fr') self.backend.register('*****@*****.**', self.weekly, 'fr') self.backend.register('*****@*****.**', self.daily, 'fr') # Unsubscribe from monthly valid_data = {'email': '*****@*****.**', 'from_all': False} form = UnsubscribeForm(data=valid_data, initial={'email': '*****@*****.**'}, **{'newsletter_list': self.monthly}) self.assertTrue(form.is_valid()) form.save() old_subscriber = NewsletterSubscriber.objects.get( email=valid_data['email'], newsletter_list=self.monthly) old_subscriber2 = NewsletterSubscriber.objects.get( email=valid_data['email'], newsletter_list=self.weekly) self.assertEqual(old_subscriber.is_unsubscribed, True) self.assertEqual(old_subscriber.unsubscribed_at, datetime.now()) self.assertEqual(old_subscriber2.is_unsubscribed, False) # Unsubscribe from all valid_data = {'email': '*****@*****.**', 'from_all': True} form = UnsubscribeForm(data=valid_data, newsletter_list=self.weekly) self.assertTrue(form.is_valid()) form.save() old_subscriber = NewsletterSubscriber.objects.filter( email=valid_data['email'], newsletter_list=self.weekly) old_subscriber2 = NewsletterSubscriber.objects.filter( email=valid_data['email'], newsletter_list=self.daily) self.assertEqual(old_subscriber.get().is_unsubscribed, True) self.assertEqual(old_subscriber2.get().is_unsubscribed, True) self.assertEqual(old_subscriber2.get().unsubscribed_at, datetime.now()) form2 = UnsubscribeForm(data=valid_data, newsletter_list=self.weekly) is_valid = form2.is_valid() self.assertEqual(is_valid, False)
def test_unsubscription_logged_in(self): user = User.objects.create_user('thoas', '*****@*****.**', 'secret') self.backend.register('*****@*****.**', self.monthly, 'fr', user=user) new_subscriber = NewsletterSubscriber.objects.filter( email='*****@*****.**', user=user) self.assertEqual(new_subscriber.count(), 1) valid_data = {'email': '*****@*****.**', 'from_all': False} form = UnsubscribeForm(data=valid_data, initial={'email': '*****@*****.**'}, **{'newsletter_list': self.monthly}) self.assertTrue(form.is_valid()) form.save(user) # Equivalent for saving with user logged in self.backend.unregister('*****@*****.**')