Search in sources :

Example 1 with StatusChangingStrategy

use of com.epam.ta.reportportal.core.item.impl.status.StatusChangingStrategy in project service-api by reportportal.

the class UpdateTestItemHandlerImplTest method shouldNotCreateInitialStatusAttribute.

@Test
void shouldNotCreateInitialStatusAttribute() {
    ReportPortalUser user = getRpUser("user", UserRole.ADMINISTRATOR, ProjectRole.PROJECT_MANAGER, 1L);
    UpdateTestItemRQ rq = new UpdateTestItemRQ();
    rq.setStatus("PASSED");
    long itemId = 1L;
    TestItem item = new TestItem();
    item.setItemId(itemId);
    item.setHasChildren(false);
    item.setType(TestItemTypeEnum.STEP);
    item.setAttributes(Sets.newHashSet(new ItemAttribute(INITIAL_STATUS_ATTRIBUTE_KEY, "passed", true)));
    TestItemResults itemResults = new TestItemResults();
    itemResults.setStatus(StatusEnum.FAILED);
    item.setItemResults(itemResults);
    Launch launch = new Launch();
    launch.setId(2L);
    item.setLaunchId(launch.getId());
    when(testItemService.getEffectiveLaunch(item)).thenReturn(launch);
    when(itemRepository.findById(itemId)).thenReturn(Optional.of(item));
    doNothing().when(messageBus).publishActivity(any());
    when(statusChangingStrategyMapping.get(StatusEnum.PASSED)).thenReturn(statusChangingStrategy);
    doNothing().when(statusChangingStrategy).changeStatus(item, StatusEnum.PASSED, user);
    handler.updateTestItem(extractProjectDetails(user, "test_project"), itemId, rq, user);
    assertTrue(item.getAttributes().stream().anyMatch(attribute -> INITIAL_STATUS_ATTRIBUTE_KEY.equalsIgnoreCase(attribute.getKey()) && StatusEnum.PASSED.getExecutionCounterField().equalsIgnoreCase("passed")));
}
Also used : TestItemTypeEnum(com.epam.ta.reportportal.entity.enums.TestItemTypeEnum) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) StatusEnum(com.epam.ta.reportportal.entity.enums.StatusEnum) OperationCompletionRS(com.epam.ta.reportportal.ws.model.OperationCompletionRS) TestItemService(com.epam.ta.reportportal.core.item.TestItemService) TestItem(com.epam.ta.reportportal.entity.item.TestItem) INITIAL_STATUS_ATTRIBUTE_KEY(com.epam.ta.reportportal.core.item.impl.UpdateTestItemHandlerImpl.INITIAL_STATUS_ATTRIBUTE_KEY) Mock(org.mockito.Mock) ErrorType(com.epam.ta.reportportal.ws.model.ErrorType) DefineIssueRQ(com.epam.ta.reportportal.ws.model.issue.DefineIssueRQ) MessageBus(com.epam.ta.reportportal.core.events.MessageBus) StatusChangingStrategy(com.epam.ta.reportportal.core.item.impl.status.StatusChangingStrategy) ItemAttribute(com.epam.ta.reportportal.entity.ItemAttribute) ReportPortalUser(com.epam.ta.reportportal.commons.ReportPortalUser) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) UpdateTestItemRQ(com.epam.ta.reportportal.ws.model.item.UpdateTestItemRQ) UserRole(com.epam.ta.reportportal.entity.user.UserRole) Map(java.util.Map) TestProjectExtractor.extractProjectDetails(com.epam.ta.reportportal.util.TestProjectExtractor.extractProjectDetails) TestItemRepository(com.epam.ta.reportportal.dao.TestItemRepository) InjectMocks(org.mockito.InjectMocks) MockitoExtension(org.mockito.junit.jupiter.MockitoExtension) Launch(com.epam.ta.reportportal.entity.launch.Launch) User(com.epam.ta.reportportal.entity.user.User) ReportPortalException(com.epam.ta.reportportal.exception.ReportPortalException) Sets(com.google.common.collect.Sets) Test(org.junit.jupiter.api.Test) Mockito(org.mockito.Mockito) ProjectRole(com.epam.ta.reportportal.entity.project.ProjectRole) ProjectRepository(com.epam.ta.reportportal.dao.ProjectRepository) TestItemResults(com.epam.ta.reportportal.entity.item.TestItemResults) Assertions(org.junit.jupiter.api.Assertions) Optional(java.util.Optional) ReportPortalUserUtil.getRpUser(com.epam.ta.reportportal.ReportPortalUserUtil.getRpUser) UpdateTestItemRQ(com.epam.ta.reportportal.ws.model.item.UpdateTestItemRQ) ReportPortalUser(com.epam.ta.reportportal.commons.ReportPortalUser) ItemAttribute(com.epam.ta.reportportal.entity.ItemAttribute) TestItemResults(com.epam.ta.reportportal.entity.item.TestItemResults) Launch(com.epam.ta.reportportal.entity.launch.Launch) TestItem(com.epam.ta.reportportal.entity.item.TestItem) Test(org.junit.jupiter.api.Test)

Example 2 with StatusChangingStrategy

use of com.epam.ta.reportportal.core.item.impl.status.StatusChangingStrategy in project service-api by reportportal.

the class UpdateTestItemHandlerImplTest method shouldCreateInitialStatusAttribute.

@Test
void shouldCreateInitialStatusAttribute() {
    ReportPortalUser user = getRpUser("user", UserRole.ADMINISTRATOR, ProjectRole.PROJECT_MANAGER, 1L);
    UpdateTestItemRQ rq = new UpdateTestItemRQ();
    rq.setStatus("PASSED");
    long itemId = 1L;
    TestItem item = new TestItem();
    item.setItemId(itemId);
    item.setHasChildren(false);
    item.setType(TestItemTypeEnum.STEP);
    TestItemResults itemResults = new TestItemResults();
    itemResults.setStatus(StatusEnum.FAILED);
    item.setItemResults(itemResults);
    Launch launch = new Launch();
    launch.setId(2L);
    item.setLaunchId(launch.getId());
    when(testItemService.getEffectiveLaunch(item)).thenReturn(launch);
    when(itemRepository.findById(itemId)).thenReturn(Optional.of(item));
    doNothing().when(messageBus).publishActivity(any());
    when(statusChangingStrategyMapping.get(StatusEnum.PASSED)).thenReturn(statusChangingStrategy);
    doNothing().when(statusChangingStrategy).changeStatus(item, StatusEnum.PASSED, user);
    handler.updateTestItem(extractProjectDetails(user, "test_project"), itemId, rq, user);
    assertTrue(item.getAttributes().stream().anyMatch(attribute -> INITIAL_STATUS_ATTRIBUTE_KEY.equalsIgnoreCase(attribute.getKey()) && StatusEnum.FAILED.getExecutionCounterField().equalsIgnoreCase("failed")));
}
Also used : TestItemTypeEnum(com.epam.ta.reportportal.entity.enums.TestItemTypeEnum) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) StatusEnum(com.epam.ta.reportportal.entity.enums.StatusEnum) OperationCompletionRS(com.epam.ta.reportportal.ws.model.OperationCompletionRS) TestItemService(com.epam.ta.reportportal.core.item.TestItemService) TestItem(com.epam.ta.reportportal.entity.item.TestItem) INITIAL_STATUS_ATTRIBUTE_KEY(com.epam.ta.reportportal.core.item.impl.UpdateTestItemHandlerImpl.INITIAL_STATUS_ATTRIBUTE_KEY) Mock(org.mockito.Mock) ErrorType(com.epam.ta.reportportal.ws.model.ErrorType) DefineIssueRQ(com.epam.ta.reportportal.ws.model.issue.DefineIssueRQ) MessageBus(com.epam.ta.reportportal.core.events.MessageBus) StatusChangingStrategy(com.epam.ta.reportportal.core.item.impl.status.StatusChangingStrategy) ItemAttribute(com.epam.ta.reportportal.entity.ItemAttribute) ReportPortalUser(com.epam.ta.reportportal.commons.ReportPortalUser) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) UpdateTestItemRQ(com.epam.ta.reportportal.ws.model.item.UpdateTestItemRQ) UserRole(com.epam.ta.reportportal.entity.user.UserRole) Map(java.util.Map) TestProjectExtractor.extractProjectDetails(com.epam.ta.reportportal.util.TestProjectExtractor.extractProjectDetails) TestItemRepository(com.epam.ta.reportportal.dao.TestItemRepository) InjectMocks(org.mockito.InjectMocks) MockitoExtension(org.mockito.junit.jupiter.MockitoExtension) Launch(com.epam.ta.reportportal.entity.launch.Launch) User(com.epam.ta.reportportal.entity.user.User) ReportPortalException(com.epam.ta.reportportal.exception.ReportPortalException) Sets(com.google.common.collect.Sets) Test(org.junit.jupiter.api.Test) Mockito(org.mockito.Mockito) ProjectRole(com.epam.ta.reportportal.entity.project.ProjectRole) ProjectRepository(com.epam.ta.reportportal.dao.ProjectRepository) TestItemResults(com.epam.ta.reportportal.entity.item.TestItemResults) Assertions(org.junit.jupiter.api.Assertions) Optional(java.util.Optional) ReportPortalUserUtil.getRpUser(com.epam.ta.reportportal.ReportPortalUserUtil.getRpUser) UpdateTestItemRQ(com.epam.ta.reportportal.ws.model.item.UpdateTestItemRQ) ReportPortalUser(com.epam.ta.reportportal.commons.ReportPortalUser) TestItemResults(com.epam.ta.reportportal.entity.item.TestItemResults) Launch(com.epam.ta.reportportal.entity.launch.Launch) TestItem(com.epam.ta.reportportal.entity.item.TestItem) Test(org.junit.jupiter.api.Test)

Example 3 with StatusChangingStrategy

use of com.epam.ta.reportportal.core.item.impl.status.StatusChangingStrategy 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));
        }
    });
}
Also used : ItemFinishedEvent(com.epam.ta.reportportal.core.events.item.ItemFinishedEvent) StatusChangingStrategy(com.epam.ta.reportportal.core.item.impl.status.StatusChangingStrategy) TestItemActivityResource(com.epam.ta.reportportal.ws.model.activity.TestItemActivityResource)

Example 4 with StatusChangingStrategy

use of com.epam.ta.reportportal.core.item.impl.status.StatusChangingStrategy in project service-api by reportportal.

the class UpdateTestItemHandlerImpl method updateTestItem.

@Override
public OperationCompletionRS updateTestItem(ReportPortalUser.ProjectDetails projectDetails, Long itemId, UpdateTestItemRQ rq, ReportPortalUser user) {
    TestItem testItem = testItemRepository.findById(itemId).orElseThrow(() -> new ReportPortalException(ErrorType.TEST_ITEM_NOT_FOUND, itemId));
    validate(projectDetails, user, testItem);
    Optional<StatusEnum> providedStatus = StatusEnum.fromValue(rq.getStatus());
    if (providedStatus.isPresent() && !providedStatus.get().equals(testItem.getItemResults().getStatus())) {
        expect(testItem.isHasChildren() && !testItem.getType().sameLevel(TestItemTypeEnum.STEP), equalTo(FALSE)).verify(INCORRECT_REQUEST, "Unable to change status on test item with children");
        checkInitialStatusAttribute(testItem, rq);
        StatusChangingStrategy strategy = statusChangingStrategyMapping.get(providedStatus.get());
        expect(strategy, notNull()).verify(INCORRECT_REQUEST, formattedSupplier("Actual status: '{}' cannot be changed to '{}'.", testItem.getItemResults().getStatus(), providedStatus.get()));
        TestItemActivityResource before = TO_ACTIVITY_RESOURCE.apply(testItem, projectDetails.getProjectId());
        strategy.changeStatus(testItem, providedStatus.get(), user);
        messageBus.publishActivity(new TestItemStatusChangedEvent(before, TO_ACTIVITY_RESOURCE.apply(testItem, projectDetails.getProjectId()), user.getUserId(), user.getUsername()));
    }
    testItem = new TestItemBuilder(testItem).overwriteAttributes(rq.getAttributes()).addDescription(rq.getDescription()).get();
    testItemRepository.save(testItem);
    return COMPOSE_UPDATE_RESPONSE.apply(itemId);
}
Also used : StatusEnum(com.epam.ta.reportportal.entity.enums.StatusEnum) TestItemBuilder(com.epam.ta.reportportal.ws.converter.builders.TestItemBuilder) TestItemStatusChangedEvent(com.epam.ta.reportportal.core.events.activity.TestItemStatusChangedEvent) ReportPortalException(com.epam.ta.reportportal.exception.ReportPortalException) StatusChangingStrategy(com.epam.ta.reportportal.core.item.impl.status.StatusChangingStrategy) TestItemActivityResource(com.epam.ta.reportportal.ws.model.activity.TestItemActivityResource) TestItem(com.epam.ta.reportportal.entity.item.TestItem)

Aggregations

StatusChangingStrategy (com.epam.ta.reportportal.core.item.impl.status.StatusChangingStrategy)4 StatusEnum (com.epam.ta.reportportal.entity.enums.StatusEnum)3 TestItem (com.epam.ta.reportportal.entity.item.TestItem)3 ReportPortalException (com.epam.ta.reportportal.exception.ReportPortalException)3 ReportPortalUserUtil.getRpUser (com.epam.ta.reportportal.ReportPortalUserUtil.getRpUser)2 ReportPortalUser (com.epam.ta.reportportal.commons.ReportPortalUser)2 MessageBus (com.epam.ta.reportportal.core.events.MessageBus)2 TestItemService (com.epam.ta.reportportal.core.item.TestItemService)2 INITIAL_STATUS_ATTRIBUTE_KEY (com.epam.ta.reportportal.core.item.impl.UpdateTestItemHandlerImpl.INITIAL_STATUS_ATTRIBUTE_KEY)2 ProjectRepository (com.epam.ta.reportportal.dao.ProjectRepository)2 TestItemRepository (com.epam.ta.reportportal.dao.TestItemRepository)2 ItemAttribute (com.epam.ta.reportportal.entity.ItemAttribute)2 TestItemTypeEnum (com.epam.ta.reportportal.entity.enums.TestItemTypeEnum)2 TestItemResults (com.epam.ta.reportportal.entity.item.TestItemResults)2 Launch (com.epam.ta.reportportal.entity.launch.Launch)2 ProjectRole (com.epam.ta.reportportal.entity.project.ProjectRole)2 User (com.epam.ta.reportportal.entity.user.User)2 UserRole (com.epam.ta.reportportal.entity.user.UserRole)2 TestProjectExtractor.extractProjectDetails (com.epam.ta.reportportal.util.TestProjectExtractor.extractProjectDetails)2 ErrorType (com.epam.ta.reportportal.ws.model.ErrorType)2