Skip to content
Draft
7 changes: 6 additions & 1 deletion src/fabric_cli/commands/jobs/fab_jobs_run.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,16 @@ def exec_command(args: Namespace, item: Item) -> None:
fab_ui.print_output_format(
args,
message=f"Job instance '{args.instance_id}' cancelled (async)",
data={"job_id": args.instance_id},
show_key_value_list=True,
)

else:
fab_ui.print_output_format(
args, message=f"Job instance '{job_instance_id}' created"
args,
message=f"Job instance '{job_instance_id}' created",
data={"job_id": job_instance_id},
show_key_value_list=True,
)
fab_ui.print_grey(
f"→ To see status run 'job run-status {item.path} --id {job_instance_id}'"
Expand Down
5 changes: 4 additions & 1 deletion src/fabric_cli/commands/jobs/fab_jobs_run_cancel.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,10 @@ def exec_command(args: Namespace, item: Item) -> None:
)
else:
fab_ui.print_output_format(
args, message=f"Job instance '{args.id}' cancelled (async)"
args,
message=f"Job instance '{args.id}' cancelled (async)",
data={"job_id": args.id},
show_key_value_list=True,
)
fab_ui.print_grey(
f"→ To see status run 'job run-status {item.path} --id {args.id}'"
Expand Down
4 changes: 3 additions & 1 deletion src/fabric_cli/utils/fab_cmd_job_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,9 @@ def wait_for_job_completion(
fab_ui.print_progress(f"Job instance status: {status}")
if status == "Completed":
fab_ui.print_output_format(
args, message=f"Job instance '{job_ins_id}' completed"
args, message=f"Job instance '{job_ins_id}' completed",
data={"job_id": job_ins_id},
show_key_value_list=True,
)
else:
fab_logger.log_warning(
Expand Down
43 changes: 43 additions & 0 deletions tests/test_utils/test_fab_cmd_job_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
wait_for_job_completion,
validate_timeout_polling_interval,
)
from fabric_cli.commands.jobs.fab_jobs_run import exec_command as job_run_exec_command
from fabric_cli.utils.fab_http_polling_utils import DEFAULT_POLLING_INTERVAL
from fabric_cli.core.fab_exceptions import FabricCLIError
from fabric_cli.core import fab_constant
Expand Down Expand Up @@ -58,6 +59,22 @@ def test_wait_for_job_completion_immediate_success(mock_sleep, mock_api, mock_ge
mock_get_polling_interval.assert_called_once_with({}, None)


@patch('fabric_cli.utils.fab_cmd_job_utils.fab_ui.print_output_format')
@patch('fabric_cli.utils.fab_cmd_job_utils.get_polling_interval')
@patch('fabric_cli.utils.fab_cmd_job_utils.jobs_api.get_item_job_instance')
@patch('fabric_cli.utils.fab_cmd_job_utils.time.sleep')
def test_wait_for_job_completion_includes_job_id_in_data(mock_sleep, mock_api, mock_get_polling_interval, mock_print_output, default_job_args, mock_job_response):
mock_get_polling_interval.return_value = DEFAULT_POLLING_INTERVAL
mock_api.return_value = create_mock_response()

wait_for_job_completion(default_job_args, "test-job-id", mock_job_response, custom_polling_interval=None)

mock_print_output.assert_called_once()
call_kwargs = mock_print_output.call_args
assert call_kwargs.kwargs.get("data") == {"job_id": "test-job-id"}
assert call_kwargs.kwargs.get("show_key_value_list") is True


@patch('fabric_cli.utils.fab_cmd_job_utils.get_polling_interval')
@patch('fabric_cli.utils.fab_cmd_job_utils.jobs_api.get_item_job_instance')
@patch('fabric_cli.utils.fab_cmd_job_utils.time.sleep')
Expand Down Expand Up @@ -183,5 +200,31 @@ def test_validate_timeout_polling_interval_none_values_success():

validate_timeout_polling_interval(args)


@patch('fabric_cli.commands.jobs.fab_jobs_run.fab_ui.print_grey')
@patch('fabric_cli.commands.jobs.fab_jobs_run.fab_ui.print_output_format')
@patch('fabric_cli.commands.jobs.fab_jobs_run.jobs_api.run_on_demand_item_job')
def test_job_start_includes_job_id_in_data(mock_run_api, mock_print_output, mock_print_grey):
mock_response = Mock()
mock_response.status_code = 202
mock_run_api.return_value = (mock_response, "abc-123-job-id")

args = Namespace(
command="job",
jobs_command="start",
command_path="job start",
wait=False,
configuration=None,
)
item = Mock()
item.path = "/ws.Workspace/nb.Notebook"

job_run_exec_command(args, item)

mock_print_output.assert_called_once()
call_kwargs = mock_print_output.call_args
assert call_kwargs.kwargs.get("data") == {"job_id": "abc-123-job-id"}
assert call_kwargs.kwargs.get("show_key_value_list") is True

if __name__ == "__main__":
pytest.main([__file__])