@Test
public void shouldExportTestRunToXray() {
final LaunchResults launchResults = mock(LaunchResults.class);
final TestResult testResult = createTestResult(Status.FAILED)
.setLinks(Collections.singletonList(new Link().setName(TESTRUN_KEY).setType("tms")));
final Set<TestResult> results = new HashSet<>(Collections.singletonList(testResult));
when(launchResults.getAllResults()).thenReturn(results);
final ExecutorInfo executorInfo = new ExecutorInfo()
.setBuildName(RandomStringUtils.random(10))
.setReportUrl(RandomStringUtils.random(10));
when(launchResults.getExtra("executor")).thenReturn(Optional.of(executorInfo));
final JiraService service = mock(JiraService.class);
when(service.getTestRunsForTestExecution(EXECUTION_ISSUES)).thenReturn(
Collections.singletonList(new XrayTestRun().setId(TESTRUN_ID).setKey(TESTRUN_KEY).setStatus("TODO"))
);
final XrayTestRunExportPlugin xrayTestRunExportPlugin = new XrayTestRunExportPlugin();
xrayTestRunExportPlugin.setJiraService(service);
xrayTestRunExportPlugin.aggregate(
mock(Configuration.class),
Collections.singletonList(launchResults),
Paths.get("/")
);
final String reportLink = String.format("[%s|%s]", executorInfo.getBuildName(), executorInfo.getReportUrl());
verify(service, times(1)).createIssueComment(
argThat(issue -> issue.equals(EXECUTION_ISSUES)),
argThat(comment -> comment.getBody().contains(reportLink)
));
verify(service, times(1)).updateTestRunStatus(TESTRUN_ID, "FAIL");
}