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.

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from unittest import mock
  2. from django.contrib.sessions.middleware import SessionMiddleware
  3. from django.test import TestCase
  4. from django.test.client import RequestFactory
  5. from oscar.apps.checkout.utils import CheckoutSessionData
  6. class TestCheckoutSession(TestCase):
  7. """
  8. oscar.apps.checkout.utils.CheckoutSessionData
  9. """
  10. def setUp(self):
  11. request = RequestFactory().get('/')
  12. SessionMiddleware().process_request(request)
  13. self.session_data = CheckoutSessionData(request)
  14. def test_allows_data_to_be_written_and_read_out(self):
  15. self.session_data._set('namespace', 'key', 'value')
  16. self.assertEqual('value', self.session_data._get('namespace', 'key'))
  17. def test_allows_set_data_can_be_unset(self):
  18. self.session_data._set('namespace', 'key', 'value')
  19. self.session_data._unset('namespace', 'key')
  20. self.assertIsNone(self.session_data._get('namespace', 'key'))
  21. def test_stores_guest_email(self):
  22. self.session_data.set_guest_email('a@a.com')
  23. self.assertEqual('a@a.com', self.session_data.get_guest_email())
  24. def test_allows_a_namespace_to_be_flushed(self):
  25. self.session_data._set('ns', 'a', 1)
  26. self.session_data._set('ns', 'b', 2)
  27. self.session_data._flush_namespace('ns')
  28. self.assertIsNone(self.session_data._get('ns', 'a'))
  29. self.assertIsNone(self.session_data._get('ns', 'b'))
  30. def test_allows_bill_to_user_address(self):
  31. address = mock.Mock()
  32. address.id = 1
  33. self.session_data.bill_to_user_address(address)
  34. self.assertEqual(1, self.session_data.billing_user_address_id())