You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_history.py 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. from http.cookies import _unquote
  2. from django.conf import settings
  3. from django.http import HttpRequest
  4. from django.urls import reverse
  5. from oscar.core.compat import get_user_model
  6. from oscar.core.loading import get_class
  7. from oscar.templatetags.history_tags import get_back_button
  8. from oscar.test.factories import create_product
  9. from oscar.test.testcases import WebTestCase
  10. CustomerHistoryManager = get_class("customer.history", "CustomerHistoryManager")
  11. User = get_user_model()
  12. COOKIE_NAME = settings.OSCAR_RECENTLY_VIEWED_COOKIE_NAME
  13. class HistoryHelpersTest(WebTestCase):
  14. def setUp(self):
  15. self.product = create_product()
  16. def test_viewing_product_creates_cookie(self):
  17. response = self.app.get(self.product.get_absolute_url())
  18. self.assertTrue(COOKIE_NAME in response.test_app.cookies)
  19. def test_id_gets_added_to_cookie(self):
  20. response = self.app.get(self.product.get_absolute_url())
  21. request = HttpRequest()
  22. request.COOKIES[COOKIE_NAME] = _unquote(response.test_app.cookies[COOKIE_NAME])
  23. self.assertTrue(self.product.id in CustomerHistoryManager.extract(request))
  24. def test_get_back_button(self):
  25. request = HttpRequest()
  26. request.META["SERVER_NAME"] = "test"
  27. request.META["SERVER_PORT"] = 8000
  28. request.META["HTTP_REFERER"] = "http://www.google.com"
  29. backbutton = get_back_button({"request": request})
  30. self.assertEqual(backbutton, None)
  31. request.META["HTTP_REFERER"] = "http://test:8000/search/"
  32. backbutton = get_back_button({"request": request})
  33. self.assertTrue(backbutton)
  34. self.assertEqual(backbutton["title"], "Back to search results")
  35. class TestAUserWhoLogsOut(WebTestCase):
  36. username = "customer"
  37. password = "cheeseshop"
  38. email = "customer@example.com"
  39. def setUp(self):
  40. self.product = create_product()
  41. self.user = User.objects.create_user(
  42. username=self.username, email=self.email, password=self.password
  43. )
  44. def test_has_their_cookies_deleted_on_logout(self):
  45. response = self.get(self.product.get_absolute_url())
  46. self.assertTrue(COOKIE_NAME in response.test_app.cookies)
  47. response = self.get(reverse("customer:logout"))
  48. self.assertTrue(
  49. (COOKIE_NAME not in response.test_app.cookies)
  50. or not self.app.cookies.get("oscar_recently_viewed_products", None)
  51. )