Selaa lähdekoodia

Switch functional tests to use WebTest

master
David Winterbottom 13 vuotta sitten
vanhempi
commit
b2bbaf2e91

+ 1
- 1
oscar/templates/oscar/dashboard/offers/offer_detail.html Näytä tiedosto

@@ -62,7 +62,7 @@
62 62
             <tr>
63 63
                 <th>{% trans "Name" %}</th>
64 64
                 <td>{{ offer.name }}</td>
65
-                <td rowspan="2"><a href="{% url dashboard:offer-metadata offer.pk %}" class="btn">Edit</a></td>
65
+                <td rowspan="2"><a id="edit_metadata" href="{% url dashboard:offer-metadata offer.pk %}" class="btn">Edit</a></td>
66 66
             </tr>
67 67
             <tr>
68 68
                 <th>{% trans "Description" %}</th>

+ 99
- 93
tests/functional/dashboard/offer_tests.py Näytä tiedosto

@@ -1,100 +1,106 @@
1
-import datetime
2
-
3 1
 from django.core.urlresolvers import reverse
4
-from django.test import TestCase
5
-
6
-from oscar_testsupport.testcases import ClientTestCase
7
-from oscar.apps.offer.models import Range, ConditionalOffer, Condition, Benefit
8
-from oscar.apps.dashboard.offers.forms import MetaDataForm
9
-
10
-
11
-class ViewTests(ClientTestCase):
12
-    is_staff = True
13
-
14
-    def test_pages_exist(self):
15
-        urls = [reverse('dashboard:offer-list'),
16
-                reverse('dashboard:offer-metadata'),
17
-               ]
18
-        for url in urls:
19
-            self.assertIsOk(self.client.get(url))
20
-
21
-
22
-class MetadataFormTests(TestCase):
2
+from oscar_testsupport import testcases, factories
23 3
 
24
-    def test_dates_must_be_cronological(self):
25
-        start_date = datetime.date(2012, 1, 1)
26
-        end_date = datetime.date(2011, 1, 1)
27
-        post = {'name': 'dummy',
28
-                'description': 'dummy',
29
-                'start_date': start_date,
30
-                'end_date': end_date,}
31
-        form = MetaDataForm(post)
32
-        self.assertFalse(form.is_valid())
4
+from oscar.apps.offer import models
33 5
 
34 6
 
35
-class OfferUpdatingTests(ClientTestCase):
7
+class TestAnAdmin(testcases.WebTestCase):
8
+    # New version of offer tests buy using WebTest
36 9
     is_staff = True
37 10
 
38 11
     def setUp(self):
39
-        super(OfferUpdatingTests, self).setUp()
40
-        self.range = Range.objects.create(name='All products',
41
-                                          includes_all_products=True)
42
-        condition = Condition.objects.create(range=self.range,
43
-                                             type='Count',
44
-                                             value=3)
45
-        benefit = Benefit.objects.create(range=self.range,
46
-                                         type='Multibuy',
47
-                                         value=1)
48
-
49
-        start_date = datetime.date(2012, 1, 1)
50
-        end_date = datetime.date(2013, 1, 1)
51
-        self.offer = ConditionalOffer.objects.create(name='my offer',
52
-                                                     description='something',
53
-                                                     start_date=start_date,
54
-                                                     end_date=end_date,
55
-                                                     condition=condition,
56
-                                                     benefit=benefit)
57
-
58
-    def tearDown(self):
59
-        ConditionalOffer.objects.all().delete()
60
-
61
-    def test_happy_path(self):
62
-        metadata_url = reverse('dashboard:offer-metadata', kwargs={'pk': self.offer.id})
63
-        response = self.client.get(metadata_url)
64
-        self.assertTrue('my offer' in response.content)
65
-
66
-        response = self.client.post(metadata_url,
67
-                                    {'name': 'my new offer',
68
-                                     'description': 'something',
69
-                                     'start_date': '2012-01-01',
70
-                                     'end_date': '2013-01-01'})
71
-        self.assertIsRedirect(response)
72
-
73
-        condition_url = reverse('dashboard:offer-condition', kwargs={'pk': self.offer.id})
74
-        response = self.client.post(condition_url,
75
-                                    {'range': self.range.id,
76
-                                     'type': 'Count',
77
-                                     'value': '3',})
78
-        self.assertIsRedirect(response)
79
-
80
-        benefit_url = reverse('dashboard:offer-benefit', kwargs={'pk': self.offer.id})
81
-        response = self.client.post(benefit_url,
82
-                                    {'range': self.range.id,
83
-                                     'type': 'Multibuy',
84
-                                     'value': '',})
85
-        self.assertIsRedirect(response)
86
-
87
-        preview_url = reverse('dashboard:offer-preview', kwargs={'pk': self.offer.id})
88
-        response = self.client.get(preview_url)
89
-        self.assertTrue('my new offer' in response.content)
90
-
91
-        response = self.client.post(preview_url)
92
-        self.assertIsRedirect(response)
93
-
94
-        offer = ConditionalOffer.objects.get(id=self.offer.id)
95
-        self.assertEqual('my new offer', offer.name)
96
-
97
-    def test_can_jump_to_condition_step(self):
98
-        response = self.client.get(reverse('dashboard:offer-condition',
99
-                                           kwargs={'pk': self.offer.id}))
100
-        self.assertIsOk(response)
12
+        super(TestAnAdmin, self).setUp()
13
+        self.range = models.Range.objects.create(
14
+            name="All products", includes_all_products=True)
15
+
16
+    def test_can_create_an_offer(self):
17
+        list_page = self.get(reverse('dashboard:offer-list'))
18
+
19
+        metadata_page = list_page.click('Create new offer')
20
+        metadata_form = metadata_page.form
21
+        metadata_form['name'] = "Test offer"
22
+        metadata_form['start_date'] = "2012-01-01"
23
+        metadata_form['end_date'] = "2014-01-01"
24
+
25
+        condition_page = metadata_form.submit().follow()
26
+        condition_form = condition_page.form
27
+        condition_form['range'] = self.range.id
28
+        condition_form['type'] = "Count"
29
+        condition_form['value'] = "3"
30
+
31
+        benefit_page = condition_form.submit().follow()
32
+        benefit_form = benefit_page.form
33
+        benefit_form['range'] = self.range.id
34
+        benefit_form['type'] = "Percentage"
35
+        benefit_form['value'] = "25"
36
+
37
+        preview_page = benefit_form.submit().follow()
38
+        preview_page.form.submit()
39
+
40
+        offers = models.ConditionalOffer.objects.all()
41
+        self.assertEqual(1, len(offers))
42
+        offer = offers[0]
43
+        self.assertEqual("Test offer", offer.name)
44
+        self.assertEqual(3, offer.condition.value)
45
+        self.assertEqual(25, offer.benefit.value)
46
+
47
+    def test_can_update_an_existing_offer(self):
48
+        factories.create_offer(name="Offer A")
49
+
50
+        list_page = self.get(reverse('dashboard:offer-list'))
51
+        detail_page = list_page.click('Offer A')
52
+
53
+        metadata_page = detail_page.click(linkid="edit_metadata")
54
+        metadata_form = metadata_page.form
55
+        metadata_form['name'] = "Offer A+"
56
+
57
+        condition_page = metadata_form.submit().follow()
58
+        condition_form = condition_page.form
59
+
60
+        benefit_page = condition_form.submit().follow()
61
+        benefit_form = benefit_page.form
62
+
63
+        preview_page = benefit_form.submit().follow()
64
+        preview_page.form.submit()
65
+
66
+        models.ConditionalOffer.objects.get(name="Offer A+")
67
+
68
+    def test_can_jump_to_intermediate_step_for_existing_offer(self):
69
+        offer = factories.create_offer()
70
+        url = reverse('dashboard:offer-condition',
71
+                      kwargs={'pk': offer.id})
72
+        self.assertEqual(200, self.get(url).status_code)
73
+
74
+    def test_cannot_jump_to_intermediate_step(self):
75
+        for url_name in ('dashboard:offer-condition',
76
+                         'dashboard:offer-benefit',
77
+                         'dashboard:offer-preview'):
78
+            response = self.get(reverse(url_name))
79
+            self.assertEqual(302, response.status_code)
80
+
81
+    def test_can_suspend_an_offer(self):
82
+        # Create an offer
83
+        offer = factories.create_offer()
84
+        self.assertFalse(offer.is_suspended)
85
+
86
+        detail_page = self.get(reverse('dashboard:offer-detail',
87
+                                       kwargs={'pk': offer.pk}))
88
+        form = detail_page.forms['status_form']
89
+        form.submit('suspend')
90
+
91
+        reloaded_offer = models.ConditionalOffer.objects.get(pk=offer.pk)
92
+        self.assertTrue(reloaded_offer.is_suspended)
93
+
94
+    def test_can_reinstate_a_suspended_offer(self):
95
+        # Create a suspended offer
96
+        offer = factories.create_offer()
97
+        offer.suspend()
98
+        self.assertTrue(offer.is_suspended)
99
+
100
+        detail_page = self.get(reverse('dashboard:offer-detail',
101
+                                       kwargs={'pk': offer.pk}))
102
+        form = detail_page.forms['status_form']
103
+        form.submit('unsuspend')
104
+
105
+        reloaded_offer = models.ConditionalOffer.objects.get(pk=offer.pk)
106
+        self.assertFalse(reloaded_offer.is_suspended)

+ 0
- 79
tests/functional/dashboard/offer_tests2.py Näytä tiedosto

@@ -1,79 +0,0 @@
1
-from django.core.urlresolvers import reverse
2
-from oscar_testsupport import testcases, factories
3
-
4
-from oscar.apps.offer import models
5
-
6
-
7
-class TestAnAdmin(testcases.WebTestCase):
8
-    # New version of offer tests buy using WebTest
9
-    is_staff = True
10
-
11
-    def setUp(self):
12
-        super(TestAnAdmin, self).setUp()
13
-        self.range = models.Range.objects.create(
14
-            name="All products", includes_all_products=True)
15
-
16
-    def test_can_create_an_offer(self):
17
-        list_page = self.get(reverse('dashboard:offer-list'))
18
-
19
-        metadata_page = list_page.click('Create new offer')
20
-        metadata_form = metadata_page.form
21
-        metadata_form['name'] = "Test offer"
22
-        metadata_form['start_date'] = "2012-01-01"
23
-        metadata_form['end_date'] = "2014-01-01"
24
-
25
-        condition_page = metadata_form.submit().follow()
26
-        condition_form = condition_page.form
27
-        condition_form['range'] = self.range.id
28
-        condition_form['type'] = "Count"
29
-        condition_form['value'] = "3"
30
-
31
-        benefit_page = condition_form.submit().follow()
32
-        benefit_form = benefit_page.form
33
-        benefit_form['range'] = self.range.id
34
-        benefit_form['type'] = "Percentage"
35
-        benefit_form['value'] = "25"
36
-
37
-        preview_page = benefit_form.submit().follow()
38
-        preview_page.form.submit()
39
-
40
-        offers = models.ConditionalOffer.objects.all()
41
-        self.assertEqual(1, len(offers))
42
-        offer = offers[0]
43
-        self.assertEqual("Test offer", offer.name)
44
-        self.assertEqual(3, offer.condition.value)
45
-        self.assertEqual(25, offer.benefit.value)
46
-
47
-    def test_cannot_jump_to_intermediate_step(self):
48
-        for url_name in ('dashboard:offer-condition',
49
-                         'dashboard:offer-benefit',
50
-                         'dashboard:offer-preview'):
51
-            response = self.get(reverse(url_name))
52
-            self.assertEqual(302, response.status_code)
53
-
54
-    def test_can_suspend_an_offer(self):
55
-        # Create an offer
56
-        offer = factories.create_offer()
57
-        self.assertFalse(offer.is_suspended)
58
-
59
-        detail_page = self.get(reverse('dashboard:offer-detail',
60
-                                       kwargs={'pk': offer.pk}))
61
-        form = detail_page.forms['status_form']
62
-        form.submit('suspend')
63
-
64
-        reloaded_offer = models.ConditionalOffer.objects.get(pk=offer.pk)
65
-        self.assertTrue(reloaded_offer.is_suspended)
66
-
67
-    def test_can_reinstate_a_suspended_offer(self):
68
-        # Create a suspended offer
69
-        offer = factories.create_offer()
70
-        offer.suspend()
71
-        self.assertTrue(offer.is_suspended)
72
-
73
-        detail_page = self.get(reverse('dashboard:offer-detail',
74
-                                       kwargs={'pk': offer.pk}))
75
-        form = detail_page.forms['status_form']
76
-        form.submit('unsuspend')
77
-
78
-        reloaded_offer = models.ConditionalOffer.objects.get(pk=offer.pk)
79
-        self.assertFalse(reloaded_offer.is_suspended)

+ 18
- 0
tests/unit/offer/form_tests.py Näytä tiedosto

@@ -0,0 +1,18 @@
1
+import datetime
2
+
3
+from django.test import TestCase
4
+
5
+from oscar.apps.dashboard.offers.forms import MetaDataForm
6
+
7
+
8
+class TestMetadataFormEnforces(TestCase):
9
+
10
+    def test_cronological_dates(self):
11
+        start_date = datetime.date(2012, 1, 1)
12
+        end_date = datetime.date(2011, 1, 1)
13
+        post = {'name': 'dummy',
14
+                'description': 'dummy',
15
+                'start_date': start_date,
16
+                'end_date': end_date}
17
+        form = MetaDataForm(post)
18
+        self.assertFalse(form.is_valid())

Loading…
Peruuta
Tallenna