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.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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.apps.customer import history
  6. from oscar.core.compat import get_user_model
  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. User = get_user_model()
  11. COOKIE_NAME = settings.OSCAR_RECENTLY_VIEWED_COOKIE_NAME
  12. class HistoryHelpersTest(WebTestCase):
  13. def setUp(self):
  14. self.product = create_product()
  15. def test_viewing_product_creates_cookie(self):
  16. response = self.app.get(self.product.get_absolute_url())
  17. self.assertTrue(COOKIE_NAME in response.test_app.cookies)
  18. def test_id_gets_added_to_cookie(self):
  19. response = self.app.get(self.product.get_absolute_url())
  20. request = HttpRequest()
  21. request.COOKIES[COOKIE_NAME] = _unquote(response.test_app.cookies[COOKIE_NAME])
  22. self.assertTrue(self.product.id in history.extract(request))
  23. def test_get_back_button(self):
  24. request = HttpRequest()
  25. request.META['SERVER_NAME'] = 'test'
  26. request.META['SERVER_PORT'] = 8000
  27. request.META['HTTP_REFERER'] = 'http://www.google.com'
  28. backbutton = get_back_button({'request': request})
  29. self.assertEqual(backbutton, None)
  30. request.META['HTTP_REFERER'] = 'http://test:8000/search/'
  31. backbutton = get_back_button({'request': request})
  32. self.assertTrue(backbutton)
  33. self.assertEqual(backbutton['title'], 'Back to search results')
  34. class TestAUserWhoLogsOut(WebTestCase):
  35. username = 'customer'
  36. password = 'cheeseshop'
  37. email = 'customer@example.com'
  38. def setUp(self):
  39. self.product = create_product()
  40. self.user = User.objects.create_user(username=self.username,
  41. email=self.email, password=self.password)
  42. def test_has_their_cookies_deleted_on_logout(self):
  43. response = self.get(self.product.get_absolute_url())
  44. self.assertTrue(COOKIE_NAME in response.test_app.cookies)
  45. response = self.get(reverse('customer:logout'))
  46. self.assertTrue((COOKIE_NAME not in response.test_app.cookies)
  47. or not self.app.cookies.get('oscar_recently_viewed_products', None))