def test_submit_premium_offer_discount_already_premium_but_expired(self, messageUserMock, taskMock): request = RequestFactory().get("/") email = BroadcastEmail.objects.create(subject="test") admin = BroadcastEmailAdmin(model=BroadcastEmail, admin_site=AdminSite()) user = User.objects.create(username="******", password="******", email="*****@*****.**") user.userprofile.premium_offer = "premium_offer_discount_20" user.userprofile.premium_offer_expiration = datetime.now() + timedelta(days=1) user.userprofile.receive_marketing_and_commercial_material = True user.userprofile.save() group, created = Group.objects.get_or_create(name="astrobin_premium") subscription, created = Subscription.objects.get_or_create( name="AstroBin Premium", price=1, group=group, category="premium") user_subscription, created = UserSubscription.objects.get_or_create( user=user, subscription=subscription) user_subscription.subscribe() user_subscription.expires = timezone.now() - timedelta(days=1) user_subscription.save() admin.submit_premium_offer_discount(request, BroadcastEmail.objects.filter(pk=email.pk)) args, kwargs = taskMock.call_args taskMock.assert_called() self.assertEqual(["*****@*****.**"], list(args[1]))
def test_submit_premium_offer_discount_two_users(self, messageUserMock, taskMock): request = RequestFactory().get("/") email = BroadcastEmail.objects.create(subject="test") admin = BroadcastEmailAdmin(model=BroadcastEmail, admin_site=AdminSite()) user = User.objects.create(username="******", password="******", email="*****@*****.**") user.userprofile.premium_offer = "premium_offer_discount_20" user.userprofile.premium_offer_expiration = datetime.now() + timedelta(days=1) user.userprofile.receive_marketing_and_commercial_material = True user.userprofile.save() user2 = User.objects.create(username="******", password="******", email="*****@*****.**") user2.userprofile.premium_offer = "premium_offer_discount_50" user2.userprofile.premium_offer_expiration = datetime.now() + timedelta(days=1) user2.userprofile.receive_marketing_and_commercial_material = True user2.userprofile.save() admin.submit_premium_offer_discount(request, BroadcastEmail.objects.filter(pk=email.pk)) args, kwargs = taskMock.call_args taskMock.assert_called() self.assertEqual(["*****@*****.**", "*****@*****.**"], list(args[1])) user.userprofile.refresh_from_db() user2.userprofile.refresh_from_db() self.assertIsNotNone(user.userprofile.premium_offer_sent) self.assertIsNotNone(user2.userprofile.premium_offer_sent)
def test_submit_premium_offer_discount_already_lite(self, taskMock): request = RequestFactory().get("/") email = BroadcastEmail.objects.create(subject="test") admin = BroadcastEmailAdmin(model=BroadcastEmail, admin_site=AdminSite()) user = User.objects.create(username="******", password="******") user.userprofile.premium_offer = "premium_offer_discount_20" user.userprofile.premium_offer_expiration = datetime.now() + timedelta(days=1) user.userprofile.receive_marketing_and_commercial_material = True user.userprofile.save() group, created = Group.objects.get_or_create(name="astrobin_premium") subscription, created = Subscription.objects.get_or_create( name="AstroBin Lite", price=1, group=group, category="premium") user_subscription, created = UserSubscription.objects.get_or_create( user=user, subscription=subscription) user_subscription.subscribe() admin.submit_premium_offer_discount(request, BroadcastEmail.objects.filter(pk=email.pk)) taskMock.assert_not_called()
def test_submit_premium_offer_discount_no_users(self, taskMock): request = RequestFactory().get("/") email = BroadcastEmail.objects.create(subject="test") admin = BroadcastEmailAdmin(model=BroadcastEmail, admin_site=AdminSite()) admin.submit_premium_offer_discount(request, BroadcastEmail.objects.filter(pk=email.pk)) taskMock.assert_not_called()
def test_submit_premium_offer_discount_no_marketing_emails(self, taskMock): request = RequestFactory().get("/") email = BroadcastEmail.objects.create(subject="test") admin = BroadcastEmailAdmin(model=BroadcastEmail, admin_site=AdminSite()) user = User.objects.create(username="******", password="******") user.userprofile.premium_offer = "premium_offer_discount_20" user.userprofile.premium_offer_expiration = datetime.now() + timedelta(days=1) user.userprofile.save() admin.submit_premium_offer_discount(request, BroadcastEmail.objects.filter(pk=email.pk)) taskMock.assert_not_called()
def test_submit_premium_offer_discount_already_sent_too_recently(self, messageUserMock, taskMock): request = RequestFactory().get("/") email = BroadcastEmail.objects.create(subject="test") admin = BroadcastEmailAdmin(model=BroadcastEmail, admin_site=AdminSite()) user = User.objects.create(username="******", password="******") user.userprofile.premium_offer = "premium_offer_discount_20" user.userprofile.premium_offer_expiration = datetime.now() + timedelta(days=1) user.userprofile.premium_offer_sent = sent = datetime.now() - timedelta(days=20) user.userprofile.receive_marketing_and_commercial_material = True user.userprofile.save() admin.submit_premium_offer_discount(request, BroadcastEmail.objects.filter(pk=email.pk)) taskMock.assert_not_called() user.userprofile.refresh_from_db() self.assertEqual(sent, user.userprofile.premium_offer_sent)