Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

view_tests.py 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. from django.contrib.messages import get_messages
  2. from django.test import RequestFactory, TestCase
  3. from django.utils import six
  4. from oscar.apps.basket import views
  5. from oscar.test.factories import BasketFactory, VoucherFactory
  6. class TestVoucherAddView(TestCase):
  7. def test_get(self):
  8. request = RequestFactory().get('/')
  9. view = views.VoucherAddView.as_view()
  10. response = view(request)
  11. self.assertEqual(response.status_code, 302)
  12. def _get_voucher_message(self, request):
  13. return '\n'.join(six.text_type(m.message) for m in get_messages(request))
  14. def test_post_valid(self):
  15. basket = BasketFactory()
  16. voucher = VoucherFactory()
  17. self.assertTrue(voucher.is_active())
  18. data = {
  19. 'code': voucher.code
  20. }
  21. request = RequestFactory().post('/', data=data, basket=basket)
  22. view = views.VoucherAddView.as_view()
  23. response = view(request)
  24. self.assertEqual(response.status_code, 302)
  25. voucher = voucher.__class__.objects.get(pk=voucher.pk)
  26. self.assertEqual(voucher.num_basket_additions, 1, msg=self._get_voucher_message(request))
  27. class TestVoucherRemoveView(TestCase):
  28. def test_post_valid(self):
  29. basket = BasketFactory()
  30. voucher = VoucherFactory(num_basket_additions=5)
  31. basket.vouchers.add(voucher)
  32. data = {
  33. 'code': voucher.code
  34. }
  35. request = RequestFactory().post('/', data=data, basket=basket)
  36. view = views.VoucherRemoveView.as_view()
  37. response = view(request, pk=voucher.pk)
  38. self.assertEqual(response.status_code, 302)
  39. voucher = voucher.__class__.objects.get(pk=voucher.pk)
  40. self.assertEqual(voucher.num_basket_additions, 4)