Exemplo n.º 1
0
    def setUp(self):
        """
        Create a newsletter, newsletter issue and some
        subscriptions to test with.
        """
        # Create some newsletters
        self.newsletter1 = _make_newsletter("Test Newsletter 1")
        self.newsletter2 = _make_newsletter("Test Newsletter 2")

        # Create some approvers
        self.newsletter1.approvers = """\
        [email protected]
        [email protected]
        [email protected]
        [email protected]"""
        self.newsletter1.save()

        self.template = "<html><head></head><body><h1>Test</h1></body></html>"

        self.plaintext = "****\nTest\n****"

        # Create an issue for each newsletter
        self.newsletter_issue1 = NewsletterIssue()
        self.newsletter_issue1.subject = 'Test Newsletter Issue 1'
        self.newsletter_issue1.template = self.template
        self.newsletter_issue1.newsletter = self.newsletter1
        self.newsletter_issue1.save()

        self.newsletter_issue2 = NewsletterIssue()
        self.newsletter_issue2.subject = 'Test Newsletter Issue 2'
        self.newsletter_issue2.template = self.template
        self.newsletter_issue2.newsletter = self.newsletter2
        self.newsletter_issue2.save()

        # Create some email addresses and subscribe them to a newsletter
        emails = [
            '*****@*****.**', '*****@*****.**',
            '*****@*****.**'
        ]
        for email in emails:
            email_address = EmailAddress.objects.create_with_random_token(
                email=email)
            email_address.confirmed = True
            email_address.save()
            Subscription.objects.create(email_address=email_address,
                                        newsletter=self.newsletter1)

        # Create an unconfirmed email address
        self.unconfirmed_email = EmailAddress.objects.create_with_random_token(
            '*****@*****.**')
        Subscription.objects.create(email_address=self.unconfirmed_email,
                                    newsletter=self.newsletter1)

        # Create an extra email address and subscribe it to the second newsletter
        self.exclude_email = EmailAddress.objects.create_with_random_token(
            '*****@*****.**')
        self.exclude_email.confirmed = True
        self.exclude_email.save()
        Subscription.objects.create(email_address=self.exclude_email,
                                    newsletter=self.newsletter2)
Exemplo n.º 2
0
    def test_nova_context_processors(self):
        """
        Verify that NewsletterIssues use NOVA_CONTEXT_PROCESSORS to render themselves when
        render() is called
        """
        old_settings = getattr(settings, 'NOVA_CONTEXT_PROCESSORS', '!unset')
        settings.NOVA_CONTEXT_PROCESSORS = [
            'nova.tests.test_context_processor'
        ]

        try:
            issue = NewsletterIssue(template="{{ test }}")
            issue.newsletter = self.newsletter1
            issue.save()

            self.assertEqual(
                'extra test context',
                issue.render(extra_context={
                    'email': EmailAddress(email='*****@*****.**')
                }))
        finally:
            if old_settings == '!unset':
                del settings.NOVA_CONTEXT_PROCESSORS
            else:
                settings.NOVA_CONTEXT_PROCESSORS = old_settings
Exemplo n.º 3
0
    def test_render(self):
        """
        Verify that the NewsletterIssue template is correctly
        rendered.
        """
        email = '*****@*****.**'

        template = """\
        Issue ID: {{ issue.pk }}
        Date: {% now "Y-m-d" %}
        Email: {{ email }}"""

        issue = NewsletterIssue()
        issue.subject = 'Test'
        issue.template = template
        issue.newsletter = self.newsletter1
        issue.save()

        expected_template = """\
        Issue ID: {issue_id}
        Date: {date:%Y-%m-%d}
        Email: {email}""".format(issue_id=issue.pk,
                                 date=datetime.now(),
                                 email=email)

        rendered_template = issue.render(template=template,
                                         extra_context={'email': email})
        self.assertEqual(rendered_template, expected_template)
Exemplo n.º 4
0
    def test_default_tracking_domain(self):
        """
        Verify that on save a NewsletterIssue is assigned
        a default tracking domain from the parent Newsletter.
        """
        tracking_domain = 'darkhorse.com'
        self.newsletter1.default_tracking_domain = tracking_domain
        self.newsletter1.save()

        # Sanity check
        self.assertEqual(self.newsletter1.default_tracking_domain,
                         tracking_domain)

        issue = NewsletterIssue()
        issue.subject = 'Test'
        issue.newsletter = self.newsletter1
        issue.save()

        self.assertTrue(issue.tracking_domain not in (
            '',
            None,
        ))
        self.assertEqual(issue.tracking_domain,
                         issue.newsletter.default_tracking_domain)

        # Verify an existing tracking domain is not overwritten
        tracking_domain = 'tfaw.com'
        issue.tracking_domain = tracking_domain
        issue.save()

        self.assertEqual(tracking_domain, issue.tracking_domain)
        self.assertNotEqual(issue.tracking_domain,
                            issue.newsletter.default_tracking_domain)
Exemplo n.º 5
0
    def test_default_template(self):
        """
        Verify that on save a NewsletterIssue is assigned
        a default template from the parent Newsletter.
        """
        template_name = 'nova/test.html'
        self.newsletter1.default_template = template_name
        self.newsletter1.save()

        # Sanity check
        self.assertEqual(self.newsletter1.default_template, template_name)

        issue = NewsletterIssue()
        issue.subject = 'Test'
        issue.newsletter = self.newsletter1
        issue.save()

        self.assertTrue(issue.template not in (
            '',
            None,
        ))

        context = Context({})
        expected_template = render_to_string(template_name, context)
        issue_template = Template(issue.template).render(context)
        self.assertEqual(expected_template, issue_template)

        # Verify an existing template is not overwritten
        new_template = 'hai'
        issue.template = new_template
        issue.save()
        self.assertEqual(new_template,
                         NewsletterIssue.objects.get(pk=issue.pk).template)