Example #1
0
    def test_import_ignores_banned_people(self):
        self.assertEquals(Person.objects.count(), 0)
        self.assertEquals(Subscription.objects.count(), 0)

        banned_person = Factory.person()
        banned_person.ban()
        self.assertEquals(Person.objects.count(), 1)
        self.assertEquals(Subscription.objects.count(), 0)

        import_source = Factory.rand_str()
        email = banned_person.email
        subscribed_at = Factory.rand_datetime()
        subscription_url = Factory.rand_url()
        double_opted_in = Factory.rand_bool()

        self.newsletter.import_subscriber(
            import_source=import_source,
            email=email,
            subscribed_at=subscribed_at,
            subscription_url=subscription_url,
            double_opted_in=double_opted_in,
            newsletter_name=self.newsletter.internal_name,
            overwrite=True,
        )

        self.assertEquals(Person.objects.count(), 1)
        self.assertEquals(Newsletter.objects.count(), 1)
        self.assertEquals(Subscription.objects.count(), 0)
Example #2
0
    def test_import_with_no_newsletter_creates_person_but_not_subscription(
            self):
        self.assertEquals(Person.objects.count(), 0)
        self.assertEquals(Subscription.objects.count(), 0)

        import_source = Factory.rand_str()
        email = Factory.rand_email()
        subscribed_at = Factory.rand_datetime()
        subscription_url = Factory.rand_url()
        double_opted_in = Factory.rand_bool()

        self.newsletter.import_subscriber(
            import_source=import_source,
            email=email,
            subscribed_at=subscribed_at,
            subscription_url=subscription_url,
            double_opted_in=double_opted_in,
        )

        self.assertEquals(Person.objects.count(), 1)
        self.assertEquals(Newsletter.objects.count(), 1)
        self.assertEquals(Subscription.objects.count(), 0)
Example #3
0
    def test_import_imports_trolls_but_marks_them(self):
        self.assertEquals(Person.objects.count(), 0)
        self.assertEquals(Subscription.objects.count(), 0)

        troll = Factory.person()
        troll.mark_troll()
        self.assertEquals(Person.objects.count(), 1)

        import_source = Factory.rand_str()
        email = troll.email
        subscribed_at = Factory.rand_datetime()
        subscription_url = Factory.rand_url()
        double_opted_in = Factory.rand_bool()
        import_time = timezone.now()

        self.newsletter.import_subscriber(
            import_source=import_source,
            email=email,
            subscribed_at=subscribed_at,
            subscription_url=subscription_url,
            double_opted_in=double_opted_in,
            newsletter_name=self.newsletter.internal_name,
            overwrite=True,
        )

        self.assertEquals(Person.objects.count(), 1)
        self.assertEquals(Newsletter.objects.count(), 1)
        self.assertEquals(Subscription.objects.count(), 1)
        p = Person.objects.all()[0]
        s = Subscription.objects.all()[0]

        # Check person
        self.assertEquals(p.first_name, None)
        self.assertEquals(p.last_name, None)
        self.assertEquals(p.email, email)
        self.assertEquals(p.hashed_first_name, lookup_hash(None))
        self.assertEquals(p.hashed_last_name, lookup_hash(None))
        self.assertEquals(p.hashed_email, lookup_hash(email))
        self.assertEquals(p.email_verified, double_opted_in)
        self.assertEquals(p.time_zone, None)
        self.assertEquals(p.was_imported, True)
        self.assertBasicallyEqualTimes(p.was_imported_at, import_time)
        self.assertEquals(p.import_source, import_source)
        self.assertEquals(p.marked_troll, True)
        self.assertBasicallyEqualTimes(p.marked_troll_at, import_time)
        self.assertEquals(p.banned, False)
        self.assertEquals(p.banned_at, None)
        self.assertEquals(p.hard_bounced, False)
        self.assertEquals(p.hard_bounced_at, None)
        self.assertEquals(p.hard_bounced_reason, None)
        self.assertEquals(p.hard_bounced_message, None)
        self.assertEquals(p.never_contact_set, False)
        self.assertEquals(p.never_contact_set_at, None)
        self.assertEquals(p.personal_contact, False)

        # Check subscription
        self.assertEquals(s.person, p)
        self.assertEquals(s.newsletter, self.newsletter)
        self.assertBasicallyEqualTimes(s.subscribed_at, import_time)
        self.assertEquals(s.subscription_url, subscription_url)
        self.assertEquals(s.subscribed_from_ip, None)
        self.assertEquals(s.was_imported, True)
        self.assertBasicallyEqualTimes(s.was_imported_at, import_time)
        self.assertEquals(s.import_source, import_source)
        self.assertEquals(s.double_opted_in, double_opted_in)
        self.assertEquals(s.double_opted_in_at, None)
        self.assertEquals(s.has_set_never_unsubscribe, False)
        self.assertEquals(s.unsubscribed, False)
        self.assertEquals(s.unsubscribed_at, None)
Example #4
0
    def test_import_overwrites_if_told_to(self):
        s = None
        p = None
        self.assertEquals(Person.objects.count(), 0)
        self.assertEquals(Subscription.objects.count(), 0)

        first_import_source = Factory.rand_str()
        email = Factory.rand_email()
        first_subscribed_at = Factory.rand_datetime()
        first_subscription_url = Factory.rand_url()
        first_double_opted_in = Factory.rand_bool()
        first_double_opted_in_at = Factory.rand_datetime()
        first_first_name = Factory.rand_name()
        first_last_name = Factory.rand_name()
        first_subscription_ip = Factory.rand_ip()
        first_time_zone = Factory.rand_timezone()

        self.newsletter.import_subscriber(
            import_source=first_import_source,
            email=email,
            subscribed_at=first_subscribed_at,
            subscription_url=first_subscription_url,
            double_opted_in=first_double_opted_in,
            double_opted_in_at=first_double_opted_in_at,
            first_name=first_first_name,
            last_name=first_last_name,
            subscription_ip=first_subscription_ip,
            time_zone=first_time_zone,
            newsletter_name=self.newsletter.internal_name,
        )

        second_import_source = Factory.rand_str()
        second_subscribed_at = Factory.rand_datetime()
        second_subscription_url = Factory.rand_url()
        second_double_opted_in = Factory.rand_bool()
        second_double_opted_in_at = Factory.rand_datetime()
        second_second_name = Factory.rand_name()
        second_last_name = Factory.rand_name()
        second_subscription_ip = Factory.rand_ip()
        second_time_zone = Factory.rand_timezone()
        second_import_time = timezone.now()  # noqa

        self.newsletter.import_subscriber(
            import_source=second_import_source,
            email=email,
            subscribed_at=second_subscribed_at,
            subscription_url=second_subscription_url,
            double_opted_in=second_double_opted_in,
            double_opted_in_at=second_double_opted_in_at,
            first_name=second_second_name,
            last_name=second_last_name,
            subscription_ip=second_subscription_ip,
            time_zone=second_time_zone,
            newsletter_name=self.newsletter.internal_name,
            overwrite=True,
        )

        self.assertEquals(Person.objects.count(), 1)
        self.assertEquals(Newsletter.objects.count(), 1)
        self.assertEquals(Subscription.objects.count(), 1)
        p = Person.objects.all()[0]
        s = Subscription.objects.all()[0]

        # Check person
        self.assertEquals(p.first_name, second_second_name)
        self.assertEquals(p.last_name, second_last_name)
        self.assertEquals(p.email, email)
        self.assertEquals(p.hashed_first_name, lookup_hash(second_second_name))
        self.assertEquals(p.hashed_last_name, lookup_hash(second_last_name))
        self.assertEquals(p.hashed_email, lookup_hash(email))
        self.assertEquals(p.email_verified, second_double_opted_in)
        self.assertEquals(p.time_zone, second_time_zone)
        self.assertEquals(p.was_imported, True)
        self.assertBasicallyEqualTimes(p.was_imported_at, second_import_time)
        self.assertEquals(p.import_source, second_import_source)
        self.assertEquals(p.marked_troll, False)
        self.assertEquals(p.marked_troll_at, None)
        self.assertEquals(p.banned, False)
        self.assertEquals(p.banned_at, None)
        self.assertEquals(p.hard_bounced, False)
        self.assertEquals(p.hard_bounced_at, None)
        self.assertEquals(p.hard_bounced_reason, None)
        self.assertEquals(p.hard_bounced_message, None)
        self.assertEquals(p.never_contact_set, False)
        self.assertEquals(p.never_contact_set_at, None)
        self.assertEquals(p.personal_contact, False)

        # Check subscription
        self.assertEquals(s.person, p)
        self.assertEquals(s.newsletter, self.newsletter)
        self.assertBasicallyEqualTimes(s.subscribed_at, second_import_time)
        self.assertEquals(s.subscription_url, second_subscription_url)
        self.assertEquals(s.subscribed_from_ip, second_subscription_ip)
        self.assertEquals(s.was_imported, True)
        self.assertBasicallyEqualTimes(s.was_imported_at, second_import_time)
        self.assertEquals(s.import_source, second_import_source)
        self.assertEquals(s.double_opted_in, second_double_opted_in)
        self.assertBasicallyEqualTimes(s.double_opted_in_at,
                                       second_double_opted_in_at)
        self.assertEquals(s.has_set_never_unsubscribe, False)
        self.assertEquals(s.unsubscribed, False)
        self.assertEquals(s.unsubscribed_at, None)