您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

test_views.py 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from django.urls import reverse
  2. from oscar.test.factories import OrderFactory
  3. from oscar.test.testcases import WebTestCase
  4. class ThankYouViewTestCase(WebTestCase):
  5. is_anonymous = True
  6. def test_analytics_event_triggered_only_on_first_view(self):
  7. with self.settings(OSCAR_ALLOW_ANON_CHECKOUT=True):
  8. url = reverse("checkout:thank-you")
  9. order = OrderFactory()
  10. session = self.client.session
  11. # Put the order ID in the session, mimicking a completed order,
  12. # so that we can reach the thank you page.
  13. session["checkout_order_id"] = order.pk
  14. session.save()
  15. r1 = self.client.get(url, follow=True)
  16. self.assertTrue(r1.context["send_analytics_event"])
  17. # Request the view a second time
  18. r2 = self.client.get(url, follow=True)
  19. self.assertFalse(r2.context["send_analytics_event"])
  20. def test_missing_order_id_in_the_session(self):
  21. with self.settings(OSCAR_ALLOW_ANON_CHECKOUT=True):
  22. url = reverse("checkout:thank-you")
  23. response = self.app.get(url)
  24. self.assertIsRedirect(response)
  25. self.assertRedirectsTo(response, "catalogue:index")
  26. def test_order_id_in_the_session_is_for_a_non_existent_order(self):
  27. with self.settings(OSCAR_ALLOW_ANON_CHECKOUT=True):
  28. session = self.client.session
  29. # Put the order ID in the session, mimicking an order that no longer
  30. # exists, so that we can be redirected to the home page.
  31. session["checkout_order_id"] = 0
  32. session.save()
  33. response = self.client.get(reverse("checkout:thank-you"))
  34. self.assertRedirects(response, reverse("catalogue:index"))