use of com.epam.ta.reportportal.ws.model.activity.TestItemActivityResource in project service-api by reportportal.
the class UpdateTestItemHandlerImpl method defineTestItemsIssues.
@Override
public List<Issue> defineTestItemsIssues(ReportPortalUser.ProjectDetails projectDetails, DefineIssueRQ defineIssue, ReportPortalUser user) {
Project project = projectRepository.findById(projectDetails.getProjectId()).orElseThrow(() -> new ReportPortalException(PROJECT_NOT_FOUND, projectDetails.getProjectId()));
List<String> errors = new ArrayList<>();
List<IssueDefinition> definitions = defineIssue.getIssues();
expect(CollectionUtils.isEmpty(definitions), equalTo(false)).verify(FAILED_TEST_ITEM_ISSUE_TYPE_DEFINITION);
List<Issue> updated = new ArrayList<>(defineIssue.getIssues().size());
List<ItemIssueTypeDefinedEvent> events = new ArrayList<>();
List<TestItem> itemsForIndexUpdate = new ArrayList<>();
List<Long> itemsForIndexRemove = new ArrayList<>();
definitions.forEach(issueDefinition -> {
try {
TestItem testItem = testItemRepository.findById(issueDefinition.getId()).orElseThrow(() -> new BusinessRuleViolationException(formattedSupplier("Cannot update issue type for test item '{}', cause it is not found.", issueDefinition.getId()).get()));
verifyTestItem(testItem, issueDefinition.getId());
TestItemActivityResource before = TO_ACTIVITY_RESOURCE.apply(testItem, projectDetails.getProjectId());
Issue issue = issueDefinition.getIssue();
IssueType issueType = issueTypeHandler.defineIssueType(projectDetails.getProjectId(), issue.getIssueType());
IssueEntity issueEntity = new IssueEntityBuilder(testItem.getItemResults().getIssue()).addIssueType(issueType).addDescription(issue.getComment()).addIgnoreFlag(issue.getIgnoreAnalyzer()).addAutoAnalyzedFlag(issue.getAutoAnalyzed()).get();
externalTicketHandler.updateLinking(user.getUsername(), issueEntity, issueDefinition.getIssue().getExternalSystemIssues());
testItem.getItemResults().setIssue(issueEntity);
issueEntity.setTestItemResults(testItem.getItemResults());
testItemRepository.save(testItem);
if (ITEM_CAN_BE_INDEXED.test(testItem)) {
itemsForIndexUpdate.add(testItem);
} else {
itemsForIndexRemove.add(testItem.getItemId());
}
updated.add(IssueConverter.TO_MODEL.apply(issueEntity));
TestItemActivityResource after = TO_ACTIVITY_RESOURCE.apply(testItem, projectDetails.getProjectId());
events.add(new ItemIssueTypeDefinedEvent(before, after, user.getUserId(), user.getUsername()));
} catch (BusinessRuleViolationException e) {
errors.add(e.getMessage());
}
});
expect(errors.isEmpty(), equalTo(TRUE)).verify(FAILED_TEST_ITEM_ISSUE_TYPE_DEFINITION, errors.toString());
logIndexerService.indexDefectsUpdate(project.getId(), AnalyzerUtils.getAnalyzerConfig(project), itemsForIndexUpdate);
logIndexerService.indexItemsRemoveAsync(project.getId(), itemsForIndexRemove);
events.forEach(messageBus::publishActivity);
return updated;
}
use of com.epam.ta.reportportal.ws.model.activity.TestItemActivityResource in project service-api by reportportal.
the class LinkTicketEventTest method getTestItem.
private static TestItemActivityResource getTestItem(String tickets) {
TestItemActivityResource testItem = new TestItemActivityResource();
testItem.setProjectId(3L);
testItem.setStatus("FAILED");
testItem.setIssueTypeLongName("issueTypeName");
testItem.setIssueDescription("desc");
testItem.setIgnoreAnalyzer(false);
testItem.setAutoAnalyzed(false);
testItem.setName("name");
testItem.setId(2L);
testItem.setTickets(tickets);
return testItem;
}
use of com.epam.ta.reportportal.ws.model.activity.TestItemActivityResource in project service-api by reportportal.
the class TicketPostedEventTest method getTestItem.
private static TestItemActivityResource getTestItem() {
TestItemActivityResource testItem = new TestItemActivityResource();
testItem.setProjectId(3L);
testItem.setStatus("FAILED");
testItem.setIssueTypeLongName("Product Bug");
testItem.setIssueDescription("Description");
testItem.setIgnoreAnalyzer(false);
testItem.setAutoAnalyzed(true);
testItem.setName("name");
testItem.setId(2L);
testItem.setTickets(TicketPostedEventTest.EXISTED_TICKETS);
return testItem;
}
use of com.epam.ta.reportportal.ws.model.activity.TestItemActivityResource in project service-api by reportportal.
the class FinishTestItemHandlerImpl method updateFinishedItem.
private void updateFinishedItem(TestItemResults testItemResults, StatusEnum actualStatus, Optional<IssueEntity> resolvedIssue, TestItem testItem, ReportPortalUser user, Long projectId) {
resolvedIssue.ifPresent(issue -> deleteOldIssueIndex(actualStatus, testItem, testItemResults, projectId));
if (testItemResults.getStatus() != actualStatus) {
TestItemActivityResource before = TO_ACTIVITY_RESOURCE.apply(testItem, projectId);
Optional<StatusChangingStrategy> statusChangingStrategy = ofNullable(statusChangingStrategyMapping.get(actualStatus));
if (statusChangingStrategy.isPresent()) {
statusChangingStrategy.get().changeStatus(testItem, actualStatus, user);
} else {
testItemResults.setStatus(actualStatus);
}
publishUpdateActivity(before, TO_ACTIVITY_RESOURCE.apply(testItem, projectId), user);
}
resolvedIssue.ifPresent(issue -> {
updateItemIssue(testItemResults, issue);
if (ITEM_CAN_BE_INDEXED.test(testItem)) {
eventPublisher.publishEvent(new ItemFinishedEvent(testItem.getItemId(), testItem.getLaunchId(), projectId));
}
});
}
use of com.epam.ta.reportportal.ws.model.activity.TestItemActivityResource in project service-api by reportportal.
the class UpdateTestItemHandlerImpl method processExternalIssues.
@Override
public List<OperationCompletionRS> processExternalIssues(ExternalIssueRQ request, ReportPortalUser.ProjectDetails projectDetails, ReportPortalUser user) {
List<String> errors = new ArrayList<>();
List<TestItem> testItems = testItemRepository.findAllById(request.getTestItemIds());
testItems.forEach(testItem -> {
try {
verifyTestItem(testItem, testItem.getItemId());
} catch (Exception e) {
errors.add(e.getMessage());
}
});
expect(errors.isEmpty(), equalTo(TRUE)).verify(FAILED_TEST_ITEM_ISSUE_TYPE_DEFINITION, errors.toString());
List<TestItemActivityResource> before = testItems.stream().map(it -> TO_ACTIVITY_RESOURCE.apply(it, projectDetails.getProjectId())).collect(Collectors.toList());
if (LinkExternalIssueRQ.class.equals(request.getClass())) {
LinkExternalIssueRQ linkRequest = (LinkExternalIssueRQ) request;
externalTicketHandler.linkExternalTickets(user.getUsername(), testItems.stream().map(it -> it.getItemResults().getIssue()).collect(Collectors.toList()), linkRequest.getIssues());
}
if (UnlinkExternalIssueRQ.class.equals(request.getClass())) {
externalTicketHandler.unlinkExternalTickets(testItems, (UnlinkExternalIssueRQ) request);
}
testItemRepository.saveAll(testItems);
List<TestItemActivityResource> after = testItems.stream().map(it -> TO_ACTIVITY_RESOURCE.apply(it, projectDetails.getProjectId())).collect(Collectors.toList());
before.forEach(it -> messageBus.publishActivity(new LinkTicketEvent(it, after.stream().filter(t -> t.getId().equals(it.getId())).findFirst().get(), user.getUserId(), user.getUsername(), ActivityAction.LINK_ISSUE)));
return testItems.stream().map(TestItem::getItemId).map(COMPOSE_UPDATE_RESPONSE).collect(toList());
}
Aggregations