diff --git a/goofy-server/src/main/java/de/itvsh/goofy/attached_item/VorgangAttachedItemService.java b/goofy-server/src/main/java/de/itvsh/goofy/attached_item/VorgangAttachedItemService.java index 403e258f9f96ca389a398bfdd4d7ce6f60034a59..357b56aa872a02c0940eca92beb4dc6231ceef10 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/attached_item/VorgangAttachedItemService.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/attached_item/VorgangAttachedItemService.java @@ -35,6 +35,21 @@ public class VorgangAttachedItemService { return commandService.createCommand(buildCreateCommand(vorgangId, vorgangAttachedItem)); } + CreateCommand buildCreateCommand(String vorgangId, CommandBody body) { + return CreateCommand.builder() + .vorgangId(vorgangId) + .relationId(vorgangId) + .order(CommandOrder.CREATE_ATTACHED_ITEM) + .body(body) + .build(); + } + + public Command editKommentar(Kommentar kommentar, String kommentarId, long kommentarVersion) { + var vorgangAttachedItem = buildVorgangAttachedItem(kommentar, kommentar.getVorgangId(), KOMMENTAR_ITEM_NAME); + + return commandService.createCommand(buildUpdateCommand(kommentar.getVorgangId(), kommentarId, vorgangAttachedItem), kommentarVersion); + } + VorgangAttachedItem buildVorgangAttachedItem(CommandBody body, String vorgangId, String itemName) { return VorgangAttachedItem.builder() .vorgangId(vorgangId) @@ -43,12 +58,12 @@ public class VorgangAttachedItemService { .build(); } - CreateCommand buildCreateCommand(String vorgangId, CommandBody commandBody) { + CreateCommand buildUpdateCommand(String vorgangId, String kommentarId, CommandBody body) { return CreateCommand.builder() .vorgangId(vorgangId) - .relationId(vorgangId) - .order(CommandOrder.CREATE_ATTACHED_ITEM) - .body(commandBody) + .relationId(kommentarId) + .order(CommandOrder.UPDATE_ATTACHED_ITEM) + .body(body) .build(); } } \ No newline at end of file diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandController.java b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandController.java index 98059321e5f0afcc6cd914a3e2f5feefa921ffe6..4de127dc84ea0bf6bb731499397f5cd0418d33b4 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandController.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandController.java @@ -87,7 +87,7 @@ public class CommandController { command = prepareCommandForPostfachNachricht(command, vorgangId); } - var created = createCommand(command, relationVersion); + var created = service.createCommandWithValidation(command, relationVersion); return ResponseEntity.created(linkTo(CommandController.class).slash(created.getId()).toUri()).build(); } @@ -118,10 +118,6 @@ public class CommandController { return vorgangController.getVorgang(vorgangId); } - public Command createCommand(CreateCommand command, long relationVersion) { - return service.createCommand(command, relationVersion); - } - // Anlegen eines Commands fuer eine neue PostfachNachricht(resend) public Command createCommandWithoutRelation(CreateCommand command) { return service.createCommandWithoutRelation(command); diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandService.java b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandService.java index 28dac75b4cee8d3514bb764db01d2f7fdbf6bc61..1520c71a85a3affc53b8f40764045e0bd696ad93 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandService.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandService.java @@ -26,8 +26,14 @@ public class CommandService { return remoteService.createCommand(command); } - ////////// - public Command createCommand(@Valid CreateCommand command, long relationVersion) { + public Command createCommand(CreateCommand command, long relationVersion) { + command = command.toBuilder().relationVersion(relationVersion).build(); + + return remoteService.createCommand(command); + } + + //////// + public Command createCommandWithValidation(@Valid CreateCommand command, long relationVersion) { command = command.toBuilder().relationVersion(relationVersion).build(); return remoteService.createCommand(command); diff --git a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarCommandController.java b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarCommandController.java index 02200186665d3280fa44bfced261ba1da9a593be..c9e93df22a278b9445e41c457ac21dc8f492e693 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarCommandController.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarCommandController.java @@ -12,9 +12,6 @@ import org.springframework.web.bind.annotation.RestController; import de.itvsh.goofy.common.command.Command; import de.itvsh.goofy.common.command.CommandController; -import de.itvsh.goofy.common.command.CommandController.CommandByRelationController; -import de.itvsh.goofy.common.command.CommandOrder; -import de.itvsh.goofy.common.command.CreateCommand; @RestController @RequestMapping(KommentarCommandController.KOMMENTAR_COMMANDS) @@ -25,34 +22,18 @@ public class KommentarCommandController { @Autowired private KommentarService service; - @Autowired - private CommandByRelationController commandByRelationController; - @PostMapping public ResponseEntity<Void> editKommentar(@RequestBody KommentarCommand kommentarCommand, @PathVariable String kommentarId, @PathVariable long kommentarVersion) { - var command = commandByRelationController.createCommand(buildCommand(service.getById(kommentarId), kommentarCommand), - KommentarRemoteService.ITEM_NAME, kommentarVersion); - return buildResponseLink(command); + var createdCommand = service.editKommentar(kommentarCommand, kommentarId, kommentarVersion); + + return buildResponseLink(createdCommand); } private ResponseEntity<Void> buildResponseLink(Command createdKommentarCommand) { return ResponseEntity.created(linkTo(CommandController.class).slash(createdKommentarCommand.getId()).toUri()).build(); } - CreateCommand buildCommand(Kommentar kommentar, KommentarCommand command) { - var commandBuilder = CreateCommand.builder() - .order(CommandOrder.UPDATE_ATTACHED_ITEM) - .relationId(kommentar.getId()) - .vorgangId(kommentar.getVorgangId()); - - return commandBuilder.body(updateKommentarByCommand(kommentar, command)).build(); - } - - private Kommentar updateKommentarByCommand(Kommentar kommentar, KommentarCommand command) { - return kommentar.toBuilder().text(command.getKommentar().getText()).build(); - } - @RestController @RequestMapping(KommentarCommandByVorgangController.KOMMENTAR_COMMANDS_BY_VORGANG) public static class KommentarCommandByVorgangController { diff --git a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarService.java b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarService.java index e2f8a698b46892fa04b36180d7e9285145f026e6..ccd15c57ea4e6c34a429b99c8745eb42ba3427de 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarService.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarService.java @@ -35,6 +35,13 @@ class KommentarService { .build(); } + public Command editKommentar(@Valid KommentarCommand kommentarCommand, String kommentarId, long kommentarVersion) { + var loadedKommentar = getById(kommentarId); + var preparedKommentar = loadedKommentar.toBuilder().text(kommentarCommand.getKommentar().getText()).build(); + + return vorgangAttachedItemService.editKommentar(preparedKommentar, kommentarId, kommentarVersion); + } + public Stream<Kommentar> findByVorgangId(String vorgangId) { return remoteService.findByVorgangId(vorgangId); } diff --git a/goofy-server/src/test/java/de/itvsh/goofy/attached_item/VorgangAttachedItemServiceTest.java b/goofy-server/src/test/java/de/itvsh/goofy/attached_item/VorgangAttachedItemServiceTest.java index ab01cf545f688576b0f67c2270b18a9e43499cb5..b9d05f57d030f4f1289f256dde6d448613ee1811 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/attached_item/VorgangAttachedItemServiceTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/attached_item/VorgangAttachedItemServiceTest.java @@ -39,29 +39,37 @@ class VorgangAttachedItemServiceTest { @Nested class TestCreateNewWiedervorlage { - @DisplayName("should call") - @Nested - class TestCalls { + private Wiedervorlage wiedervorlage = WiedervorlageTestFactory.create(); - private Wiedervorlage wiedervorlage = WiedervorlageTestFactory.create(); + @BeforeEach + void mockServices() { + doReturn(VorgangAttachedItemTestFactory.create()).when(service).buildVorgangAttachedItem(any(), any(), any()); + doReturn(CommandTestFactory.createCreateCommand()).when(service).buildCreateCommand(any(), any()); + } + + @Test + void shouldBuildVorgangAttachedItem() { + callCreateNewWiedervorlage(); + + verify(service).buildVorgangAttachedItem(wiedervorlage, VorgangHeaderTestFactory.ID, VorgangAttachedItemService.WIEDERVORLAGE_ITEM_NAME); + } + + @Test + void shouldBuildCreateCommand() { + callCreateNewWiedervorlage(); - @BeforeEach - void mockServices() { - doReturn(VorgangAttachedItemTestFactory.create()).when(service).buildVorgangAttachedItem(any(), any(), any()); - doReturn(CommandTestFactory.createCreateCommand()).when(service).buildCreateCommand(any(), any()); - } + verify(service).buildCreateCommand(eq(VorgangHeaderTestFactory.ID), any(VorgangAttachedItem.class)); + } - @DisplayName("command service") - @Test - void shouldCallCommandService() { - callCreateNewWiedervorlage(); + @Test + void shouldCallCommandService() { + callCreateNewWiedervorlage(); - verify(commandService).createCommand(any()); - } + verify(commandService).createCommand(any(CreateCommand.class)); + } - private Command callCreateNewWiedervorlage() { - return service.createNewWiedervorlage(wiedervorlage, VorgangHeaderTestFactory.ID); - } + private Command callCreateNewWiedervorlage() { + return service.createNewWiedervorlage(wiedervorlage, VorgangHeaderTestFactory.ID); } } @@ -69,30 +77,76 @@ class VorgangAttachedItemServiceTest { @Nested class TestCreateNewKommentar { - @DisplayName("should call") - @Nested - class TestCalls { + private Kommentar kommentar = KommentarTestFactory.create(); + + @BeforeEach + void mockServices() { + doReturn(VorgangAttachedItemTestFactory.create()).when(service).buildVorgangAttachedItem(any(), any(), any()); + doReturn(CommandTestFactory.createCreateCommand()).when(service).buildCreateCommand(any(), any()); + } + + @Test + void shouldBuildVorgangAttachedItem() { + callCreateNewKommentar(); + + verify(service).buildVorgangAttachedItem(kommentar, VorgangHeaderTestFactory.ID, VorgangAttachedItemService.KOMMENTAR_ITEM_NAME); + } + + @Test + void shouldBuildCreateCommand() { + callCreateNewKommentar(); + + verify(service).buildCreateCommand(eq(VorgangHeaderTestFactory.ID), any(VorgangAttachedItem.class)); + } + + @Test + void shouldCallCommandService() { + callCreateNewKommentar(); + + verify(commandService).createCommand(any(CreateCommand.class)); + } + + private Command callCreateNewKommentar() { + return service.createNewKommentar(kommentar, VorgangHeaderTestFactory.ID); + } + } - private Kommentar kommentar = KommentarTestFactory.create(); + @Nested + class TestEditKommentar { - @BeforeEach - void mockServices() { - doReturn(VorgangAttachedItemTestFactory.create()).when(service).buildVorgangAttachedItem(any(), any(), any()); - doReturn(CommandTestFactory.createCreateCommand()).when(service).buildCreateCommand(any(), any()); - } + private Kommentar kommentar = KommentarTestFactory.create(); - @DisplayName("command service") - @Test - void shouldCallCommandService() { - callCreateNewKommentar(); + @BeforeEach + void mockService() { + doReturn(VorgangAttachedItemTestFactory.create()).when(service).buildVorgangAttachedItem(any(), any(), any()); + doReturn(CommandTestFactory.createCreateCommand()).when(service).buildUpdateCommand(any(), any(), any()); + } - verify(commandService).createCommand(any()); - } + @Test + void shouldBuildVorgangAttachedItem() { + callEditKommentar(); - private Command callCreateNewKommentar() { - return service.createNewKommentar(kommentar, VorgangHeaderTestFactory.ID); - } + verify(service).buildVorgangAttachedItem(kommentar, VorgangHeaderTestFactory.ID, VorgangAttachedItemService.KOMMENTAR_ITEM_NAME); } + + @Test + void shouldBuildCreateCommand() { + callEditKommentar(); + + verify(service).buildUpdateCommand(eq(VorgangHeaderTestFactory.ID), eq(KommentarTestFactory.ID), any(VorgangAttachedItem.class)); + } + + @Test + void shouldCallCommandService() { + callEditKommentar(); + + verify(commandService).createCommand(any(CreateCommand.class), eq(KommentarTestFactory.VERSION)); + } + + private Command callEditKommentar() { + return service.editKommentar(kommentar, KommentarTestFactory.ID, KommentarTestFactory.VERSION); + } + } @DisplayName("build createCommand") diff --git a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandControllerTest.java b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandControllerTest.java index d1974d77858aef0cae2f9b3852af412bc8c4bf2f..7c7352da63545b7f4195ca35bde0f766dc4df07d 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandControllerTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandControllerTest.java @@ -146,7 +146,7 @@ class CommandControllerTest { @BeforeEach void initTest() { - when(service.createCommand(any(CreateCommand.class), anyLong())).thenReturn(CommandTestFactory.create()); + when(service.createCommandWithValidation(any(CreateCommand.class), anyLong())).thenReturn(CommandTestFactory.create()); } @DisplayName("should return CREATED") @@ -160,7 +160,7 @@ class CommandControllerTest { void callService() throws Exception { doRequest(); - verify(service).createCommand(createCommandCaptor.capture(), eq(CommandTestFactory.RELATION_VERSION)); + verify(service).createCommandWithValidation(createCommandCaptor.capture(), eq(CommandTestFactory.RELATION_VERSION)); assertThat(createCommandCaptor.getValue().getOrder()).isEqualTo(CommandTestFactory.ORDER); assertThat(createCommandCaptor.getValue().getVorgangId()).isEqualTo(CommandTestFactory.VORGANG_ID); assertThat(createCommandCaptor.getValue().getRelationId()).isEqualTo(CommandTestFactory.RELATION_ID); diff --git a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandServiceTest.java b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandServiceTest.java index a3462fc704138553c8bdfa59344abd35eedb0668..ce23846054106a52338d0a9cb7c45bf282ca7553 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandServiceTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandServiceTest.java @@ -59,7 +59,7 @@ class CommandServiceTest { } @Test - void shouldHaveSetRelationId() { + void shouldHaveSetRelationVersion() { service.createCommand(command, CommandTestFactory.RELATION_VERSION); verify(remoteService).createCommand(createCommandCaptor.capture()); @@ -67,6 +67,25 @@ class CommandServiceTest { } } + @Nested + class TestWithValidation { + + @Test + void shouldCallRemoteService() { + service.createCommandWithValidation(command, CommandTestFactory.RELATION_VERSION); + + verify(remoteService).createCommand(any(CreateCommand.class)); + } + + @Test + void shouldHaveSetRelationVersion() { + service.createCommandWithValidation(command, CommandTestFactory.RELATION_VERSION); + + verify(remoteService).createCommand(createCommandCaptor.capture()); + assertThat(createCommandCaptor.getValue().getRelationVersion()).isEqualTo(CommandTestFactory.RELATION_VERSION); + } + } + @Nested class TestWithoutRelationVersion { @@ -78,7 +97,7 @@ class CommandServiceTest { } @Test - void shouldHaveSetRelationId() { + void shouldHaveSetRelationVersion() { service.createCommandWithoutRelation(command); verify(remoteService).createCommand(createCommandCaptor.capture()); @@ -104,7 +123,7 @@ class CommandServiceTest { } @Test - void shouldHaveSetRelationId() { + void shouldHaveSetRelationVersion() { service.createCommand(command, ITEM_NAME, CommandTestFactory.RELATION_VERSION); verify(remoteService).createCommand(createCommandCaptor.capture(), eq(ITEM_NAME)); @@ -123,7 +142,7 @@ class CommandServiceTest { } @Test - void shouldHaveSetRelationId() { + void shouldHaveSetRelationVersion() { service.createCommandWithoutValidation(command, ITEM_NAME, CommandTestFactory.RELATION_VERSION); verify(remoteService).createCommand(createCommandCaptor.capture(), eq(ITEM_NAME)); diff --git a/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandControllerTest.java b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandControllerTest.java index 9f1b8757e60a9fa24b1bc6f89d85296dc56488c9..51b2074e86a320a6224344383e78c3f885b9ca05 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandControllerTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandControllerTest.java @@ -19,10 +19,6 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import static org.assertj.core.api.Assertions.*; - -import de.itvsh.goofy.common.command.CommandController.CommandByRelationController; -import de.itvsh.goofy.common.command.CommandOrder; import de.itvsh.goofy.common.command.CommandTestFactory; import de.itvsh.goofy.common.command.CreateCommand; import de.itvsh.goofy.kommentar.KommentarCommandController.KommentarCommandByVorgangController; @@ -76,14 +72,12 @@ class KommentarCommandControllerTest { @Nested class TestCreateEditKommentarCommand { - final String REPONSE_HEADER = "http://localhost/api/commands/" + KommentarCommandTestFactory.ID; + private final static String REPONSE_HEADER = "http://localhost/api/commands/" + KommentarCommandTestFactory.ID; @Spy @InjectMocks private KommentarCommandController controller; @Mock - private CommandByRelationController commandByRelationController; - @Mock private KommentarService service; private MockMvc mockMvc; @@ -91,41 +85,20 @@ class KommentarCommandControllerTest { @BeforeEach void init() { mockMvc = MockMvcBuilders.standaloneSetup(controller).build(); - when(commandByRelationController.createCommand(any(), anyString(), anyLong())).thenReturn(CommandTestFactory.create()); - when(service.getById(any())).thenReturn(KommentarTestFactory.createBuilder().vorgangId(VorgangHeaderTestFactory.ID).build()); - } - @Test - void shouldReturnCreated() throws Exception { - doRequest().andExpect(status().isCreated()); + when(service.editKommentar(any(), any(), anyLong())).thenReturn(CommandTestFactory.create()); } @Test void shouldCallService() throws Exception { doRequest(); - verify(service).getById(any()); - } - - @Test - void shouldBuildCommand() throws Exception { - doRequest(); - - verify(controller).buildCommand(any(Kommentar.class), any(KommentarCommand.class)); + verify(service).editKommentar(any(KommentarCommand.class), eq(KommentarTestFactory.ID), eq(KommentarTestFactory.VERSION)); } @Test - void shouldGiveCommandToService() throws Exception { - doRequest(); - - verify(commandByRelationController).createCommand(commandCaptor.capture(), anyString(), anyLong()); - var command = commandCaptor.getValue(); - - assertThat(command).usingRecursiveComparison() - .ignoringFields("body", "status", "relationVersion")// TODO relationVersion beachten OZG-2684 - .isEqualTo(CommandTestFactory.createCreateCommandBuilder().order(CommandOrder.UPDATE_ATTACHED_ITEM) - .relationId(KommentarTestFactory.ID) - .build()); + void shouldReturnCreated() throws Exception { + doRequest().andExpect(status().isCreated()); } @Test diff --git a/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandITCase.java b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandITCase.java index 45ce5ed15a923cf3daaa9d7d919e6bbbd7695461..f6ca7e3774987f605a8533c5a26bcc1469280d7e 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandITCase.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarCommandITCase.java @@ -46,14 +46,14 @@ class KommentarCommandITCase { @BeforeEach void initTest() { when(remoteService.getById(any())).thenReturn(KommentarTestFactory.create()); - when(commandRemoteService.createCommand(any(), anyString())).thenReturn(CommandTestFactory.create()); + when(commandRemoteService.createCommand(any())).thenReturn(CommandTestFactory.create()); } @Test void shouldCreateCommand() throws Exception { doRequestByKommentarId(createValidRequestContent()).andExpect(status().isCreated()); - verify(commandRemoteService).createCommand(any(), eq(KommentarRemoteService.ITEM_NAME)); + verify(commandRemoteService).createCommand(any()); } @WithMockUser @@ -61,6 +61,8 @@ class KommentarCommandITCase { @Nested class TestValidation { + private static final String FIELD_PREFIX = "kommentarCommand.kommentar"; + @DisplayName("for null Text") @Test void createCommandWithInvalidText() throws Exception { @@ -68,7 +70,7 @@ class KommentarCommandITCase { doRequestByKommentarId(content).andExpect(status().isUnprocessableEntity()) .andExpect(jsonPath("$.issues.length()").value(1)) - .andExpect(jsonPath("$.issues.[0].field").value("command.body.text")) + .andExpect(jsonPath("$.issues.[0].field").value(FIELD_PREFIX + ".text")) .andExpect(jsonPath("$.issues.[0].messageCode").value(ValidationMessageCodes.FIELD_IS_EMPTY)); } @@ -78,7 +80,7 @@ class KommentarCommandITCase { String content = buildContentWithText(StringUtils.EMPTY); doRequestByKommentarId(content).andExpect(status().isUnprocessableEntity()) - .andExpect(jsonPath("$.issues.[0].field").value("command.body.text")); + .andExpect(jsonPath("$.issues.[0].field").value(FIELD_PREFIX + ".text")); } diff --git a/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarServiceTest.java b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarServiceTest.java index 084812e5f76e99e0efbbb4430605467c68a57c57..0dae370862db6183fc41124d8147f9b3a50a0cdf 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarServiceTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarServiceTest.java @@ -10,6 +10,8 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; @@ -99,6 +101,46 @@ class KommentarServiceTest { } } + @DisplayName("Edit kommentar") + @Nested + class TestEditKommentar { + + @Captor + private ArgumentCaptor<Kommentar> kommentarCaptor; + + @BeforeEach + void mockKommentarService() { + when(remoteService.getById(anyString())).thenReturn(KommentarTestFactory.createBuilder().text("text needs to be override").build()); + } + + @Test + void shouldCallGetById() { + callEditKommentar(); + + verify(service).getById(KommentarTestFactory.ID); + } + + @Test + void shouldReplaceText() { + callEditKommentar(); + + verify(vorgangAttachedItemService).editKommentar(kommentarCaptor.capture(), eq(KommentarTestFactory.ID), + eq(KommentarTestFactory.VERSION)); + assertThat(kommentarCaptor.getValue().getText()).isEqualTo(KommentarTestFactory.TEXT); + } + + @Test + void shouldCallVorgangAttachedItemService() { + callEditKommentar(); + + verify(vorgangAttachedItemService).editKommentar(any(Kommentar.class), eq(KommentarTestFactory.ID), eq(KommentarTestFactory.VERSION)); + } + + private Command callEditKommentar() { + return service.editKommentar(KommentarCommandTestFactory.create(), KommentarTestFactory.ID, KommentarTestFactory.VERSION); + } + } + @Nested class TestGetById { diff --git a/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarTestFactory.java b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarTestFactory.java index 34815cd0a577824603a3929cba29eec8cfb5f37b..aee4801acc0698a5b90c1e4994552608fae227b5 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarTestFactory.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarTestFactory.java @@ -8,6 +8,7 @@ import com.thedeanda.lorem.Lorem; import com.thedeanda.lorem.LoremIpsum; import de.itvsh.goofy.common.user.UserProfileTestFactory; +import de.itvsh.goofy.vorgang.VorgangHeaderTestFactory; public class KommentarTestFactory { @@ -29,6 +30,7 @@ public class KommentarTestFactory { public static Kommentar.KommentarBuilder createBuilder() { return Kommentar.builder() .id(ID) + .vorgangId(VorgangHeaderTestFactory.ID) .version(VERSION) .text(TEXT) .createdBy(CREATED_BY)