Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

test_voucher_form.py 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from django import test
  2. from datetime import timedelta
  3. from django.utils import timezone
  4. import pytest
  5. from oscar.apps.dashboard.vouchers import forms
  6. from oscar.test.factories.offer import RangeFactory
  7. class TestVoucherForm(test.TestCase):
  8. def test_doesnt_crash_on_empty_date_fields(self):
  9. """
  10. There was a bug fixed in 02b3644 where the voucher form would raise an
  11. exception (instead of just failing validation) when being called with
  12. empty fields. This tests exists to prevent a regression.
  13. """
  14. data = {
  15. 'code': '',
  16. 'name': '',
  17. 'start_date': '',
  18. 'end_date': '',
  19. 'benefit_range': '',
  20. 'benefit_type': 'Percentage',
  21. 'usage': 'Single use',
  22. }
  23. form = forms.VoucherForm(data=data)
  24. try:
  25. form.is_valid()
  26. except Exception as e:
  27. import traceback
  28. self.fail(
  29. "Exception raised while validating voucher form: %s\n\n%s" % (
  30. e.message, traceback.format_exc()))
  31. @pytest.mark.django_db
  32. class TestVoucherSetForm:
  33. def test_valid_form(self):
  34. a_range = RangeFactory(includes_all_products=True)
  35. start = timezone.now()
  36. end = start + timedelta(days=1)
  37. data = {
  38. 'name': 'test',
  39. 'code_length': 12,
  40. 'description': 'test',
  41. 'start_datetime': start,
  42. 'end_datetime': end,
  43. 'count': 10,
  44. 'benefit_range': a_range.pk,
  45. 'benefit_type': 'Percentage',
  46. 'benefit_value': 10,
  47. }
  48. form = forms.VoucherSetForm(data=data)
  49. assert form.is_valid()
  50. instance = form.save()
  51. assert instance.count == instance.vouchers.count()
  52. assert instance.start_datetime == start
  53. assert instance.end_datetime == end