You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

offer_tests.py 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import datetime
  2. from django.core.urlresolvers import reverse
  3. from django.test import TestCase
  4. from oscar_testsupport.testcases import ClientTestCase
  5. from oscar.apps.offer.models import Range, ConditionalOffer, Condition, Benefit
  6. from oscar.apps.dashboard.offers.forms import MetaDataForm
  7. class ViewTests(ClientTestCase):
  8. is_staff = True
  9. def test_pages_exist(self):
  10. urls = [reverse('dashboard:offer-list'),
  11. reverse('dashboard:offer-metadata'),
  12. ]
  13. for url in urls:
  14. self.assertIsOk(self.client.get(url))
  15. class MetadataFormTests(TestCase):
  16. def test_dates_must_be_cronological(self):
  17. start_date = datetime.date(2012, 1, 1)
  18. end_date = datetime.date(2011, 1, 1)
  19. post = {'name': 'dummy',
  20. 'description': 'dummy',
  21. 'start_date': start_date,
  22. 'end_date': end_date,}
  23. form = MetaDataForm(post)
  24. self.assertFalse(form.is_valid())
  25. class OfferUpdatingTests(ClientTestCase):
  26. is_staff = True
  27. def setUp(self):
  28. super(OfferUpdatingTests, self).setUp()
  29. self.range = Range.objects.create(name='All products',
  30. includes_all_products=True)
  31. condition = Condition.objects.create(range=self.range,
  32. type='Count',
  33. value=3)
  34. benefit = Benefit.objects.create(range=self.range,
  35. type='Multibuy',
  36. value=1)
  37. start_date = datetime.date(2012, 1, 1)
  38. end_date = datetime.date(2013, 1, 1)
  39. self.offer = ConditionalOffer.objects.create(name='my offer',
  40. description='something',
  41. start_date=start_date,
  42. end_date=end_date,
  43. condition=condition,
  44. benefit=benefit)
  45. def tearDown(self):
  46. ConditionalOffer.objects.all().delete()
  47. def test_happy_path(self):
  48. metadata_url = reverse('dashboard:offer-metadata', kwargs={'pk': self.offer.id})
  49. response = self.client.get(metadata_url)
  50. self.assertTrue('my offer' in response.content)
  51. response = self.client.post(metadata_url,
  52. {'name': 'my new offer',
  53. 'description': 'something',
  54. 'start_date': '2012-01-01',
  55. 'end_date': '2013-01-01'})
  56. self.assertIsRedirect(response)
  57. condition_url = reverse('dashboard:offer-condition', kwargs={'pk': self.offer.id})
  58. response = self.client.post(condition_url,
  59. {'range': self.range.id,
  60. 'type': 'Count',
  61. 'value': '3',})
  62. self.assertIsRedirect(response)
  63. benefit_url = reverse('dashboard:offer-benefit', kwargs={'pk': self.offer.id})
  64. response = self.client.post(benefit_url,
  65. {'range': self.range.id,
  66. 'type': 'Multibuy',
  67. 'value': '',})
  68. self.assertIsRedirect(response)
  69. preview_url = reverse('dashboard:offer-preview', kwargs={'pk': self.offer.id})
  70. response = self.client.get(preview_url)
  71. self.assertTrue('my new offer' in response.content)
  72. response = self.client.post(preview_url)
  73. self.assertIsRedirect(response)
  74. offer = ConditionalOffer.objects.get(id=self.offer.id)
  75. self.assertEqual('my new offer', offer.name)
  76. def test_can_jump_to_condition_step(self):
  77. response = self.client.get(reverse('dashboard:offer-condition',
  78. kwargs={'pk': self.offer.id}))
  79. self.assertIsOk(response)