Example #1
0
    def test_show(self, get_newsletters, mock_basket_request):
        # Newsletters are only listed if the user is subscribed to them,
        # or they are marked 'show' in the settings
        get_newsletters.return_value = newsletters
        # Find a newsletter without 'show' and subscribe the user to it
        for newsletter, data in newsletters.iteritems():
            if not data.get('show', False):
                self.user['newsletters'] = [newsletter]
                break
        url = reverse('newsletter.existing.token', args=(self.token, ))
        with patch.multiple('basket',
                            update_user=DEFAULT,
                            subscribe=DEFAULT,
                            unsubscribe=DEFAULT,
                            user=DEFAULT) as basket_patches:
            with patch('lib.l10n_utils.render') as render:
                basket_patches['user'].return_value = self.user
                render.return_value = HttpResponse('')
                self.client.get(url)
        request, template_name, context = render.call_args[0]
        forms = context['formset'].initial_forms

        shown = set([form.initial['newsletter'] for form in forms])
        to_show = set([
            newsletter for newsletter, data in newsletters.iteritems()
            if data.get('show', False)
        ])
        subscribed = set(self.user['newsletters'])

        # All subscribed newsletters are shown
        self.assertEqual(set(), subscribed - shown)
        # All 'show' newsletters are shown
        self.assertEqual(set(), to_show - shown)
        # No other newsletters are shown
        self.assertEqual(set(), shown - subscribed - to_show)
Example #2
0
    def test_show(self, get_newsletters, mock_basket_request):
        # Newsletters are only listed if the user is subscribed to them,
        # or they are marked 'show' and 'active' in the settings
        get_newsletters.return_value = newsletters
        # Find a newsletter without 'show' and subscribe the user to it
        for newsletter, data in newsletters.iteritems():
            if not data.get("show", False):
                self.user["newsletters"] = [newsletter]
                break
        url = reverse("newsletter.existing.token", args=(self.token,))
        with patch.multiple(
            "basket", update_user=DEFAULT, subscribe=DEFAULT, unsubscribe=DEFAULT, user=DEFAULT
        ) as basket_patches:
            with patch("lib.l10n_utils.render") as render:
                basket_patches["user"].return_value = self.user
                render.return_value = HttpResponse("")
                self.client.get(url)
        request, template_name, context = render.call_args[0]
        forms = context["formset"].initial_forms

        shown = set([form.initial["newsletter"] for form in forms])
        inactive = set([newsletter for newsletter, data in newsletters.iteritems() if not data.get("active", False)])
        to_show = (
            set([newsletter for newsletter, data in newsletters.iteritems() if data.get("show", False)]) - inactive
        )
        subscribed = set(self.user["newsletters"])

        # All subscribed newsletters except inactive ones are shown
        self.assertEqual(set(), subscribed - inactive - shown)
        # All 'show' newsletters are shown
        self.assertEqual(set(), to_show - shown)
        # No other newsletters are shown
        self.assertEqual(set(), shown - subscribed - to_show)