|
1 | | -import json |
2 | 1 | import pytest |
3 | 2 | from playwright.sync_api import expect |
4 | | -from time import sleep |
5 | 3 |
|
6 | 4 | from django.urls import path |
7 | 5 |
|
@@ -32,7 +30,7 @@ class StepperCollectionView(ContextMixin, FormCollectionView): |
32 | 30 |
|
33 | 31 | @pytest.mark.urls(__name__) |
34 | 32 | @pytest.mark.parametrize('viewname', ['empty_stepper', 'empty_stepper_forced']) |
35 | | -def test_steps_remain_inactive(page, mocker, viewname): |
| 33 | +def test_steps_remain_inactive(page, viewname): |
36 | 34 | stepper_collection = page.locator('django-stepper-collection') |
37 | 35 | expect(stepper_collection).to_be_visible() |
38 | 36 |
|
@@ -65,34 +63,31 @@ def test_steps_remain_inactive(page, mocker, viewname): |
65 | 63 | assert len(fields_error_list) == 2 |
66 | 64 | expect(fields_error_list[0]).to_be_empty() |
67 | 65 | expect(fields_error_list[1]).to_be_empty() |
68 | | - spy = mocker.spy(FormCollectionView, 'patch') |
69 | | - collections[0].locator('button[name="next"]').click() |
70 | | - sleep(0.2) |
71 | 66 | if viewname == 'empty_stepper_forced': |
72 | 67 | # in forced submission mode, the form is submitted even if invalid |
73 | | - spy.assert_called() |
74 | | - assert spy.spy_return.status_code == 422 |
| 68 | + with page.expect_response(page.url) as response_info: |
| 69 | + collections[0].locator('button[name="next"]').click() |
| 70 | + assert response_info.value.ok is False |
| 71 | + assert response_info.value.status == 422 |
75 | 72 | else: |
76 | | - spy.assert_not_called() |
| 73 | + collections[0].locator('button[name="next"]').click() |
77 | 74 | expect(collections[0].locator('.dj-form-errors .dj-errorlist')).to_be_empty() |
78 | 75 | expect(fields_error_list[0]).to_contain_text('This field is required.') |
79 | 76 | expect(fields_error_list[1]).to_contain_text('This field is required.') |
80 | 77 |
|
81 | 78 |
|
82 | 79 | @pytest.mark.urls(__name__) |
83 | 80 | @pytest.mark.parametrize('viewname', ['empty_stepper']) |
84 | | -def test_steps_become_active(page, mocker, viewname): |
| 81 | +def test_steps_become_active(page, viewname): |
85 | 82 | stepper_collection = page.locator('django-stepper-collection') |
86 | 83 | step_items = stepper_collection.locator('ul.stepper-horizontal > li.stepper-step').all() |
87 | 84 | collections = stepper_collection.locator('django-form-collection').all() |
88 | 85 |
|
89 | 86 | collections[0].locator('input[name="first_name"]').fill("John") |
90 | 87 | collections[0].locator('input[name="last_name"]').fill("Doe") |
91 | | - spy = mocker.spy(FormCollectionView, 'patch') |
92 | | - collections[0].locator('button[name="next"]').click() |
93 | | - sleep(0.2) |
94 | | - spy.assert_called() |
95 | | - assert spy.spy_return.status_code == 200 |
| 88 | + with page.expect_response(page.url) as response_info: |
| 89 | + collections[0].locator('button[name="next"]').click() |
| 90 | + assert response_info.value.ok is True |
96 | 91 |
|
97 | 92 | expect(step_items[0]).not_to_have_attribute('aria-current', r'.*') |
98 | 93 | expect(step_items[0]).to_have_class('stepper-step visited') |
@@ -164,13 +159,11 @@ def test_steps_become_active(page, mocker, viewname): |
164 | 159 | collections[2].locator('input[name="card_owner"]').fill("John Doe") |
165 | 160 | collections[2].locator('input[name="card_number"]').fill("1234 5678 9012 3456") |
166 | 161 |
|
167 | | - # submit the three form |
168 | | - spy = mocker.spy(FormCollectionView, 'post') |
169 | | - collections[2].locator('button[name="activate_submit"]').click() |
170 | | - sleep(0.2) |
171 | | - spy.assert_called() |
172 | | - assert spy.spy_return.status_code == 200 |
173 | | - request_body = json.loads(spy.call_args.args[1].body) |
| 162 | + # submit all three forms |
| 163 | + with page.expect_response(page.url) as response_info: |
| 164 | + collections[2].locator('button[name="activate_submit"]').click() |
| 165 | + assert response_info.value.ok is True |
| 166 | + request_body = response_info.value.request.post_data_json |
174 | 167 | expected = { |
175 | 168 | 'extra_data': {}, |
176 | 169 | 'formset_data': { |
|
0 commit comments