diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungVorgangProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungVorgangProcessorTest.java index 407f80cfc8b60f886812ce6ef346ce26f923c9a0..a8ddd9361ca3b7c887d1ef2047010303d47a9fe1 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungVorgangProcessorTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungVorgangProcessorTest.java @@ -50,6 +50,7 @@ import de.ozgcloud.alfa.common.user.UserRole; import de.ozgcloud.alfa.loeschanforderung.LoeschAnforderungController.LoeschAnforderungByVorgangController; import de.ozgcloud.alfa.vorgang.Vorgang; import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus; +import de.ozgcloud.alfa.vorgang.VorgangController; import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory; class LoeschAnforderungVorgangProcessorTest { @@ -60,9 +61,10 @@ class LoeschAnforderungVorgangProcessorTest { @Mock private CurrentUserService currentUserService; - @Mock private LoeschAnforderungService loeschAnforderungService; + @Mock + private VorgangController vorgangController; @DisplayName("Process") @Nested @@ -152,11 +154,23 @@ class LoeschAnforderungVorgangProcessorTest { @EnumSource(names = { "VERWORFEN", "ABGESCHLOSSEN" }) void shouldReturnTrue(VorgangStatus vorgangStatus) { var vorgang = VorgangHeaderTestFactory.createBuilder().status(vorgangStatus).build(); + when(vorgangController.isEditable(vorgang)).thenReturn(true); var isAllowed = processor.isLoeschenAnfordernAllowed(vorgang); assertThat(isAllowed).isTrue(); } + + @ParameterizedTest + @EnumSource(names = { "VERWORFEN", "ABGESCHLOSSEN" }) + void shouldReturnFalseIfVorgangNotEditable(VorgangStatus vorgangStatus) { + var vorgang = VorgangHeaderTestFactory.createBuilder().status(vorgangStatus).build(); + when(vorgangController.isEditable(vorgang)).thenReturn(false); + + var isAllowed = processor.isLoeschenAnfordernAllowed(vorgang); + + assertThat(isAllowed).isFalse(); + } } @DisplayName("with EINHEITLICHER_ANSPRECHPARTNER role") @@ -173,11 +187,23 @@ class LoeschAnforderungVorgangProcessorTest { @EnumSource(names = { "VERWORFEN", "ABGESCHLOSSEN" }) void shouldReturnTrue(VorgangStatus vorgangStatus) { var vorgang = VorgangHeaderTestFactory.createBuilder().status(vorgangStatus).build(); + when(vorgangController.isEditable(vorgang)).thenReturn(true); var isAllowed = processor.isLoeschenAnfordernAllowed(vorgang); assertThat(isAllowed).isTrue(); } + + @ParameterizedTest + @EnumSource(names = { "VERWORFEN", "ABGESCHLOSSEN" }) + void shouldReturnFalseIfVorgangNotEditable(VorgangStatus vorgangStatus) { + var vorgang = VorgangHeaderTestFactory.createBuilder().status(vorgangStatus).build(); + when(vorgangController.isEditable(vorgang)).thenReturn(false); + + var isAllowed = processor.isLoeschenAnfordernAllowed(vorgang); + + assertThat(isAllowed).isFalse(); + } } } diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangCommandProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangCommandProcessorTest.java index f06e3e333ce0da60213ca90f8c8af8f808a36117..83e431f870d0b470841cb427a4c4a4954b83acbf 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangCommandProcessorTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangCommandProcessorTest.java @@ -63,10 +63,24 @@ class VorgangCommandProcessorTest { @Mock private VorgangController vorgangController; - @BeforeEach - void init() { - // TODO: refactor - when(vorgangController.isEditable(any())).thenReturn(true); + @Test + void shouldNotAddLinksIfVorgangIsNull() { + var entityModel = mock(EntityModel.class); + + processor.process(entityModel); + + verify(entityModel, never()).add(any(Link.class)); + } + + @ParameterizedTest + @EnumSource(value = VorgangStatus.class) + void shouldNotAddLinksIfVorgangIsNotEditable(VorgangStatus status) { + var vorgang = VorgangHeaderTestFactory.createBuilder().status(status).build(); + when(vorgangController.isEditable(vorgang)).thenReturn(false); + + var entityModel = processor.process(EntityModel.of(vorgang)); + + assertThat(entityModel.hasLinks()).isFalse(); } @Nested @@ -77,7 +91,7 @@ class VorgangCommandProcessorTest { @Test void shouldBePresent() { - var processed = processor.process(buildVorgangInStatus(VorgangStatus.NEU)); + var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.NEU)); assertThat(processed.getLink(linkRel)).isPresent().get() .extracting(Link::getHref).isEqualTo(EXPECTED_COMMAND_LINK); @@ -86,7 +100,7 @@ class VorgangCommandProcessorTest { @ParameterizedTest @EnumSource(mode = Mode.EXCLUDE, names = { "NEU" }) void shouldNOTbePresentbyStatus(VorgangStatus status) { - var processed = processor.process(buildVorgangInStatus(status)); + var processed = processor.process(buildEditableVorgangInStatus(status)); assertThat(processed.getLink(linkRel)).isEmpty(); } @@ -103,7 +117,7 @@ class VorgangCommandProcessorTest { void shouldBePresentAtStatusAndRole(String userRole) { doReturn(userRole).when(processor).getUserRole(); - var processed = processor.process(buildVorgangInStatus(VorgangStatus.NEU)); + var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.NEU)); assertThat(processed.getLink(linkRel)).isPresent().get() .extracting(Link::getHref).isEqualTo(EXPECTED_COMMAND_LINK); @@ -114,7 +128,7 @@ class VorgangCommandProcessorTest { void shouldNOTbePresentAtStatusAndRoleEa(VorgangStatus status) { doReturn(UserRole.EINHEITLICHER_ANSPRECHPARTNER).when(processor).getUserRole(); - var processed = processor.process(buildVorgangInStatus(status)); + var processed = processor.process(buildEditableVorgangInStatus(status)); assertThat(processed.getLink(linkRel)).isEmpty(); } @@ -124,7 +138,7 @@ class VorgangCommandProcessorTest { void shouldNOTbePresentAtStatusAndRoleVerwaltungUser(VorgangStatus status) { doReturn(UserRole.VERWALTUNG_USER).when(processor).getUserRole(); - var processed = processor.process(buildVorgangInStatus(status)); + var processed = processor.process(buildEditableVorgangInStatus(status)); assertThat(processed.getLink(linkRel)).isEmpty(); } @@ -139,7 +153,8 @@ class VorgangCommandProcessorTest { @ParameterizedTest @ValueSource(strings = { "EINHEITLICHER_ANSPRECHPARTNER", "VERWALTUNG_USER" }) void shouldBePresentAtStatusAndRole(String userRole) { - var processed = processor.process(buildVorgangInStatus(VorgangStatus.VERWORFEN)); + doReturn(userRole).when(processor).getUserRole(); + var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.VERWORFEN)); assertThat(processed.getLink(linkRel)).isPresent().get() .extracting(Link::getHref).isEqualTo(EXPECTED_COMMAND_LINK); @@ -150,7 +165,7 @@ class VorgangCommandProcessorTest { void shouldNOTbePresentAtStatusAndRoleVerwaltungUser(VorgangStatus status) { doReturn(UserRole.VERWALTUNG_USER).when(processor).getUserRole(); - var processed = processor.process(buildVorgangInStatus(status)); + var processed = processor.process(buildEditableVorgangInStatus(status)); assertThat(processed.getLink(linkRel)).isEmpty(); } @@ -160,7 +175,7 @@ class VorgangCommandProcessorTest { void shouldNOTbePresentAtStatusAndRoleEa(VorgangStatus status) { doReturn(UserRole.EINHEITLICHER_ANSPRECHPARTNER).when(processor).getUserRole(); - var processed = processor.process(buildVorgangInStatus(status)); + var processed = processor.process(buildEditableVorgangInStatus(status)); assertThat(processed.getLink(linkRel)).isEmpty(); } @@ -174,7 +189,7 @@ class VorgangCommandProcessorTest { @Test void shouldBePresent() { - var processed = processor.process(buildVorgangInStatus(VorgangStatus.ANGENOMMEN)); + var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.ANGENOMMEN)); assertThat(processed.getLink(linkRel)).isPresent().get() .extracting(Link::getHref) @@ -184,7 +199,7 @@ class VorgangCommandProcessorTest { @ParameterizedTest @EnumSource(mode = Mode.EXCLUDE, names = { "ANGENOMMEN", "ABGESCHLOSSEN" }) void shouldNOTbePresentbyStatus(VorgangStatus status) { - var processed = processor.process(buildVorgangInStatus(status)); + var processed = processor.process(buildEditableVorgangInStatus(status)); assertThat(processed.getLink(linkRel)).isEmpty(); } @@ -198,7 +213,7 @@ class VorgangCommandProcessorTest { @Test void shouldBePresent() { - var processed = processor.process(buildVorgangInStatus(VorgangStatus.IN_BEARBEITUNG)); + var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.IN_BEARBEITUNG)); assertThat(processed.getLink(linkRel)).isPresent().get() .extracting(Link::getHref) @@ -208,7 +223,7 @@ class VorgangCommandProcessorTest { @ParameterizedTest @EnumSource(mode = Mode.EXCLUDE, names = { "IN_BEARBEITUNG" }) void shouldNOTbePresentbyStatus(VorgangStatus status) { - var processed = processor.process(buildVorgangInStatus(status)); + var processed = processor.process(buildEditableVorgangInStatus(status)); assertThat(processed.getLink(linkRel)).isEmpty(); } @@ -222,7 +237,7 @@ class VorgangCommandProcessorTest { @Test void shouldBePresent() { - var processed = processor.process(buildVorgangInStatus(VorgangStatus.IN_BEARBEITUNG)); + var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.IN_BEARBEITUNG)); assertThat(processed.getLink(linkRel)).isPresent().get() .extracting(Link::getHref).isEqualTo(EXPECTED_COMMAND_LINK); @@ -231,7 +246,7 @@ class VorgangCommandProcessorTest { @ParameterizedTest @EnumSource(mode = Mode.EXCLUDE, names = { "IN_BEARBEITUNG" }) void shouldNOTbePresentbyStatus(VorgangStatus status) { - var processed = processor.process(buildVorgangInStatus(status)); + var processed = processor.process(buildEditableVorgangInStatus(status)); assertThat(processed.getLink(linkRel)).isEmpty(); } @@ -254,7 +269,7 @@ class VorgangCommandProcessorTest { @ParameterizedTest @EnumSource(mode = Mode.INCLUDE, names = { "IN_BEARBEITUNG", "BESCHIEDEN" }) void shouldBePresent(VorgangStatus status) { - var processed = processor.process(buildVorgangInStatus(status)); + var processed = processor.process(buildEditableVorgangInStatus(status)); assertThat(processed.getLink(linkRel)).isPresent().get() .extracting(Link::getHref) @@ -264,7 +279,7 @@ class VorgangCommandProcessorTest { @ParameterizedTest @EnumSource(mode = Mode.EXCLUDE, names = { "IN_BEARBEITUNG", "BESCHIEDEN" }) void shouldNOTbePresentbyStatus(VorgangStatus status) { - var processed = processor.process(buildVorgangInStatus(status)); + var processed = processor.process(buildEditableVorgangInStatus(status)); assertThat(processed.getLink(linkRel)).isEmpty(); } @@ -280,7 +295,7 @@ class VorgangCommandProcessorTest { @Test void shouldBePresent() { - var processed = processor.process(buildVorgangInStatus(VorgangStatus.IN_BEARBEITUNG)); + var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.IN_BEARBEITUNG)); assertThat(processed.getLink(linkRel)).isPresent().get() .extracting(Link::getHref) @@ -290,7 +305,7 @@ class VorgangCommandProcessorTest { @ParameterizedTest @EnumSource(mode = Mode.EXCLUDE, names = { "IN_BEARBEITUNG" }) void shouldNOTbePresentbyStatus(VorgangStatus status) { - var processed = processor.process(buildVorgangInStatus(status)); + var processed = processor.process(buildEditableVorgangInStatus(status)); assertThat(processed.getLink(linkRel)).isEmpty(); } @@ -309,7 +324,7 @@ class VorgangCommandProcessorTest { void shouldBePresentOnStatusAbgeschlossen(String userRole) { doReturn(userRole).when(processor).getUserRole(); - var processed = processor.process(buildVorgangInStatus(VorgangStatus.ABGESCHLOSSEN)); + var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.ABGESCHLOSSEN)); assertThat(processed.getLink(linkRel)).isPresent().get() .extracting(Link::getHref).isEqualTo(EXPECTED_COMMAND_LINK); @@ -318,7 +333,7 @@ class VorgangCommandProcessorTest { @Test @DisplayName("on Vorgang with Status Beschieden and Role VerwaltungUser") void shouldBePresentOnStatusBeschieden() { - var processed = processor.process(buildVorgangInStatus(VorgangStatus.BESCHIEDEN)); + var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.BESCHIEDEN)); assertThat(processed.getLink(linkRel)).isPresent().get() .extracting(Link::getHref).isEqualTo(EXPECTED_COMMAND_LINK); @@ -329,7 +344,7 @@ class VorgangCommandProcessorTest { void shouldBeNotPresentOnStatusBeschiedenAndRoleEA() { doReturn(UserRole.EINHEITLICHER_ANSPRECHPARTNER).when(processor).getUserRole(); - var processed = processor.process(buildVorgangInStatus(VorgangStatus.BESCHIEDEN)); + var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.BESCHIEDEN)); assertThat(processed.getLink(linkRel)).isNotPresent(); } @@ -339,7 +354,7 @@ class VorgangCommandProcessorTest { void shouldNOTbePresentbyStatusAndRoleVerwaltungUser(VorgangStatus status) { doReturn(UserRole.VERWALTUNG_USER).when(processor).getUserRole(); - var processed = processor.process(buildVorgangInStatus(status)); + var processed = processor.process(buildEditableVorgangInStatus(status)); assertThat(processed.getLink(linkRel)).isEmpty(); } @@ -349,7 +364,7 @@ class VorgangCommandProcessorTest { void shouldNOTbePresentbyStatusAndRoleEA(VorgangStatus status) { doReturn(UserRole.EINHEITLICHER_ANSPRECHPARTNER).when(processor).getUserRole(); - var processed = processor.process(buildVorgangInStatus(status)); + var processed = processor.process(buildEditableVorgangInStatus(status)); assertThat(processed.getLink(linkRel)).isEmpty(); } @@ -366,13 +381,15 @@ class VorgangCommandProcessorTest { @ParameterizedTest @EnumSource() void shouldNotBePresent(VorgangStatus status) { - var processed = processor.process(buildVorgangInStatus(status)); + var processed = processor.process(buildEditableVorgangInStatus(status)); assertThat(processed.getLinks()).isEmpty(); } } - private EntityModel<Vorgang> buildVorgangInStatus(VorgangStatus status) { - return EntityModel.of(VorgangHeaderTestFactory.createBuilder().status(status).build()); + private EntityModel<Vorgang> buildEditableVorgangInStatus(VorgangStatus status) { + var vorgangInStatus = VorgangHeaderTestFactory.createBuilder().status(status).build(); + when(vorgangController.isEditable(vorgangInStatus)).thenReturn(true); + return EntityModel.of(vorgangInStatus); } } \ No newline at end of file