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_tests2.py 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. from django.core.urlresolvers import reverse
  2. from oscar_testsupport import testcases
  3. from oscar.apps.offer import models
  4. class TestAnAdmin(testcases.WebTestCase):
  5. # New version of offer tests buy using WebTest
  6. is_staff = True
  7. def setUp(self):
  8. super(TestAnAdmin, self).setUp()
  9. self.range = models.Range.objects.create(
  10. name="All products", includes_all_products=True)
  11. def test_can_create_an_offer(self):
  12. list_page = self.get(reverse('dashboard:offer-list'))
  13. metadata_page = list_page.click('Create offer')
  14. metadata_form = metadata_page.form
  15. metadata_form['name'] = "Test offer"
  16. metadata_form['start_date'] = "2012-01-01"
  17. metadata_form['end_date'] = "2014-01-01"
  18. condition_page = metadata_form.submit().follow()
  19. condition_form = condition_page.form
  20. condition_form['range'] = self.range.id
  21. condition_form['type'] = "Count"
  22. condition_form['value'] = "3"
  23. benefit_page = condition_form.submit().follow()
  24. benefit_form = benefit_page.form
  25. benefit_form['range'] = self.range.id
  26. benefit_form['type'] = "Percentage"
  27. benefit_form['value'] = "25"
  28. preview_page = benefit_form.submit().follow()
  29. preview_page.form.submit()
  30. offers = models.ConditionalOffer.objects.all()
  31. self.assertEqual(1, len(offers))
  32. offer = offers[0]
  33. self.assertEqual("Test offer", offer.name)
  34. self.assertEqual(3, offer.condition.value)
  35. self.assertEqual(25, offer.benefit.value)
  36. def test_cannot_jump_to_intermediate_step(self):
  37. for url_name in ('dashboard:offer-condition',
  38. 'dashboard:offer-benefit',
  39. 'dashboard:offer-preview'):
  40. response = self.get(reverse(url_name))
  41. self.assertEqual(302, response.status_code)