@@ -39,6 +39,35 @@ class TestListJobs(object):
3939 RESPONSE_JSON_WHEN_NO_JOBS_WERE_FOUND = []
4040 EXPECTED_STDOUT_WHEN_NO_JOBS_WERE_FOUND = "No jobs found\n "
4141
42+ BASIC_COMMAND_WITH_FILTERING = [
43+ "jobs" , "list" ,
44+ "--project" , "some_project_name" ,
45+ "--experimentId" , "some_experiment_id" ,
46+ ]
47+ EXPECTED_REQUEST_JSON_WITH_FILTERING = {
48+ "project" : "some_project_name" ,
49+ "experimentId" : "some_experiment_id" ,
50+ }
51+
52+ BASIC_COMMAND_WITH_MUTUALLY_EXCLUSIVE_FILTERS = [
53+ "jobs" , "list" ,
54+ "--project" , "some_project_name" ,
55+ "--projectId" , "some_project_id" ,
56+ ]
57+ EXPECTED_REQUEST_JSON_WITH_MUTUALLY_EXCLUSIVE_FILTERS = {
58+ "project" : "some_project_name" ,
59+ "projectId" : "some_project_id" ,
60+ }
61+ RESPONSE_JSON_WITH_MUTUALLY_EXCLUSIVE_FILTERS = {
62+ "error" : {
63+ "name" : "Error" ,
64+ "status" : 422 ,
65+ "message" : "Incompatible parameters: project and projectId cannot both be specified" ,
66+ },
67+ }
68+ EXPECTED_STDOUT_WHEN_MUTUALLY_EXCLUSIVE_FILTERS = "Incompatible parameters: project and projectId " \
69+ "cannot both be specified\n "
70+
4271 @mock .patch ("paperspace.cli.cli.client.requests.get" )
4372 def test_should_send_valid_post_request_and_print_table_when_jobs_list_was_used (self , get_patched ):
4473 get_patched .return_value = MockResponse (json_data = self .EXPECTED_RESPONSE_JSON , status_code = 200 )
@@ -109,3 +138,32 @@ def test_should_print_error_message_when_error_status_code_received_but_no_conte
109138 params = None )
110139 assert result .output == "Error while parsing response data: No JSON\n "
111140 assert result .exit_code == 0
141+
142+ @mock .patch ("paperspace.cli.cli.client.requests.get" )
143+ def test_should_send_valid_post_request_when_jobs_list_was_used_with_filter_options (self , get_patched ):
144+ get_patched .return_value = MockResponse (json_data = self .EXPECTED_RESPONSE_JSON , status_code = 200 )
145+
146+ cli_runner = CliRunner ()
147+ result = cli_runner .invoke (cli .cli , self .BASIC_COMMAND_WITH_FILTERING )
148+
149+ get_patched .assert_called_with (self .URL ,
150+ headers = self .EXPECTED_HEADERS ,
151+ json = self .EXPECTED_REQUEST_JSON_WITH_FILTERING ,
152+ params = None )
153+ assert result .output == self .EXPECTED_STDOUT
154+ assert result .exit_code == 0
155+
156+ @mock .patch ("paperspace.cli.cli.client.requests.get" )
157+ def test_should_print_proper_message_when_jobs_list_was_used_with_mutually_exclusive_filters (self , get_patched ):
158+ get_patched .return_value = MockResponse (json_data = self .RESPONSE_JSON_WITH_MUTUALLY_EXCLUSIVE_FILTERS ,
159+ status_code = 422 )
160+
161+ cli_runner = CliRunner ()
162+ result = cli_runner .invoke (cli .cli , self .BASIC_COMMAND_WITH_MUTUALLY_EXCLUSIVE_FILTERS )
163+
164+ get_patched .assert_called_with (self .URL ,
165+ headers = self .EXPECTED_HEADERS ,
166+ json = self .EXPECTED_REQUEST_JSON_WITH_MUTUALLY_EXCLUSIVE_FILTERS ,
167+ params = None )
168+ assert result .output == self .EXPECTED_STDOUT_WHEN_MUTUALLY_EXCLUSIVE_FILTERS
169+ assert result .exit_code == 0
0 commit comments