def test_get_renderer_by_id_not_found(): renderers = [Renderer('renderer_id'), Renderer('renderer1_id')] report = Report('local_id', renderers, None, None) with pytest.raises(ClickException) as cv: get_renderer_by_id(report, 'renderer2_id') assert str( cv.value ) == 'The output format `renderer2_id` is not available for report local_id.'
def execute_report(config, reports_dir, report_id, output_file, output_format): repo = load_repo(reports_dir) report = get_report_by_id(repo, report_id) if config.active.id.startswith('VA') and 'vendor' not in report.audience: raise ClickException( "This report is not expected to be executed on vendor accounts", ) if config.active.id.startswith('PA') and 'provider' not in report.audience: raise ClickException( "This report is not expected to be executed on provider accounts", ) entrypoint = get_report_entrypoint(report) client = ConnectClient( config.active.api_key, endpoint=config.active.endpoint, use_specs=False, default_limit=500, max_retries=3, default_headers=get_user_agent(), ) inputs = get_report_inputs(config, client, report.get_parameters()) click.echo(f'Preparing to run report {report_id}. Please wait...\n') progress = Progress(report.name) renderer_def = get_renderer_by_id(report, output_format or report.default_renderer) renderer = get_renderer( renderer_def.type, CLI_ENV, reports_dir, Account(config.active.id, config.active.name), Report(report.local_id, report.name, report.description, inputs), renderer_def.template, renderer_def.args, ) try: args = [client, inputs, progress] if report.report_spec == '2': args.extend( [ renderer_def.type, renderer.set_extra_context, ], ) data = entrypoint(*args) out = renderer.render(data, output_file, start_time=datetime.now(tz=pytz.utc)) except Exception: handle_report_exception() return finally: progress.close() click.echo(f'\nReport has been completed and saved as {out}\n')
def test_get_renderer_by_id(): renderers = [Renderer('renderer_id'), Renderer('renderer1_id')] report = Report('local_id', renderers, None, None) renderer = get_renderer_by_id(report, 'renderer_id') assert renderer == renderers[0]