選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

test_session.py 1.8KB

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