Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

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