def test_execute_report_invalid_renderer(mocker): config = Config() config.add_account( 'VA-000-001', 'Account 1', 'ApiKey XXXX:YYYY', ) config.activate('VA-000-001') mocker.patch('connect.cli.plugins.report.helpers.load_repo') mocker.patch( 'connect.cli.plugins.report.helpers.get_report_by_id', return_value=mocker.MagicMock( renderers=[ RendererDefinition('path', 'pdf', 'pdf', 'test'), ], audience=['vendor'], ), ) with pytest.raises(ClickException) as cv: execute_report(config, 'root_dir', 'local_id', 'out_file', 'out_format') assert str(cv.value) == 'The format out_format is not available for report local_id'
def test_execute_report_fail(mocker): mocker.patch('connect.cli.plugins.report.helpers.get_report_inputs') mocker.patch('connect.cli.plugins.report.helpers.get_renderer') ep_mock = mocker.MagicMock() mocker.patch( 'connect.cli.plugins.report.helpers.get_report_entrypoint', return_value=ep_mock, ) ep_mock.side_effect = Exception('this is an error') mocked_handle_exc = mocker.patch( 'connect.cli.plugins.report.helpers.handle_report_exception') config = Config() config.add_account( 'VA-000', 'Account 1', 'ApiKey XXXX:YYYY', ) config.activate('VA-000') execute_report( config, './tests/fixtures/reports/basic_report', 'entrypoint', 'out_file', None, ) mocked_handle_exc.assert_called_once()
def cmd_execute_report(config, reports_dir, report_id, output_file, output_format): if not output_file: output_file = os.path.join( os.getcwd(), f'report_{report_id}_{datetime.now().strftime("%Y%m%d_%H%M")}', ) execute_report(config, reports_dir, report_id, output_file, output_format)
def test_execute_report_v2(mocker): report_data = [('a', 'b', 'c')] param_inputs = {'param_id': 'param_value'} mocked_input = mocker.patch( 'connect.cli.plugins.report.helpers.get_report_inputs', return_value=param_inputs, ) ex_ctx_callback = mocker.MagicMock() renderer_mock = mocker.MagicMock() renderer_mock.type = 'pdf' renderer_mock.render.return_value = 'outfile.pdf' renderer_mock.set_extra_context = ex_ctx_callback mocker.patch( 'connect.cli.plugins.report.helpers.get_renderer', return_value=renderer_mock, ) ep_mock = mocker.MagicMock() mocker.patch( 'connect.cli.plugins.report.helpers.get_report_entrypoint', return_value=ep_mock, ) ep_mock.return_value = report_data config = Config() config.add_account( 'PA-000', 'Account 1', 'ApiKey XXXX:YYYY', ) config.activate('PA-000') execute_report( config, './tests/fixtures/reports/report_v2', 'test_v2', 'out_file', None, ) assert mocked_input.mock_calls[0].args[0] == config assert isinstance(mocked_input.mock_calls[0].args[1], ConnectClient) assert mocked_input.mock_calls[0].args[2] == [] assert renderer_mock.render.mock_calls[0].args[0] == report_data assert renderer_mock.render.mock_calls[0].args[1] == 'out_file' assert isinstance(ep_mock.mock_calls[0].args[0], ConnectClient) assert ep_mock.mock_calls[0].args[1] == param_inputs assert isinstance(ep_mock.mock_calls[0].args[2], Progress) assert ep_mock.mock_calls[0].args[3] == 'pdf' assert ep_mock.mock_calls[0].args[4] == ex_ctx_callback
def test_execute_report_invalid_account(mocker, account_id, audience, expected_error): config = Config() config.add_account( account_id, 'Account 1', 'ApiKey XXXX:YYYY', ) config.activate(account_id) mocker.patch('connect.cli.plugins.report.helpers.load_repo') mocker.patch( 'connect.cli.plugins.report.helpers.get_report_by_id', return_value=mocker.MagicMock(audience=[audience]), ) with pytest.raises(ClickException) as cv: execute_report(config, 'root_dir', 'local_id', 'out_file', 'out_format') assert str(cv.value) == expected_error
def test_execute_report_v1(mocker): report_data = [('a', 'b', 'c')] param_inputs = {'param_id': 'param_value'} mocked_input = mocker.patch( 'connect.cli.plugins.report.helpers.get_report_inputs', return_value=param_inputs, ) renderer_mock = mocker.MagicMock() renderer_mock.render.return_value = 'outfile.ext' mocker.patch( 'connect.cli.plugins.report.helpers.get_renderer', return_value=renderer_mock, ) ep_mock = mocker.MagicMock() mocker.patch( 'connect.cli.plugins.report.helpers.get_report_entrypoint', return_value=ep_mock, ) ep_mock.return_value = report_data config = Config() config.add_account( 'VA-000', 'Account 1', 'ApiKey XXXX:YYYY', ) config.activate('VA-000') execute_report( config, './tests/fixtures/reports/basic_report', 'entrypoint', 'out_file', None, ) assert mocked_input.mock_calls[0].args[0] == config assert isinstance(mocked_input.mock_calls[0].args[1], ConnectClient) assert isinstance(mocked_input.mock_calls[0].args[2], ReportDefinition) assert renderer_mock.render.mock_calls[0].args[0] == report_data assert renderer_mock.render.mock_calls[0].args[1] == 'out_file' assert isinstance(ep_mock.mock_calls[0].args[0], ConnectClient) assert ep_mock.mock_calls[0].args[1] == param_inputs assert isinstance(ep_mock.mock_calls[0].args[2], Progress)