123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- import datetime
-
- from django.core.urlresolvers import reverse
- from django.test import TestCase
-
- from oscar.test import ClientTestCase
- from oscar.apps.offer.models import Range, ConditionalOffer, Condition, Benefit
- from oscar.apps.dashboard.offers.forms import MetaDataForm
-
-
- class ViewTests(ClientTestCase):
- is_staff = True
-
- def test_pages_exist(self):
- urls = [reverse('dashboard:offer-list'),
- reverse('dashboard:offer-metadata'),
- ]
- for url in urls:
- self.assertIsOk(self.client.get(url))
-
-
- class MetadataFormTests(TestCase):
-
- def test_dates_must_be_cronological(self):
- start_date = datetime.date(2012, 1, 1)
- end_date = datetime.date(2011, 1, 1)
- post = {'name': 'dummy',
- 'description': 'dummy',
- 'start_date': start_date,
- 'end_date': end_date,}
- form = MetaDataForm(post)
- self.assertFalse(form.is_valid())
-
-
- class OfferCreationTests(ClientTestCase):
- is_staff = True
-
- def setUp(self):
- super(OfferCreationTests, self).setUp()
- self.range = Range.objects.create(name='All products',
- includes_all_products=True)
-
- def tearDown(self):
- ConditionalOffer.objects.all().delete()
-
- def test_happy_path(self):
- # Metadata
- response = self.client.post(reverse('dashboard:offer-metadata'),
- {'name': 'my offer',
- 'description': 'offers are nice',
- 'start_date': '2012-01-01',
- 'end_date': '2013-01-01'})
- self.assertIsRedirect(response, reverse('dashboard:offer-condition'))
-
- # Condition
- response = self.client.post(reverse('dashboard:offer-condition'),
- {'range': self.range.id,
- 'type': 'Count',
- 'value': '3',})
- self.assertIsRedirect(response, reverse('dashboard:offer-benefit'))
-
- # Benefit
- response = self.client.post(reverse('dashboard:offer-benefit'),
- {'range': self.range.id,
- 'type': 'Multibuy',
- 'value': '1',})
- self.assertIsRedirect(response, reverse('dashboard:offer-preview'))
-
- # Preview
- response = self.client.post(reverse('dashboard:offer-preview'), {})
- self.assertIsRedirect(response, reverse('dashboard:offer-list'))
-
- offers = ConditionalOffer.objects.all()
- self.assertEqual(1, len(offers))
- offer = offers[0]
- self.assertEqual('my offer', offer.name)
-
- def test_cannot_jump_to_condition_step(self):
- response = self.client.get(reverse('dashboard:offer-condition'))
- self.assertIsRedirect(response)
-
-
- class OfferUpdatingTests(ClientTestCase):
- is_staff = True
-
- def setUp(self):
- super(OfferUpdatingTests, self).setUp()
- self.range = Range.objects.create(name='All products',
- includes_all_products=True)
- condition = Condition.objects.create(range=self.range,
- type='Count',
- value=3)
- benefit = Benefit.objects.create(range=self.range,
- type='Multibuy',
- value=1)
-
- start_date = datetime.date(2012, 1, 1)
- end_date = datetime.date(2013, 1, 1)
- self.offer = ConditionalOffer.objects.create(name='my offer',
- description='something',
- start_date=start_date,
- end_date=end_date,
- condition=condition,
- benefit=benefit)
-
- def tearDown(self):
- ConditionalOffer.objects.all().delete()
-
- def test_happy_path(self):
- metadata_url = reverse('dashboard:offer-metadata', kwargs={'pk': self.offer.id})
- response = self.client.get(metadata_url)
- self.assertTrue('my offer' in response.content)
-
- response = self.client.post(metadata_url,
- {'name': 'my new offer',
- 'description': 'something',
- 'start_date': '2012-01-01',
- 'end_date': '2013-01-01'})
- self.assertIsRedirect(response)
-
- condition_url = reverse('dashboard:offer-condition', kwargs={'pk': self.offer.id})
- response = self.client.post(condition_url,
- {'range': self.range.id,
- 'type': 'Count',
- 'value': '3',})
- self.assertIsRedirect(response)
-
- benefit_url = reverse('dashboard:offer-benefit', kwargs={'pk': self.offer.id})
- response = self.client.post(benefit_url,
- {'range': self.range.id,
- 'type': 'Multibuy',
- 'value': '1',})
- self.assertIsRedirect(response)
-
- preview_url = reverse('dashboard:offer-preview', kwargs={'pk': self.offer.id})
- response = self.client.get(preview_url)
- self.assertTrue('my new offer' in response.content)
-
- response = self.client.post(preview_url)
- self.assertIsRedirect(response)
-
- offer = ConditionalOffer.objects.get(id=self.offer.id)
- self.assertEqual('my new offer', offer.name)
-
- def test_can_jump_to_condition_step(self):
- response = self.client.get(reverse('dashboard:offer-condition',
- kwargs={'pk': self.offer.id}))
- self.assertIsOk(response)
|