From 84d23ca3bfee87c7369c53f419ae0f6888618258 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Mon, 15 Jul 2024 07:16:47 +0200 Subject: [PATCH] OZG-5987 fix check whether parent failed --- .../vorgang/command/CommandRepository.java | 15 +++---------- .../vorgang/command/CommandService.java | 2 +- .../command/CommandRepositoryITCase.java | 20 +++++++----------- .../vorgang/command/CommandServiceTest.java | 21 +++++++++++++++---- 4 files changed, 28 insertions(+), 30 deletions(-) diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandRepository.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandRepository.java index 926b21ab8..ded88ec20 100644 --- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandRepository.java +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandRepository.java @@ -205,12 +205,9 @@ class CommandRepository { mongoOperations.updateFirst(queryById(commandId), update, Command.class); } - public Optional<String> getNotFailedParentId(String commandId) { - return getParentId(commandId) - .map(this::queryNotFailedCommandById) - .map(this::includeIdAndClass) - .flatMap(this::findOne) - .map(Command::getId); + public boolean isCommandFailed(String commandId) { + return mongoOperations.exists(query(new Criteria().andOperator(criteriaById(commandId), where(MONGODB_STATUS).is(CommandStatus.ERROR))), + Command.class); } public Optional<String> getParentId(String commandId) { @@ -227,12 +224,6 @@ class CommandRepository { return MapUtils.getString(body, PersistedCommand.PROPERTY_PARENT_ID); } - Query queryNotFailedCommandById(String commandId) { - return query(new Criteria().andOperator( - where(MONGODB_ID).is(commandId), - where(MONGODB_STATUS).ne(CommandStatus.ERROR))); - } - Optional<Command> findOne(Query query) { return Optional.ofNullable(mongoOperations.findOne(query, Command.class)); } diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandService.java index 9f0582495..d57cc5dbd 100644 --- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandService.java +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandService.java @@ -133,7 +133,7 @@ public class CommandService { } boolean isParentCommandFailed(Command command) { - return repository.getNotFailedParentId(command.getId()).isPresent(); + return getParentId(command).filter(repository::isCommandFailed).isPresent(); } Optional<String> getCompletableParentId(Command command) { diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandRepositoryITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandRepositoryITCase.java index 56e70f88d..130248748 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandRepositoryITCase.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandRepositoryITCase.java @@ -442,7 +442,7 @@ class CommandRepositoryITCase { } @Nested - class TestGetNotFailedParentId { + class TestIsCommandFailed { @BeforeEach void init() { @@ -451,28 +451,22 @@ class CommandRepositoryITCase { @Test void shouldReturnParentId() { - var parentId = mongoOperations.save(CommandTestFactory.createBuilder().bodyObject(Map.of( + var commandId = mongoOperations.save(CommandTestFactory.createBuilder().bodyObject(Map.of( PersistedCommand.PROPERTY_COMPLETE_IF_SUBS_COMPLETED, true)).build()).getId(); - var commandId = mongoOperations.save( - CommandTestFactory.createBuilder().id(null).bodyObject(Map.of(PersistedCommand.PROPERTY_PARENT_ID, parentId)).build()) - .getId(); - var result = repository.getNotFailedParentId(commandId); + var result = repository.isCommandFailed(commandId); - assertThat(result).contains(parentId); + assertThat(result).isFalse(); } @Test void shouldReturnEmpty() { - var parentId = mongoOperations.save(CommandTestFactory.createBuilder().status(CommandStatus.ERROR).bodyObject(Map.of( + var commandId = mongoOperations.save(CommandTestFactory.createBuilder().status(CommandStatus.ERROR).bodyObject(Map.of( PersistedCommand.PROPERTY_COMPLETE_IF_SUBS_COMPLETED, true)).build()).getId(); - var commandId = mongoOperations.save( - CommandTestFactory.createBuilder().id(null).bodyObject(Map.of(PersistedCommand.PROPERTY_PARENT_ID, parentId)).build()) - .getId(); - var result = repository.getNotFailedParentId(commandId); + var result = repository.isCommandFailed(commandId); - assertThat(result).isEmpty(); + assertThat(result).isTrue(); } } diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceTest.java index 0ad28f9b0..b0b498207 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceTest.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceTest.java @@ -351,18 +351,31 @@ class CommandServiceTest { } @Nested - class TestIsParentFailed { + class TestIsParentCommandFailed { + + @Test + void shouldCallGetParentId() { + var command = CommandTestFactory.create(); + + service.isParentCommandFailed(command); + + verify(service).getParentId(command); + } @Test void shouldCallRepository() { + var parentId = "parent-id"; + doReturn(Optional.of(parentId)).when(service).getParentId(any()); + isParentCommandFailed(); - verify(repository).getNotFailedParentId(CommandTestFactory.ID); + verify(repository).isCommandFailed(parentId); } @Test void shouldReturnTrueWhenParentNotFailed() { - when(repository.getNotFailedParentId(anyString())).thenReturn(Optional.of("parent-id")); + doReturn(Optional.of("parent-id")).when(service).getParentId(any()); + when(repository.isCommandFailed(any())).thenReturn(true); var result = isParentCommandFailed(); @@ -371,7 +384,7 @@ class CommandServiceTest { @Test void shouldReturnFalseWhenParentFailed() { - when(repository.getNotFailedParentId(anyString())).thenReturn(Optional.empty()); + doReturn(Optional.of("parent-id")).when(service).getParentId(any()); var result = isParentCommandFailed(); -- GitLab