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 926b21ab836836183430e563d9149c5dcf4880b5..ded88ec207ad812ab5ad43ad235a6208ee9331d5 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 9f0582495ee6494c9afff898e57792162eb0c8aa..d57cc5dbd90b796435c0609e2a6181962f033539 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 56e70f88d24b5bfdc785b8d48ba36a86a37ffe84..1302487486ea0c97f9040c595819dda2f385ca37 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 0ad28f9b06d19e17b21bdd613e4e010cac0c32b1..b0b498207da99d1729551fec6cc270e6cab27a4b 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();