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_views.py 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. from django.contrib.messages import get_messages
  2. from django.test import TestCase
  3. from django.utils import six
  4. from oscar.apps.basket import views
  5. from oscar.test.factories import VoucherFactory
  6. from tests.fixtures import RequestFactory
  7. class TestVoucherAddView(TestCase):
  8. def test_get(self):
  9. request = RequestFactory().get('/')
  10. view = views.VoucherAddView.as_view()
  11. response = view(request)
  12. self.assertEqual(response.status_code, 302)
  13. def _get_voucher_message(self, request):
  14. return '\n'.join(six.text_type(m.message) for m in get_messages(request))
  15. def test_post_valid(self):
  16. voucher = VoucherFactory()
  17. self.assertTrue(voucher.is_active())
  18. data = {
  19. 'code': voucher.code
  20. }
  21. request = RequestFactory().post('/', data=data)
  22. request.basket.save()
  23. view = views.VoucherAddView.as_view()
  24. response = view(request)
  25. self.assertEqual(response.status_code, 302)
  26. voucher = voucher.__class__.objects.get(pk=voucher.pk)
  27. self.assertEqual(voucher.num_basket_additions, 1, msg=self._get_voucher_message(request))
  28. class TestVoucherRemoveView(TestCase):
  29. def test_post_valid(self):
  30. voucher = VoucherFactory(num_basket_additions=5)
  31. data = {
  32. 'code': voucher.code
  33. }
  34. request = RequestFactory().post('/', data=data)
  35. request.basket.save()
  36. request.basket.vouchers.add(voucher)
  37. view = views.VoucherRemoveView.as_view()
  38. response = view(request, pk=voucher.pk)
  39. self.assertEqual(response.status_code, 302)
  40. voucher = voucher.__class__.objects.get(pk=voucher.pk)
  41. self.assertEqual(voucher.num_basket_additions, 4)
  42. def test_post_with_missing_voucher(self):
  43. """ If the voucher is missing, verify the view queues a message and redirects. """
  44. pk = '12345'
  45. view = views.VoucherRemoveView.as_view()
  46. request = RequestFactory().post('/')
  47. request.basket.save()
  48. response = view(request, pk=pk)
  49. self.assertEqual(response.status_code, 302)
  50. actual = list(get_messages(request))[-1].message
  51. expected = "No voucher found with id '{}'".format(pk)
  52. self.assertEqual(actual, expected)