Skip to content

Commit

Permalink
add extra details print (#5)
Browse files Browse the repository at this point in the history
  • Loading branch information
miner34006 authored Sep 19, 2023
1 parent f4e9f88 commit ca406e0
Show file tree
Hide file tree
Showing 3 changed files with 106 additions and 2 deletions.
8 changes: 6 additions & 2 deletions tests/_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,12 @@ def make_step_result(vstep: Optional[VirtualStep] = None) -> StepResult:
return StepResult(vstep or make_vstep())


def make_scenario_result(vscenario: Optional[VirtualScenario] = None) -> ScenarioResult:
return ScenarioResult(vscenario or make_vscenario())
def make_scenario_result(vscenario: Optional[VirtualScenario] = None,
extra_details: str = None) -> ScenarioResult:
scenario_result = ScenarioResult(vscenario or make_vscenario())
if extra_details:
scenario_result.add_extra_details(extra_details)
return scenario_result


def make_aggregated_result(scenario_result: Optional[ScenarioResult] = None) -> AggregatedResult:
Expand Down
91 changes: 91 additions & 0 deletions tests/test_gitlab_reporter.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,54 @@ async def test_scenario_passed(*, dispatcher: Dispatcher, printer_: Mock):
]


@pytest.mark.usefixtures(gitlab_reporter.__name__)
async def test_scenario_passed_with_extra_details(*, dispatcher: Dispatcher, printer_: Mock):
with given:
await fire_arg_parsed_event(dispatcher)

extra_details = '<details>'
scenario_result = make_scenario_result(extra_details=extra_details).mark_passed()
aggregated_result = make_aggregated_result(scenario_result)
event = ScenarioReportedEvent(aggregated_result)

with when:
await dispatcher.fire(event)

with then:
assert printer_.mock_calls == [
call.print_scenario_subject(aggregated_result.scenario.subject,
ScenarioStatus.PASSED,
elapsed=aggregated_result.elapsed,
prefix=" "),
call.print_scenario_extra_details([extra_details],
prefix=" ")
]


@pytest.mark.usefixtures(gitlab_reporter.__name__)
async def test_scenario_failed_with_extra_details(*, dispatcher: Dispatcher, printer_: Mock):
with given:
await fire_arg_parsed_event(dispatcher)

extra_details = '<details>'
scenario_result = make_scenario_result(extra_details=extra_details).mark_failed()
aggregated_result = make_aggregated_result(scenario_result)
event = ScenarioReportedEvent(aggregated_result)

with when:
await dispatcher.fire(event)

with then:
assert printer_.mock_calls == [
call.print_scenario_subject(aggregated_result.scenario.subject,
ScenarioStatus.FAILED,
elapsed=aggregated_result.elapsed,
prefix=" "),
call.print_scenario_extra_details([extra_details],
prefix=" ")
]


@pytest.mark.usefixtures(gitlab_reporter.__name__)
async def test_scenario_failed(*, dispatcher: Dispatcher, printer_: Mock):
with given:
Expand Down Expand Up @@ -170,6 +218,49 @@ async def test_scenario_passed_aggregated_result(*, dispatcher: Dispatcher, prin
]


@pytest.mark.usefixtures(gitlab_reporter.__name__)
async def test_scenario_passed_aggregated_result_with_extra_details(*, dispatcher: Dispatcher,
printer_: Mock):
with given:
await fire_arg_parsed_event(dispatcher)

extra_details_1 = '<details1>'
extra_details_2 = '<details2>'
scenario_results = [
make_scenario_result(extra_details=extra_details_1).mark_passed(),
make_scenario_result(extra_details=extra_details_2).mark_passed(),
]

aggregated_result = AggregatedResult.from_existing(scenario_results[0], scenario_results)
event = ScenarioReportedEvent(aggregated_result)

with when:
await dispatcher.fire(event)

with then:
assert printer_.mock_calls == [
call.print_scenario_subject(aggregated_result.scenario.subject,
ScenarioStatus.PASSED,
elapsed=None,
prefix=" "),

call.print_scenario_subject(aggregated_result.scenario_results[0].scenario.subject,
ScenarioStatus.PASSED,
elapsed=scenario_results[0].elapsed,
prefix=" │\n ├─[1/2] "),
call.print_scenario_extra_details([extra_details_1],
prefix=" "),
call.print_scenario_subject(aggregated_result.scenario_results[1].scenario.subject,
ScenarioStatus.PASSED,
elapsed=scenario_results[1].elapsed,
prefix=" │\n ├─[2/2] "),
call.print_scenario_extra_details([extra_details_2],
prefix=" "),

call.print_empty_line(),
]


@pytest.mark.usefixtures(gitlab_reporter.__name__)
async def test_scenario_unknown_status(*, dispatcher: Dispatcher, printer_: Mock):
with given:
Expand Down
9 changes: 9 additions & 0 deletions vedro_gitlab_reporter/_gitlab_reporter.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,19 +104,28 @@ def _print_scenario_result(self, scenario_result: ScenarioResult, *,
elif scenario_result.is_failed():
self._print_scenario_failed(scenario_result, index=index, prefix=prefix)

def _print_scenario_extras(self, scenario_result: ScenarioResult, *, prefix: str = "") -> None:
if scenario_result.extra_details:
self._printer.print_scenario_extra_details(scenario_result.extra_details,
prefix=prefix)

def _print_scenario_passed(self, scenario_result: ScenarioResult, *,
index: int = 0, prefix: str = "") -> None:
self._printer.print_scenario_subject(scenario_result.scenario.subject,
scenario_result.status,
elapsed=scenario_result.elapsed,
prefix=prefix)
self._print_scenario_extras(scenario_result,
prefix=self._prefix_to_indent(prefix, indent=2))

def _print_scenario_failed(self, scenario_result: ScenarioResult, *,
index: int = 0, prefix: str = "") -> None:
self._printer.print_scenario_subject(scenario_result.scenario.subject,
scenario_result.status,
elapsed=scenario_result.elapsed,
prefix=prefix)
self._print_scenario_extras(scenario_result,
prefix=self._prefix_to_indent(prefix, indent=2))

if self._collapsable_mode == GitlabCollapsableMode.STEPS:
prefix = self._prefix_to_indent(prefix, indent=2)
Expand Down

0 comments on commit ca406e0

Please sign in to comment.