diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandBody.java b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandBody.java index b3c47e8af27ec615e88062f22399c48dbf7563e4..f8e2c4cf1f1bde9745c1a9bac2a2caf4b595777e 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandBody.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandBody.java @@ -3,6 +3,7 @@ package de.itvsh.goofy.common.command; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonSubTypes.Type; +import de.itvsh.goofy.kommentar.Kommentar; import de.itvsh.goofy.postfach.PostfachMail; import de.itvsh.goofy.vorgang.AssignUserCommandBody; import de.itvsh.goofy.vorgang.RedirectRequest; @@ -12,7 +13,8 @@ import de.itvsh.goofy.wiedervorlage.Wiedervorlage; @Type(value = PostfachMail.class, name = "SEND_POSTFACH_MAIL"), @Type(value = AssignUserCommandBody.class, name = "ASSIGN_USER"), @Type(value = RedirectRequest.class, name = "REDIRECT_VORGANG"), - @Type(value = Wiedervorlage.class, name = "WIEDERVORLAGE") + @Type(value = Wiedervorlage.class, name = "WIEDERVORLAGE"), + @Type(value = Kommentar.class, name = "KOMMENTAR") }) public interface CommandBody { diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandOrder.java b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandOrder.java index dfb37d8f12b20ba1ae0ebc65d7b16f332fb79612..136cf4ea625bb8e60c4cdb2e07b0da5ae29551ab 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandOrder.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandOrder.java @@ -15,13 +15,13 @@ public enum CommandOrder { VORGANG_ZURUECKSTELLEN(true, Type.VORGANG), VORGANG_ABSCHLIESSEN(true, Type.VORGANG), VORGANG_WIEDEREROEFFNEN(true, Type.VORGANG), - // + ASSIGN_USER(false, Type.VORGANG), - // + REDIRECT_VORGANG(false, Type.FORWARDING), FORWARD_SUCCESSFULL(false, Type.FORWARDING), FORWARD_FAILED(false, Type.FORWARDING), - // + CREATE_KOMMENTAR(false, Type.KOMMENTAR), EDIT_KOMMENTAR(false, Type.KOMMENTAR), diff --git a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/Kommentar.java b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/Kommentar.java index 078b94223b11cfe8d625f8c7ae20a27127921a32..3600084c4f0eb639bd3762e45f54f5a0be477fa6 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/Kommentar.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/Kommentar.java @@ -12,6 +12,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty.Access; import de.itvsh.goofy.common.LinkedResource; +import de.itvsh.goofy.common.command.CommandBody; import de.itvsh.goofy.common.user.UserProfileController; import lombok.AccessLevel; import lombok.AllArgsConstructor; @@ -25,11 +26,14 @@ import lombok.ToString; @NoArgsConstructor(access = AccessLevel.PRIVATE) @AllArgsConstructor(access = AccessLevel.PACKAGE) @ToString -public class Kommentar { +public class Kommentar implements CommandBody { @JsonIgnore private String id; + @JsonIgnore + private String vorgangId; + @JsonProperty(access = Access.READ_ONLY) @LinkedResource(controllerClass = UserProfileController.class) private String createdBy; 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 764eead15d4c09eb1918a9ab6b2f7309554b6d14..b9040667714e68b01695b0ee0290d02d29e6b3cf 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 @@ -2,6 +2,8 @@ package de.itvsh.goofy.kommentar; import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*; +import java.time.ZonedDateTime; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; @@ -10,26 +12,50 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; 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; +import de.itvsh.goofy.common.user.CurrentUserService; @RestController @RequestMapping(KommentarCommandController.KOMMENTAR_COMMANDS) public class KommentarCommandController { static final String KOMMENTAR_COMMANDS = "/api/kommentars/{kommentarId}/commands"; + static final String NOT_SET = "-1"; @Autowired private KommentarService service; + @Autowired + private CommandByRelationController commandByRelationController; + @PostMapping - public ResponseEntity<Void> createCommand(@RequestBody KommentarCommand command, @PathVariable String kommentarId) { - return buildResponseLink(service.createCommand(kommentarId, command)); + public ResponseEntity<Void> createCommand(@RequestBody KommentarCommand kommentarCommand, @PathVariable String kommentarId) { + var command = commandByRelationController.createCommand(buildCommand(service.getById(kommentarId), kommentarCommand), + KommentarRemoteService.ITEM_NAME); + return buildResponseLink(command); } - private ResponseEntity<Void> buildResponseLink(KommentarCommand createdKommentarCommand) { + 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(NOT_SET) + .vorgangId(kommentar.getVorgangId()); + + return commandBuilder.body(updateKommandByCommand(kommentar, command)).build(); + } + + private Kommentar updateKommandByCommand(Kommentar kommentar, KommentarCommand command) { + return kommentar.toBuilder().text(command.getKommentar().getText()).build(); + } + @RestController @RequestMapping(KommentarCommandByVorgangController.KOMMENTAR_COMMANDS_BY_VORGANG) public static class KommentarCommandByVorgangController { @@ -37,13 +63,33 @@ public class KommentarCommandController { static final String KOMMENTAR_COMMANDS_BY_VORGANG = "/api/vorgangs/{vorgangId}/kommentarCommands"; @Autowired - private KommentarService service; + private CommandByRelationController commandByRelationController; + + @Autowired + private CurrentUserService userService; @PostMapping() public ResponseEntity<Void> createCommand(@RequestBody KommentarCommand command, @PathVariable String vorgangId) { - var created = service.createCommand(vorgangId, command); + var createdCommand = commandByRelationController.createCommand(buildCommand(vorgangId, command), KommentarRemoteService.ITEM_NAME); + + return ResponseEntity.created(linkTo(CommandController.class).slash(createdCommand.getId()).toUri()).build(); + } - return ResponseEntity.created(linkTo(CommandController.class).slash(created.getId()).toUri()).build(); + CreateCommand buildCommand(String vorgangId, KommentarCommand command) { + return CreateCommand.builder() + .vorgangId(vorgangId) + .order(CommandOrder.CREATE_ATTACHED_ITEM) + .relationId(NOT_SET) + .body(buildBody(command.getKommentar())) + .build(); } + + Kommentar buildBody(Kommentar kommentar) { + return kommentar.toBuilder() + .createdAt(ZonedDateTime.now().withNano(0)) + .createdBy(userService.getUserId().toString()) + .build(); + } + } } diff --git a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarMapper.java b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarMapper.java index 23263f80c3f20a7b8314a5658843a8ad0e25e58e..b75688087c0f7b8f122d9223bf015e234735f7d9 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarMapper.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarMapper.java @@ -1,5 +1,8 @@ package de.itvsh.goofy.kommentar; +import java.time.ZonedDateTime; +import java.util.Map; + import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.MappingConstants; @@ -14,14 +17,31 @@ import de.itvsh.ozg.pluto.kommentar.GrpcKommentar; @Mapper(unmappedTargetPolicy = ReportingPolicy.ERROR, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS) public interface KommentarMapper { + static final String ID = "id"; + static final String TEXT = "text"; + static final String CREATED_BY = "createdBy"; + static final String CREATED_AT = "createdAt"; + static final String VORGANG_ID = "vorgangId"; + @Mapping(target = "textBytes", ignore = true) @IgnoreGrpcFields GrpcKommentar toGrpcKommentar(Kommentar kommentar); + @Mapping(target = "vorgangId", ignore = true) Kommentar toKommentar(GrpcKommentar grpcKommentar); @Mapping(target = "kommentar", ignore = true) @ValueMapping(source = "UNRECOGNIZED", target = MappingConstants.NULL) @ValueMapping(source = "UNDEFINED", target = MappingConstants.NULL) KommentarCommand toKommentarCommand(GrpcCommand command); + + default Kommentar fromItemMap(Map<String, Object> map) { + return Kommentar.builder() + .id((String) map.get(ID)) + .createdAt(ZonedDateTime.parse((String) map.get(CREATED_AT))) + .createdBy((String) map.get(CREATED_BY)) + .text((String) map.get(TEXT)) + .vorgangId((String) map.get(VORGANG_ID)) + .build(); + } } diff --git a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarRemoteService.java b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarRemoteService.java index ae337b684cfd9d475ace5e633f217364c2514092..9547f7f5a663f62c906bdf0978f6891a375d71bd 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarRemoteService.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/KommentarRemoteService.java @@ -18,6 +18,7 @@ import net.devh.boot.grpc.client.inject.GrpcClient; @Service class KommentarRemoteService { + public static final String ITEM_NAME = "Kommentar"; @GrpcClient("pluto") private KommentarServiceBlockingStub serviceStub; @Autowired @@ -46,6 +47,7 @@ class KommentarRemoteService { return GrpcGetKommentarRequest.newBuilder().setId(kommentarId).build(); } + @Deprecated public KommentarCommand sendKommentarCommand(String relationId, KommentarCommand command) { var request = buildCreateCommandRequest(relationId, command); var response = serviceStub.createCommand(request); 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 84b0c3fa3d435b273887d916c533f5e6f774e031..f8e26878b8be7246bea83f0a16d57d08bfc7879f 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 @@ -23,6 +23,7 @@ class KommentarService { return remoteService.getById(kommentarId); } + @Deprecated public KommentarCommand createCommand(String relationId, @Valid KommentarCommand command) { return remoteService.sendKommentarCommand(relationId, command); } diff --git a/goofy-server/src/test/java/de/itvsh/goofy/kommentar/GrpcKommentarTestFactory.java b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/GrpcKommentarTestFactory.java index 6064c182ae49773e18bd7a6b57a612bfca5e9041..275eb20838fca5765fa6e0a828d0e788127828ac 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/kommentar/GrpcKommentarTestFactory.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/GrpcKommentarTestFactory.java @@ -2,6 +2,7 @@ package de.itvsh.goofy.kommentar; import de.itvsh.ozg.pluto.kommentar.GrpcKommentar; +@Deprecated public class GrpcKommentarTestFactory { final static String ID = KommentarTestFactory.ID; 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 2f67bba4bd69e06282af0f8d3519439c3c6616d1..7def511e8d58b04c49b28148cd7e26fccb29eb59 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 @@ -7,6 +7,8 @@ import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; +import java.util.UUID; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -19,14 +21,19 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.setup.MockMvcBuilders; +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.common.user.CurrentUserService; +import de.itvsh.goofy.common.user.UserId; import de.itvsh.goofy.kommentar.KommentarCommandController.KommentarCommandByVorgangController; import de.itvsh.goofy.vorgang.VorgangHeaderTestFactory; class KommentarCommandControllerTest { @Captor - private ArgumentCaptor<KommentarCommand> commandCaptor; + private ArgumentCaptor<CreateCommand> commandCaptor; @Nested class TestCreateKommentarCommandByVorgang { @@ -35,13 +42,18 @@ class KommentarCommandControllerTest { private KommentarCommandByVorgangController controller; @Mock private KommentarService service; + @Mock + private CommandByRelationController commandByRelationController; + @Mock + private CurrentUserService userService; private MockMvc mockMvc; @BeforeEach void init() { mockMvc = MockMvcBuilders.standaloneSetup(controller).build(); - when(service.createCommand(anyString(), any())).thenReturn(KommentarCommandTestFactory.create()); + when(userService.getUserId()).thenReturn(UserId.from(UUID.randomUUID())); + when(commandByRelationController.createCommand(any(), anyString())).thenReturn(CommandTestFactory.create()); } @Test @@ -53,19 +65,19 @@ class KommentarCommandControllerTest { void shouldCallService() throws Exception { doRequest(); - verify(service).createCommand(eq(VorgangHeaderTestFactory.ID), notNull()); + verify(commandByRelationController).createCommand(any(), eq(KommentarRemoteService.ITEM_NAME)); } @Test void shouldGiveCommandToService() throws Exception { doRequest(); - verify(service).createCommand(eq(VorgangHeaderTestFactory.ID), commandCaptor.capture()); + verify(commandByRelationController).createCommand(commandCaptor.capture(), anyString()); var command = commandCaptor.getValue(); assertThat(command).usingRecursiveComparison() - .ignoringFields("kommentar.id", "kommentar.createdBy", "kommentar.createdByName", "kommentar.createdAt") - .isEqualTo(KommentarCommandTestFactory.createBuilder().id(null).build()); + .ignoringFields("body", "status") + .isEqualTo(CommandTestFactory.createBuilder().order(CommandOrder.CREATE_ATTACHED_ITEM).relationId("-1").id(null).build()); } private ResultActions doRequest() throws Exception { @@ -83,6 +95,8 @@ class KommentarCommandControllerTest { @InjectMocks private KommentarCommandController controller; @Mock + private CommandByRelationController commandByRelationController; + @Mock private KommentarService service; private MockMvc mockMvc; @@ -90,8 +104,8 @@ class KommentarCommandControllerTest { @BeforeEach void init() { mockMvc = MockMvcBuilders.standaloneSetup(controller).build(); - when(service.createCommand(anyString(), any())).thenReturn(KommentarCommandTestFactory.createBuilder() - .order(CommandOrder.EDIT_KOMMENTAR).build()); + when(commandByRelationController.createCommand(any(), anyString())).thenReturn(CommandTestFactory.create()); + when(service.getById(any())).thenReturn(KommentarTestFactory.create()); } @Test @@ -103,19 +117,19 @@ class KommentarCommandControllerTest { void shouldCallService() throws Exception { doRequest(); - verify(service).createCommand(anyString(), notNull()); + verify(service).getById(any()); } @Test void shouldGiveCommandToService() throws Exception { doRequest(); - verify(service).createCommand(anyString(), commandCaptor.capture()); + verify(commandByRelationController).createCommand(commandCaptor.capture(), anyString()); var command = commandCaptor.getValue(); assertThat(command).usingRecursiveComparison() - .ignoringFields("kommentar.id", "kommentar.createdBy", "kommentar.createdByName", "kommentar.createdAt") - .isEqualTo(KommentarCommandTestFactory.createBuilder().id(null).build()); + .ignoringFields("body", "status") + .isEqualTo(CommandTestFactory.createBuilder().order(CommandOrder.UPDATE_ATTACHED_ITEM).relationId("-1").id(null).build()); } @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 000d82d4797926a848d0445e598241f7148f7d74..37c96c2c937358f455fab7fcc967503267cf42ab 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 @@ -22,6 +22,8 @@ import org.springframework.test.web.servlet.ResultActions; import de.itvsh.goofy.common.ValidationMessageCodes; import de.itvsh.goofy.common.command.CommandOrder; +import de.itvsh.goofy.common.command.CommandRemoteService; +import de.itvsh.goofy.common.command.CommandTestFactory; import de.itvsh.goofy.kommentar.KommentarCommandController.KommentarCommandByVorgangController; import de.itvsh.goofy.vorgang.VorgangHeaderTestFactory; @@ -34,6 +36,8 @@ class KommentarCommandITCase { private MockMvc mockMvc; @MockBean private KommentarRemoteService remoteService; + @MockBean + private CommandRemoteService commandRemoteService; @WithMockUser @Nested @@ -41,14 +45,15 @@ class KommentarCommandITCase { @BeforeEach void initTest() { - when(remoteService.sendKommentarCommand(anyString(), any())).thenReturn(KommentarCommandTestFactory.create()); + when(remoteService.getById(any())).thenReturn(KommentarTestFactory.create()); + when(commandRemoteService.createCommand(any(), anyString())).thenReturn(CommandTestFactory.create()); } @Test void shouldCreateCommand() throws Exception { doRequestByKommentarId(createValidRequestContent()).andExpect(status().isCreated()); - verify(remoteService).sendKommentarCommand(eq(KommentarTestFactory.ID), any()); + verify(commandRemoteService).createCommand(any(), eq(KommentarRemoteService.ITEM_NAME)); } @WithMockUser @@ -63,7 +68,7 @@ class KommentarCommandITCase { doRequestByKommentarId(content).andExpect(status().isUnprocessableEntity()) .andExpect(jsonPath("$.issues.length()").value(1)) - .andExpect(jsonPath("$.issues.[0].field").value("command.kommentar.text")) + .andExpect(jsonPath("$.issues.[0].field").value("command.body.text")) .andExpect(jsonPath("$.issues.[0].messageCode").value(ValidationMessageCodes.FIELD_IS_EMPTY)); } @@ -73,7 +78,7 @@ class KommentarCommandITCase { String content = buildContentWithText(StringUtils.EMPTY); doRequestByKommentarId(content).andExpect(status().isUnprocessableEntity()) - .andExpect(jsonPath("$.issues.[0].field").value("command.kommentar.text")); + .andExpect(jsonPath("$.issues.[0].field").value("command.body.text")); } @@ -88,7 +93,7 @@ class KommentarCommandITCase { private String buildContentWithText(String text) { return createRequestContent(KommentarCommandTestFactory.createBuilder() - .order(CommandOrder.EDIT_KOMMENTAR) + .order(CommandOrder.CREATE_ATTACHED_ITEM) .kommentar(KommentarTestFactory.createBuilder().text(text).build()) .build()); } @@ -107,14 +112,15 @@ class KommentarCommandITCase { @BeforeEach void initTest() { - when(remoteService.sendKommentarCommand(anyString(), any())).thenReturn(KommentarCommandTestFactory.create()); + when(remoteService.getById(any())).thenReturn(KommentarTestFactory.create()); + when(commandRemoteService.createCommand(any(), anyString())).thenReturn(CommandTestFactory.create()); } @Test void shouldCreateCommand() throws Exception { doRequestByVorgangId(createValidRequestContent()).andExpect(status().isCreated()); - verify(remoteService).sendKommentarCommand(eq(VorgangHeaderTestFactory.ID), any()); + verify(commandRemoteService).createCommand(any(), eq(KommentarRemoteService.ITEM_NAME)); } @WithMockUser @@ -129,7 +135,7 @@ class KommentarCommandITCase { doRequestByVorgangId(content).andExpect(status().isUnprocessableEntity()) .andExpect(jsonPath("$.issues.length()").value(1)) - .andExpect(jsonPath("$.issues.[0].field").value("command.kommentar.text")) + .andExpect(jsonPath("$.issues.[0].field").value("command.body.text")) .andExpect(jsonPath("$.issues.[0].messageCode").value(ValidationMessageCodes.FIELD_IS_EMPTY)); } @@ -139,7 +145,7 @@ class KommentarCommandITCase { String content = buildContentWithText(StringUtils.EMPTY); doRequestByVorgangId(content).andExpect(status().isUnprocessableEntity()) - .andExpect(jsonPath("$.issues.[0].field").value("command.kommentar.text")); + .andExpect(jsonPath("$.issues.[0].field").value("command.body.text")); } diff --git a/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarMapperTest.java b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarMapperTest.java index 379f512ecf1106daa56f4fcdc075dfa559db6642..fc347c6b0009161e72757106f0e928fdabadaa55 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarMapperTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/kommentar/KommentarMapperTest.java @@ -2,6 +2,7 @@ package de.itvsh.goofy.kommentar; import static org.assertj.core.api.Assertions.*; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mapstruct.factory.Mappers; @@ -11,6 +12,51 @@ class KommentarMapperTest { private KommentarMapper mapper = Mappers.getMapper(KommentarMapper.class); @Nested + class TestFromItemMap { + @Test + void shouldMapId() { + var kommentar = map(); + + assertThat(kommentar.getId()).isEqualTo(KommentarTestFactory.ID); + } + + @Test + void shouldMapCreatedBy() { + var kommentar = map(); + + assertThat(kommentar.getCreatedBy()).isEqualTo(KommentarTestFactory.CREATED_BY); + } + + @Test + void shouldMapCreatedAt() { + var kommentar = map(); + + assertThat(kommentar.getCreatedAt()).isEqualTo(KommentarTestFactory.CREATED_AT); + } + + @Test + void shouldMapText() { + var kommentar = map(); + + assertThat(kommentar.getText()).isEqualTo(KommentarTestFactory.TEXT); + } + + @Test + void shouldMapVorgangID() { + var kommentar = map(); + + assertThat(kommentar.getVorgangId()).isEqualTo(KommentarTestFactory.VORGANG_ID); + } + + } + + private Kommentar map() { + return mapper.fromItemMap(KommentarTestFactory.createAsMap()); + } + + @Nested + @Deprecated + @Disabled class TestFromGrpc { @Test @@ -29,6 +75,8 @@ class KommentarMapperTest { } @Nested + @Deprecated + @Disabled class TestToGrpc { @Test 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 2d7b464ec849994bd06cb7b89214ff491b7dd3bf..d6b9d7e1bbeea927781d97ce7e4f1401b1f1322e 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 @@ -1,12 +1,14 @@ package de.itvsh.goofy.kommentar; import java.time.ZonedDateTime; +import java.util.Map; import java.util.UUID; 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 { @@ -21,6 +23,8 @@ public class KommentarTestFactory { public static final String TEXT = lorem.getWords(15); + public static final String VORGANG_ID = VorgangHeaderTestFactory.ID; + public static Kommentar create() { return createBuilder().build(); } @@ -31,6 +35,16 @@ public class KommentarTestFactory { .text(TEXT) .createdBy(CREATED_BY) .createdByName(CREATED_BY_NAME) - .createdAt(CREATED_AT); + .createdAt(CREATED_AT) + .vorgangId(VORGANG_ID); + } + + public static Map<String, Object> createAsMap() { + return Map.of( + KommentarMapper.ID, ID, + KommentarMapper.TEXT, TEXT, + KommentarMapper.CREATED_BY, CREATED_BY, + KommentarMapper.CREATED_AT, CREATED_AT_STR, + KommentarMapper.VORGANG_ID, VORGANG_ID); } }