Skip to content

Commit d4e7e57

Browse files
committed
more tests
1 parent 9ebeefe commit d4e7e57

File tree

3 files changed

+590
-87
lines changed

3 files changed

+590
-87
lines changed

tests/cli/forms/test_form.py

Lines changed: 0 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -150,45 +150,6 @@ def test_prompt_all_returns_none_when_user_cancels() -> None:
150150
assert result is None
151151

152152

153-
@patch("data_designer.cli.ui.BACK", "BACK_SENTINEL")
154-
def test_prompt_all_navigates_back_to_previous_field() -> None:
155-
"""Test prompt_all allows user to go back and change previous answers."""
156-
field1 = create_field("name")
157-
field2 = create_field("email")
158-
159-
# User enters "John", then backs up from email, re-enters "Jane", proceeds with email
160-
field1.prompt_user = Mock(side_effect=["John", "Jane"])
161-
field2.prompt_user = Mock(side_effect=["BACK_SENTINEL", "[email protected]"])
162-
163-
form = Form(name="test_form", fields=[field1, field2])
164-
165-
result = form.prompt_all()
166-
167-
# Changed value should be preserved
168-
assert result == {"name": "Jane", "email": "[email protected]"}
169-
assert field1.prompt_user.call_count == 2
170-
assert field2.prompt_user.call_count == 2
171-
172-
173-
@patch("data_designer.cli.ui.BACK", "BACK_SENTINEL")
174-
def test_prompt_all_handles_back_from_first_field() -> None:
175-
"""Test prompt_all stays at first field if BACK is returned (edge case)."""
176-
field1 = create_field("name")
177-
field2 = create_field("email")
178-
179-
# Simulate first field somehow returning BACK, then valid input
180-
field1.prompt_user = Mock(side_effect=["BACK_SENTINEL", "John"])
181-
field2.prompt_user = Mock(return_value="[email protected]")
182-
183-
form = Form(name="test_form", fields=[field1, field2])
184-
185-
result = form.prompt_all()
186-
187-
# Should eventually complete successfully
188-
assert result == {"name": "John", "email": "[email protected]"}
189-
assert field1.prompt_user.call_count == 2
190-
191-
192153
@patch("data_designer.cli.forms.form.print_error")
193154
@patch("data_designer.cli.ui.BACK", "BACK_SENTINEL")
194155
def test_prompt_all_retries_on_validation_error(mock_print_error: Mock) -> None:
@@ -214,54 +175,6 @@ def test_prompt_all_retries_on_validation_error(mock_print_error: Mock) -> None:
214175
assert field.prompt_user.call_count == 2
215176

216177

217-
@patch("data_designer.cli.ui.BACK", "BACK_SENTINEL")
218-
def test_prompt_all_handles_multiple_back_steps() -> None:
219-
"""Test prompt_all handles navigating back multiple fields."""
220-
field1 = create_field("name")
221-
field2 = create_field("email")
222-
field3 = create_field("phone")
223-
224-
# User goes forward to field3, backs to field2, backs to field1, then completes
225-
field1.prompt_user = Mock(side_effect=["John", "Jane"])
226-
field2.prompt_user = Mock(side_effect=["[email protected]", "BACK_SENTINEL", "[email protected]"])
227-
field3.prompt_user = Mock(side_effect=["BACK_SENTINEL", "123-456-7890"])
228-
229-
form = Form(name="test_form", fields=[field1, field2, field3])
230-
231-
result = form.prompt_all()
232-
233-
assert result == {
234-
"name": "Jane",
235-
"email": "[email protected]",
236-
"phone": "123-456-7890",
237-
}
238-
239-
240-
@patch("data_designer.cli.ui.BACK", "BACK_SENTINEL")
241-
def test_prompt_all_handles_validation_error_after_back_navigation() -> None:
242-
"""Test validation errors work correctly after navigating back."""
243-
validator = Mock(
244-
side_effect=[
245-
(True, None), # First entry valid
246-
(False, "Invalid"), # After back, new entry invalid
247-
(True, None), # Third try valid
248-
]
249-
)
250-
field1 = TextField(name="email", prompt="Enter email", validator=validator)
251-
field2 = create_field("name")
252-
253-
# Enter valid email, enter name, go back, enter invalid email, enter valid email, complete
254-
field1.prompt_user = Mock(side_effect=["[email protected]", "invalid", "[email protected]"])
255-
field2.prompt_user = Mock(side_effect=["John", "BACK_SENTINEL", "Jane"])
256-
257-
form = Form(name="test_form", fields=[field1, field2])
258-
259-
result = form.prompt_all()
260-
261-
# Should eventually succeed with final values
262-
assert result == {"email": "[email protected]", "name": "Jane"}
263-
264-
265178
# Edge cases
266179
@patch("data_designer.cli.ui.BACK", "BACK_SENTINEL")
267180
def test_prompt_all_with_single_field() -> None:

0 commit comments

Comments
 (0)