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)
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)