from django.contrib.messages import get_messages from django.test import RequestFactory, TestCase from oscar.apps.basket import views from oscar.test.factories import BasketFactory, VoucherFactory from oscar.test.utils import RequestFactory class TestVoucherAddView(TestCase): def test_get(self): request = RequestFactory().get('/') view = views.VoucherAddView.as_view() response = view(request) assert response.status_code == 302 def test_post_valid(self): basket = BasketFactory() voucher = VoucherFactory() assert voucher.is_active() data = { 'code': voucher.code } request = RequestFactory().post('/', data=data, basket=basket) view = views.VoucherAddView.as_view() response = view(request) assert response.status_code == 302 voucher = voucher.__class__.objects.get(pk=voucher.pk) assert voucher.num_basket_additions == 1, ( [unicode(m.message) for m in get_messages(request)]) class TestVoucherRemoveView(TestCase): def test_post_valid(self): basket = BasketFactory() voucher = VoucherFactory() basket.vouchers.add(voucher) data = { 'code': voucher.code } request = RequestFactory().post('/', data=data, basket=basket) view = views.VoucherRemoveView.as_view() response = view(request, pk=voucher.pk) assert response.status_code == 302 voucher = voucher.__class__.objects.get(pk=voucher.pk) assert voucher.num_basket_additions == -1