@@ -222,6 +222,43 @@ def test_exits_with_error_when_unsuccessful_upload(self, mock_path):
222222 assert result .exit_code == 1
223223
224224
225+ class TestUploadRecursive :
226+ def test_calls_upload_directory_with_recursive_flag (self , mock_path , tmp_path ):
227+ local_dir = tmp_path / "mydir"
228+ local_dir .mkdir ()
229+ mock_path .return_value .upload_directory .return_value = True
230+
231+ result = runner .invoke (app , ["upload" , "~/remote_dir" , "-c" , str (local_dir ), "-r" ])
232+
233+ mock_path .return_value .upload_directory .assert_called_once_with (str (local_dir ))
234+ assert result .exit_code == 0
235+
236+ def test_errors_when_stdin_used_with_recursive_flag (self , mock_path ):
237+ result = runner .invoke (app , ["upload" , "~/remote_dir" , "-c" , "-" , "-r" ])
238+
239+ assert result .exit_code == 1
240+ assert "stdin" in result .output
241+ assert "--recursive" in result .output
242+
243+ def test_reads_from_stdin_when_contents_is_dash (self , mock_path ):
244+ mock_path .return_value .upload .return_value = True
245+
246+ result = runner .invoke (app , ["upload" , "~/remote_file" , "-c" , "-" ], input = b"stdin content" )
247+
248+ mock_path .return_value .upload .assert_called_once ()
249+ assert result .exit_code == 0
250+
251+ def test_errors_when_directory_passed_without_recursive_flag (self , mock_path , tmp_path ):
252+ local_dir = tmp_path / "mydir"
253+ local_dir .mkdir ()
254+
255+ result = runner .invoke (app , ["upload" , "~/remote_dir" , "-c" , str (local_dir )])
256+
257+ assert result .exit_code == 1
258+ assert "is a directory" in result .output
259+ assert "--recursive" in result .output
260+
261+
225262class TestDelete :
226263 def test_creates_pa_path_with_provided_path (self , mock_path , home_dir ):
227264 runner .invoke (app , ["delete" , "~/hello.txt" ])
0 commit comments