Skip to content

Commit

Permalink
Add tests for basket.VoucherAddView and basket.VoucherRemoveView
Browse files Browse the repository at this point in the history
This also fixes the `end_datetime` value set by the VoucherFactory
  • Loading branch information
mvantellingen committed Apr 27, 2015
1 parent 11bbfbc commit c6e7885
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 1 deletion.
1 change: 1 addition & 0 deletions src/oscar/apps/voucher/receivers.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from django.db.models import F

from oscar.apps.basket import signals


Expand Down
2 changes: 1 addition & 1 deletion src/oscar/test/newfactories.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ class VoucherFactory(factory.DjangoModelFactory):
code = "MYVOUCHER"

start_datetime = now() - datetime.timedelta(days=1)
end_datetime = now() - datetime.timedelta(days=10)
end_datetime = now() + datetime.timedelta(days=10)

class Meta:
model = get_model('voucher', 'Voucher')
Expand Down
54 changes: 54 additions & 0 deletions tests/integration/basket/view_tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
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

0 comments on commit c6e7885

Please sign in to comment.