def setUp(self): mailing_list = MailingListFactory() self.link = LinkFactory() self.subscriber = SubscriberFactory(mailing_list=mailing_list) self.subscriber.create_activity( ActivityTypes.SENT, email=self.link.email) # mock email sent activity
def setUp(self): mailing_list = MailingListFactory() self.link = LinkFactory() self.subscriber_1 = SubscriberFactory(mailing_list=mailing_list) self.subscriber_1.create_activity(ActivityTypes.SENT, email=self.link.email) # mock email sent activity self.subscriber_2 = SubscriberFactory(mailing_list=mailing_list) self.subscriber_2.create_activity(ActivityTypes.SENT, email=self.link.email) # mock email sent activity
def setUp(self): self.subscriber = SubscriberFactory() self.link = LinkFactory() self.url = reverse('subscribers:click', kwargs={ 'link_uuid': self.link.uuid, 'subscriber_uuid': self.subscriber.uuid }) self.response = self.client.get(self.url)
def test_click_two_links_same_email(self): link_2 = LinkFactory(email=self.link.email) self.subscriber_1.click(self.link) self.subscriber_1.click(link_2) self.link.refresh_from_db() link_2.refresh_from_db() self.link.email.campaign.refresh_from_db() self.assertEqual(1, self.link.email.campaign.unique_clicks_count) self.assertEqual(2, self.link.email.campaign.total_clicks_count) self.assertEqual(1, self.link.unique_clicks_count) self.assertEqual(1, self.link.total_clicks_count) self.assertEqual(1, link_2.unique_clicks_count) self.assertEqual(1, link_2.total_clicks_count) self.assertEqual(2, self.subscriber_1.activities.filter(activity_type=ActivityTypes.CLICKED).count())
def test_click_two_links_same_email(self): link_2 = LinkFactory(email=self.link.email) self.subscriber_1.click(self.link) self.subscriber_1.click(link_2) self.link.refresh_from_db() link_2.refresh_from_db() self.link.email.campaign.refresh_from_db() self.assertEqual(1, self.link.email.campaign.unique_clicks_count) self.assertEqual(2, self.link.email.campaign.total_clicks_count) self.assertEqual(1, self.link.unique_clicks_count) self.assertEqual(1, self.link.total_clicks_count) self.assertEqual(1, link_2.unique_clicks_count) self.assertEqual(1, link_2.total_clicks_count) self.assertEqual( 2, self.subscriber_1.activities.filter( activity_type=ActivityTypes.CLICKED).count())
class SubscriberClickLinkTests(TestCase): def setUp(self): mailing_list = MailingListFactory() self.link = LinkFactory() self.subscriber_1 = SubscriberFactory(mailing_list=mailing_list) self.subscriber_1.create_activity( ActivityTypes.SENT, email=self.link.email) # mock email sent activity self.subscriber_2 = SubscriberFactory(mailing_list=mailing_list) self.subscriber_2.create_activity( ActivityTypes.SENT, email=self.link.email) # mock email sent activity def test_click_rate_update(self): self.assertEqual(0.0, self.subscriber_1.click_rate) self.subscriber_1.click(self.link) self.subscriber_1.refresh_from_db() self.subscriber_1.mailing_list.refresh_from_db() self.assertEqual(1.0, self.subscriber_1.click_rate) # two subscribers, one with click_rate = 1.0 other with click_rate = 0.0 expected mailing list click_rate = 0.5 self.assertEqual(0.5, self.subscriber_1.mailing_list.click_rate) def test_click_link_once(self): self.subscriber_1.click(self.link) self.link.refresh_from_db() self.link.email.campaign.refresh_from_db() self.assertEqual(1, self.link.email.campaign.unique_clicks_count) self.assertEqual(1, self.link.email.campaign.total_clicks_count) self.assertEqual(1, self.link.unique_clicks_count) self.assertEqual(1, self.link.total_clicks_count) self.assertEqual( 1, self.subscriber_1.activities.filter( activity_type=ActivityTypes.CLICKED).count()) def test_click_link_twice(self): self.subscriber_1.click(self.link) self.subscriber_1.click(self.link) self.link.refresh_from_db() self.link.email.campaign.refresh_from_db() self.assertEqual(1, self.link.email.campaign.unique_clicks_count) self.assertEqual(2, self.link.email.campaign.total_clicks_count) self.assertEqual(1, self.link.unique_clicks_count) self.assertEqual(2, self.link.total_clicks_count) self.assertEqual( 2, self.subscriber_1.activities.filter( activity_type=ActivityTypes.CLICKED).count()) def test_two_subscribers_click_link_once(self): self.subscriber_1.click(self.link) self.subscriber_2.click(self.link) self.link.refresh_from_db() self.link.email.campaign.refresh_from_db() self.assertEqual(2, self.link.email.campaign.unique_clicks_count) self.assertEqual(2, self.link.email.campaign.total_clicks_count) self.assertEqual(2, self.link.unique_clicks_count) self.assertEqual(2, self.link.total_clicks_count) self.assertEqual( 1, self.subscriber_1.activities.filter( activity_type=ActivityTypes.CLICKED).count()) self.assertEqual( 1, self.subscriber_2.activities.filter( activity_type=ActivityTypes.CLICKED).count()) def test_click_two_links_same_email(self): link_2 = LinkFactory(email=self.link.email) self.subscriber_1.click(self.link) self.subscriber_1.click(link_2) self.link.refresh_from_db() link_2.refresh_from_db() self.link.email.campaign.refresh_from_db() self.assertEqual(1, self.link.email.campaign.unique_clicks_count) self.assertEqual(2, self.link.email.campaign.total_clicks_count) self.assertEqual(1, self.link.unique_clicks_count) self.assertEqual(1, self.link.total_clicks_count) self.assertEqual(1, link_2.unique_clicks_count) self.assertEqual(1, link_2.total_clicks_count) self.assertEqual( 2, self.subscriber_1.activities.filter( activity_type=ActivityTypes.CLICKED).count())
def setUp(self): self.subscriber = SubscriberFactory() self.email = EmailFactory() self.link = LinkFactory(email=self.email)
class SubscriberClickLinkForceOpenTests(TestCase): def setUp(self): mailing_list = MailingListFactory() self.link = LinkFactory() self.subscriber = SubscriberFactory(mailing_list=mailing_list) self.subscriber.create_activity( ActivityTypes.SENT, email=self.link.email) # mock email sent activity def test_click_without_open(self): """ Test clicking on a link without opening the email first The `click` method should enforce the email opening """ self.subscriber.click(self.link) # refresh models self.link.refresh_from_db() self.link.email.refresh_from_db() self.link.email.campaign.refresh_from_db() # checks for click counts self.assertEqual(1, self.link.email.campaign.unique_clicks_count) self.assertEqual(1, self.link.email.campaign.total_clicks_count) self.assertEqual(1, self.link.unique_clicks_count) self.assertEqual(1, self.link.total_clicks_count) self.assertEqual( 1, self.subscriber.activities.filter( activity_type=ActivityTypes.CLICKED).count()) # checks for open counts self.assertEqual(1, self.link.email.campaign.unique_opens_count) self.assertEqual(1, self.link.email.campaign.total_opens_count) self.assertEqual(1, self.link.email.unique_opens_count) self.assertEqual(1, self.link.email.total_opens_count) self.assertEqual( 1, self.subscriber.activities.filter( activity_type=ActivityTypes.OPENED).count()) def test_click_twice_without_open(self): """ Test clicking on a link twice without opening the email first Only the first `click` method should trigger the email opening """ self.subscriber.click(self.link) # trigger `open` method self.subscriber.click( self.link) # this time it should not trigger the `open` method # refresh models self.link.refresh_from_db() self.link.email.refresh_from_db() self.link.email.campaign.refresh_from_db() # checks for click counts self.assertEqual(1, self.link.email.campaign.unique_clicks_count) self.assertEqual(2, self.link.email.campaign.total_clicks_count) self.assertEqual(1, self.link.unique_clicks_count) self.assertEqual(2, self.link.total_clicks_count) self.assertEqual( 2, self.subscriber.activities.filter( activity_type=ActivityTypes.CLICKED).count()) # checks for open counts self.assertEqual(1, self.link.email.campaign.unique_opens_count) self.assertEqual(1, self.link.email.campaign.total_opens_count) self.assertEqual(1, self.link.email.unique_opens_count) self.assertEqual(1, self.link.email.total_opens_count) self.assertEqual( 1, self.subscriber.activities.filter( activity_type=ActivityTypes.OPENED).count()) def test_open_once_click_twice(self): """ Test opening email and clicking on a link twice """ self.subscriber.click(self.link) self.subscriber.open(self.link.email) self.subscriber.click(self.link) # refresh models self.link.refresh_from_db() self.link.email.refresh_from_db() self.link.email.campaign.refresh_from_db() # checks for click counts self.assertEqual(1, self.link.email.campaign.unique_clicks_count) self.assertEqual(2, self.link.email.campaign.total_clicks_count) self.assertEqual(1, self.link.unique_clicks_count) self.assertEqual(2, self.link.total_clicks_count) self.assertEqual( 2, self.subscriber.activities.filter( activity_type=ActivityTypes.CLICKED).count()) # checks for open counts self.assertEqual(1, self.link.email.campaign.unique_opens_count) self.assertEqual(2, self.link.email.campaign.total_opens_count) self.assertEqual(1, self.link.email.unique_opens_count) self.assertEqual(2, self.link.email.total_opens_count) self.assertEqual( 2, self.subscriber.activities.filter( activity_type=ActivityTypes.OPENED).count()) def test_open_twice_click_twice(self): """ Test opening email and clicking on a link twice """ self.subscriber.open(self.link.email) self.subscriber.click(self.link) self.subscriber.open(self.link.email) self.subscriber.click(self.link) # refresh models self.link.refresh_from_db() self.link.email.refresh_from_db() self.link.email.campaign.refresh_from_db() # checks for click counts self.assertEqual(1, self.link.email.campaign.unique_clicks_count) self.assertEqual(2, self.link.email.campaign.total_clicks_count) self.assertEqual(1, self.link.unique_clicks_count) self.assertEqual(2, self.link.total_clicks_count) self.assertEqual( 2, self.subscriber.activities.filter( activity_type=ActivityTypes.CLICKED).count()) # checks for open counts self.assertEqual(1, self.link.email.campaign.unique_opens_count) self.assertEqual(2, self.link.email.campaign.total_opens_count) self.assertEqual(1, self.link.email.unique_opens_count) self.assertEqual(2, self.link.email.total_opens_count) self.assertEqual( 2, self.subscriber.activities.filter( activity_type=ActivityTypes.OPENED).count())
def setUp(self): self.campaign = CampaignFactory() self.email = EmailFactory(campaign=self.campaign) self.link = LinkFactory(email=self.email)
class SubscriberClickLinkTests(TestCase): def setUp(self): mailing_list = MailingListFactory() self.link = LinkFactory() self.subscriber_1 = SubscriberFactory(mailing_list=mailing_list) self.subscriber_1.create_activity(ActivityTypes.SENT, email=self.link.email) # mock email sent activity self.subscriber_2 = SubscriberFactory(mailing_list=mailing_list) self.subscriber_2.create_activity(ActivityTypes.SENT, email=self.link.email) # mock email sent activity def test_click_rate_update(self): self.assertEqual(0.0, self.subscriber_1.click_rate) self.subscriber_1.click(self.link) self.subscriber_1.refresh_from_db() self.subscriber_1.mailing_list.refresh_from_db() self.assertEqual(1.0, self.subscriber_1.click_rate) # two subscribers, one with click_rate = 1.0 other with click_rate = 0.0 expected mailing list click_rate = 0.5 self.assertEqual(0.5, self.subscriber_1.mailing_list.click_rate) def test_click_link_once(self): self.subscriber_1.click(self.link) self.link.refresh_from_db() self.link.email.campaign.refresh_from_db() self.assertEqual(1, self.link.email.campaign.unique_clicks_count) self.assertEqual(1, self.link.email.campaign.total_clicks_count) self.assertEqual(1, self.link.unique_clicks_count) self.assertEqual(1, self.link.total_clicks_count) self.assertEqual(1, self.subscriber_1.activities.filter(activity_type=ActivityTypes.CLICKED).count()) def test_click_link_twice(self): self.subscriber_1.click(self.link) self.subscriber_1.click(self.link) self.link.refresh_from_db() self.link.email.campaign.refresh_from_db() self.assertEqual(1, self.link.email.campaign.unique_clicks_count) self.assertEqual(2, self.link.email.campaign.total_clicks_count) self.assertEqual(1, self.link.unique_clicks_count) self.assertEqual(2, self.link.total_clicks_count) self.assertEqual(2, self.subscriber_1.activities.filter(activity_type=ActivityTypes.CLICKED).count()) def test_two_subscribers_click_link_once(self): self.subscriber_1.click(self.link) self.subscriber_2.click(self.link) self.link.refresh_from_db() self.link.email.campaign.refresh_from_db() self.assertEqual(2, self.link.email.campaign.unique_clicks_count) self.assertEqual(2, self.link.email.campaign.total_clicks_count) self.assertEqual(2, self.link.unique_clicks_count) self.assertEqual(2, self.link.total_clicks_count) self.assertEqual(1, self.subscriber_1.activities.filter(activity_type=ActivityTypes.CLICKED).count()) self.assertEqual(1, self.subscriber_2.activities.filter(activity_type=ActivityTypes.CLICKED).count()) def test_click_two_links_same_email(self): link_2 = LinkFactory(email=self.link.email) self.subscriber_1.click(self.link) self.subscriber_1.click(link_2) self.link.refresh_from_db() link_2.refresh_from_db() self.link.email.campaign.refresh_from_db() self.assertEqual(1, self.link.email.campaign.unique_clicks_count) self.assertEqual(2, self.link.email.campaign.total_clicks_count) self.assertEqual(1, self.link.unique_clicks_count) self.assertEqual(1, self.link.total_clicks_count) self.assertEqual(1, link_2.unique_clicks_count) self.assertEqual(1, link_2.total_clicks_count) self.assertEqual(2, self.subscriber_1.activities.filter(activity_type=ActivityTypes.CLICKED).count())
class SubscriberClickLinkForceOpenTests(TestCase): def setUp(self): mailing_list = MailingListFactory() self.link = LinkFactory() self.subscriber = SubscriberFactory(mailing_list=mailing_list) self.subscriber.create_activity(ActivityTypes.SENT, email=self.link.email) # mock email sent activity def test_click_without_open(self): """ Test clicking on a link without opening the email first The `click` method should enforce the email opening """ self.subscriber.click(self.link) # refresh models self.link.refresh_from_db() self.link.email.refresh_from_db() self.link.email.campaign.refresh_from_db() # checks for click counts self.assertEqual(1, self.link.email.campaign.unique_clicks_count) self.assertEqual(1, self.link.email.campaign.total_clicks_count) self.assertEqual(1, self.link.unique_clicks_count) self.assertEqual(1, self.link.total_clicks_count) self.assertEqual(1, self.subscriber.activities.filter(activity_type=ActivityTypes.CLICKED).count()) # checks for open counts self.assertEqual(1, self.link.email.campaign.unique_opens_count) self.assertEqual(1, self.link.email.campaign.total_opens_count) self.assertEqual(1, self.link.email.unique_opens_count) self.assertEqual(1, self.link.email.total_opens_count) self.assertEqual(1, self.subscriber.activities.filter(activity_type=ActivityTypes.OPENED).count()) def test_click_twice_without_open(self): """ Test clicking on a link twice without opening the email first Only the first `click` method should trigger the email opening """ self.subscriber.click(self.link) # trigger `open` method self.subscriber.click(self.link) # this time it should not trigger the `open` method # refresh models self.link.refresh_from_db() self.link.email.refresh_from_db() self.link.email.campaign.refresh_from_db() # checks for click counts self.assertEqual(1, self.link.email.campaign.unique_clicks_count) self.assertEqual(2, self.link.email.campaign.total_clicks_count) self.assertEqual(1, self.link.unique_clicks_count) self.assertEqual(2, self.link.total_clicks_count) self.assertEqual(2, self.subscriber.activities.filter(activity_type=ActivityTypes.CLICKED).count()) # checks for open counts self.assertEqual(1, self.link.email.campaign.unique_opens_count) self.assertEqual(1, self.link.email.campaign.total_opens_count) self.assertEqual(1, self.link.email.unique_opens_count) self.assertEqual(1, self.link.email.total_opens_count) self.assertEqual(1, self.subscriber.activities.filter(activity_type=ActivityTypes.OPENED).count()) def test_open_once_click_twice(self): """ Test opening email and clicking on a link twice """ self.subscriber.click(self.link) self.subscriber.open(self.link.email) self.subscriber.click(self.link) # refresh models self.link.refresh_from_db() self.link.email.refresh_from_db() self.link.email.campaign.refresh_from_db() # checks for click counts self.assertEqual(1, self.link.email.campaign.unique_clicks_count) self.assertEqual(2, self.link.email.campaign.total_clicks_count) self.assertEqual(1, self.link.unique_clicks_count) self.assertEqual(2, self.link.total_clicks_count) self.assertEqual(2, self.subscriber.activities.filter(activity_type=ActivityTypes.CLICKED).count()) # checks for open counts self.assertEqual(1, self.link.email.campaign.unique_opens_count) self.assertEqual(2, self.link.email.campaign.total_opens_count) self.assertEqual(1, self.link.email.unique_opens_count) self.assertEqual(2, self.link.email.total_opens_count) self.assertEqual(2, self.subscriber.activities.filter(activity_type=ActivityTypes.OPENED).count()) def test_open_twice_click_twice(self): """ Test opening email and clicking on a link twice """ self.subscriber.open(self.link.email) self.subscriber.click(self.link) self.subscriber.open(self.link.email) self.subscriber.click(self.link) # refresh models self.link.refresh_from_db() self.link.email.refresh_from_db() self.link.email.campaign.refresh_from_db() # checks for click counts self.assertEqual(1, self.link.email.campaign.unique_clicks_count) self.assertEqual(2, self.link.email.campaign.total_clicks_count) self.assertEqual(1, self.link.unique_clicks_count) self.assertEqual(2, self.link.total_clicks_count) self.assertEqual(2, self.subscriber.activities.filter(activity_type=ActivityTypes.CLICKED).count()) # checks for open counts self.assertEqual(1, self.link.email.campaign.unique_opens_count) self.assertEqual(2, self.link.email.campaign.total_opens_count) self.assertEqual(1, self.link.email.unique_opens_count) self.assertEqual(2, self.link.email.total_opens_count) self.assertEqual(2, self.subscriber.activities.filter(activity_type=ActivityTypes.OPENED).count())