12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- from django.urls import reverse
-
- from oscar.test.factories import OrderFactory
- from oscar.test.testcases import WebTestCase
-
-
- class ThankYouViewTestCase(WebTestCase):
- is_anonymous = True
-
- def test_analytics_event_triggered_only_on_first_view(self):
- with self.settings(OSCAR_ALLOW_ANON_CHECKOUT=True):
- url = reverse("checkout:thank-you")
- order = OrderFactory()
- session = self.client.session
- # Put the order ID in the session, mimicking a completed order,
- # so that we can reach the thank you page.
- session["checkout_order_id"] = order.pk
- session.save()
-
- r1 = self.client.get(url, follow=True)
- self.assertTrue(r1.context["send_analytics_event"])
-
- # Request the view a second time
- r2 = self.client.get(url, follow=True)
- self.assertFalse(r2.context["send_analytics_event"])
-
- def test_missing_order_id_in_the_session(self):
- with self.settings(OSCAR_ALLOW_ANON_CHECKOUT=True):
- url = reverse("checkout:thank-you")
- response = self.app.get(url)
- self.assertIsRedirect(response)
- self.assertRedirectsTo(response, "catalogue:index")
-
- def test_order_id_in_the_session_is_for_a_non_existent_order(self):
- with self.settings(OSCAR_ALLOW_ANON_CHECKOUT=True):
- session = self.client.session
- # Put the order ID in the session, mimicking an order that no longer
- # exists, so that we can be redirected to the home page.
- session["checkout_order_id"] = 0
- session.save()
-
- response = self.client.get(reverse("checkout:thank-you"))
- self.assertRedirects(response, reverse("catalogue:index"))
|