@@ -135,7 +135,7 @@ def test_list_single_model(runner):
135135
136136
137137def test_status_command (runner ):
138- """Test status command."""
138+ """Test status command with job ID argument ."""
139139 with patch ("vec_inf.cli._cli.VecInfClient" ) as mock_client_class :
140140 mock_client = MagicMock ()
141141 mock_client_class .return_value = mock_client
@@ -154,6 +154,111 @@ def test_status_command(runner):
154154 assert "Meta-Llama-3.1-8B" in result .output
155155
156156
157+ def test_status_command_no_job_id_no_running_jobs (runner ):
158+ """Test status command with no argument when no jobs are running."""
159+ with patch ("vec_inf.cli._cli.VecInfClient" ) as mock_client_class :
160+ mock_client = MagicMock ()
161+ mock_client_class .return_value = mock_client
162+ mock_client .fetch_running_jobs .return_value = []
163+
164+ result = runner .invoke (cli , ["status" ])
165+
166+ assert result .exit_code == 0
167+ assert "No running jobs found." in result .output
168+
169+
170+ def test_status_command_no_job_id_single_running_job (runner ):
171+ """Test status command with no argument when one job is running."""
172+ with patch ("vec_inf.cli._cli.VecInfClient" ) as mock_client_class :
173+ mock_client = MagicMock ()
174+ mock_client_class .return_value = mock_client
175+ mock_client .fetch_running_jobs .return_value = ["12345" ]
176+
177+ mock_status = MagicMock ()
178+ mock_status .model_name = "test-model-1"
179+ mock_status .server_status = "READY"
180+ mock_status .base_url = "http://localhost:8000"
181+ mock_status .pending_reason = None
182+ mock_status .failed_reason = None
183+ mock_client .get_status .return_value = mock_status
184+
185+ result = runner .invoke (cli , ["status" ])
186+
187+ assert result .exit_code == 0
188+ assert "test-model-1" in result .output
189+ mock_client .fetch_running_jobs .assert_called_once ()
190+ mock_client .get_status .assert_called_once_with ("12345" )
191+
192+
193+ def test_status_command_no_job_id_multiple_running_jobs (runner ):
194+ """Test status command with no argument when multiple jobs are running."""
195+ with patch ("vec_inf.cli._cli.VecInfClient" ) as mock_client_class :
196+ mock_client = MagicMock ()
197+ mock_client_class .return_value = mock_client
198+ mock_client .fetch_running_jobs .return_value = ["12345" , "67890" ]
199+
200+ mock_status_1 = MagicMock ()
201+ mock_status_1 .model_name = "test-model-1"
202+ mock_status_1 .server_status = "READY"
203+ mock_status_1 .base_url = "http://localhost:8000"
204+ mock_status_1 .pending_reason = None
205+ mock_status_1 .failed_reason = None
206+
207+ mock_status_2 = MagicMock ()
208+ mock_status_2 .model_name = "test-model-2"
209+ mock_status_2 .server_status = "PENDING"
210+ mock_status_2 .base_url = None
211+ mock_status_2 .pending_reason = "Waiting for resources"
212+ mock_status_2 .failed_reason = None
213+
214+ mock_client .get_status .side_effect = [mock_status_1 , mock_status_2 ]
215+
216+ result = runner .invoke (cli , ["status" ])
217+
218+ assert result .exit_code == 0
219+ assert "test-model-1" in result .output
220+ assert "test-model-2" in result .output
221+ assert "12345" in result .output
222+ assert "67890" in result .output
223+ mock_client .fetch_running_jobs .assert_called_once ()
224+ assert mock_client .get_status .call_count == 2
225+
226+
227+ def test_status_command_no_job_id_multiple_jobs_json_mode (runner ):
228+ """Test status command with no argument and JSON mode for multiple jobs."""
229+ with patch ("vec_inf.cli._cli.VecInfClient" ) as mock_client_class :
230+ mock_client = MagicMock ()
231+ mock_client_class .return_value = mock_client
232+ mock_client .fetch_running_jobs .return_value = ["12345" , "67890" ]
233+
234+ mock_status_1 = MagicMock ()
235+ mock_status_1 .model_name = "test-model-1"
236+ mock_status_1 .server_status = "READY"
237+ mock_status_1 .base_url = "http://localhost:8000"
238+ mock_status_1 .pending_reason = None
239+ mock_status_1 .failed_reason = None
240+
241+ mock_status_2 = MagicMock ()
242+ mock_status_2 .model_name = "test-model-2"
243+ mock_status_2 .server_status = "FAILED"
244+ mock_status_2 .base_url = None
245+ mock_status_2 .pending_reason = None
246+ mock_status_2 .failed_reason = "Out of memory"
247+
248+ mock_client .get_status .side_effect = [mock_status_1 , mock_status_2 ]
249+
250+ result = runner .invoke (cli , ["status" , "--json-mode" ])
251+
252+ assert result .exit_code == 0
253+ output = json .loads (result .output )
254+ assert isinstance (output , list )
255+ assert len (output ) == 2
256+ assert output [0 ]["model_name" ] == "test-model-1"
257+ assert output [0 ]["model_status" ] == "READY"
258+ assert output [1 ]["model_name" ] == "test-model-2"
259+ assert output [1 ]["model_status" ] == "FAILED"
260+
261+
157262def test_shutdown_command (runner ):
158263 """Test shutdown command."""
159264 with patch ("vec_inf.cli._cli.VecInfClient" ) as mock_client_class :
0 commit comments