From d2b8ae5b6db95695ad701278021631906eaf54e7 Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Sat, 11 Jul 2020 21:11:36 +0200 Subject: [PATCH] Added operation to request all agenda items in a body --- .../oparlservice/control/OParlController.java | 18 ++++++++++++++++++ .../oparlservice/service/OParlService.java | 4 ++++ .../control/OParlControllerTest.java | 18 ++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/oparl-server/src/main/java/de/twomartens/oparlservice/control/OParlController.java b/oparl-server/src/main/java/de/twomartens/oparlservice/control/OParlController.java index 839e437..177d99c 100644 --- a/oparl-server/src/main/java/de/twomartens/oparlservice/control/OParlController.java +++ b/oparl-server/src/main/java/de/twomartens/oparlservice/control/OParlController.java @@ -252,6 +252,24 @@ public class OParlController { }); } + @GetMapping("/body/{id}/agendaItems") + @Operation(summary = "List of all agenda items in body", + description = "returns a list of all agenda items in requested body", responses = { + @ApiResponse(description = "Successful Operation", responseCode = "200", + content = @Content(mediaType = "application/json", schema = @Schema(implementation = ObjectList.class))), + @ApiResponse(responseCode = "404", description = "Not found", content = @Content(mediaType = "application/json", + schema = @Schema(implementation = ErrorObject.class))) + }) + public ObjectList agendaItemsInBody( + @PathVariable + @Parameter(description = "body ID", example = "0") + String id) { + log.info("invoked method /v1.1/body/{}/agendaItems", id); + return service.getAgendaItemsInBody(id).orElseThrow(() -> { + throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Keine Körperschaft mit angefragter ID existiert"); + }); + } + @GetMapping("/agendaItem/{id}") @Operation(summary = "information about agenda item", description = "returns the requested agenda item", responses = { @ApiResponse(description = "Successful Operation", responseCode = "200", diff --git a/oparl-server/src/main/java/de/twomartens/oparlservice/service/OParlService.java b/oparl-server/src/main/java/de/twomartens/oparlservice/service/OParlService.java index 1f58295..0ab6a12 100644 --- a/oparl-server/src/main/java/de/twomartens/oparlservice/service/OParlService.java +++ b/oparl-server/src/main/java/de/twomartens/oparlservice/service/OParlService.java @@ -16,6 +16,10 @@ public class OParlService { this.properties = properties; } + public Optional> getAgendaItemsInBody(String bodyID) { + return Optional.empty(); + } + public Optional getAgendaItem(String id) { return Optional.empty(); } diff --git a/oparl-server/src/test/java/de/twomartens/oparlservice/control/OParlControllerTest.java b/oparl-server/src/test/java/de/twomartens/oparlservice/control/OParlControllerTest.java index a0e999b..6ac6cd5 100644 --- a/oparl-server/src/test/java/de/twomartens/oparlservice/control/OParlControllerTest.java +++ b/oparl-server/src/test/java/de/twomartens/oparlservice/control/OParlControllerTest.java @@ -303,6 +303,24 @@ class OParlControllerTest { .andReturn(); } + @Test + void shouldReturnAgendaItemsInBody() throws Exception { + BDDMockito.given(service.getAgendaItemsInBody("0")) + .willReturn(Optional.of( + ObjectList.builder().data(List.of(testItem)).pagination(testPagination).links(testLinks).build() + )); + + mvc.perform(MockMvcRequestBuilders.get("/v1.1/body/0/agendaItems") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.aMapWithSize(3))) + .andExpect(MockMvcResultMatchers.jsonPath("$.data", Matchers.hasSize(1))) + .andExpect(MockMvcResultMatchers.jsonPath("$.data[0]", Matchers.aMapWithSize(11))) + .andExpect(MockMvcResultMatchers.jsonPath("$.data[0].type", Matchers.equalTo("https://schema.oparl.org/1.1/AgendaItem"))) + .andExpect(MockMvcResultMatchers.jsonPath("$.data[0].deleted", Matchers.equalTo(false))) + .andReturn(); + } + @Test void shouldReturnAgendaItem() throws Exception { BDDMockito.given(service.getAgendaItem("0"))