@@ -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" )
194155def 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- 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" )
267180def test_prompt_all_with_single_field () -> None :
0 commit comments