From 83775bed461d7b4f265edbffe0c5af8d05278eef Mon Sep 17 00:00:00 2001 From: Michael Folz Date: Wed, 20 Mar 2024 09:16:57 +0100 Subject: [PATCH] #258 - Add an endpoint that takes a structured query and validates it - fix a test that should mock getInvalidCriteria instead of getInvalidTermcodes - update blaze container in tests to 0.25 --- .../direct/DirectBrokerClientCqlIT.java | 2 +- .../dsf/DSFFhirWebClientProviderTest.java | 2 +- .../v3/QueryHandlerRestControllerIT.java | 26 +++++++++++-------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/test/java/de/numcodex/feasibility_gui_backend/query/broker/direct/DirectBrokerClientCqlIT.java b/src/test/java/de/numcodex/feasibility_gui_backend/query/broker/direct/DirectBrokerClientCqlIT.java index 8fd328dd..140c2853 100644 --- a/src/test/java/de/numcodex/feasibility_gui_backend/query/broker/direct/DirectBrokerClientCqlIT.java +++ b/src/test/java/de/numcodex/feasibility_gui_backend/query/broker/direct/DirectBrokerClientCqlIT.java @@ -42,7 +42,7 @@ class DirectBrokerClientCqlIT { private static final Long TEST_BACKEND_QUERY_ID = 1L; private final GenericContainer blaze = new GenericContainer<>( - DockerImageName.parse("samply/blaze:0.18")) + DockerImageName.parse("samply/blaze:0.25")) .withImagePullPolicy(PullPolicy.alwaysPull()) .withExposedPorts(8080) .waitingFor(Wait.forHttp("/health").forStatusCodeMatching(c -> c >= 200 && c <= 500)) diff --git a/src/test/java/de/numcodex/feasibility_gui_backend/query/broker/dsf/DSFFhirWebClientProviderTest.java b/src/test/java/de/numcodex/feasibility_gui_backend/query/broker/dsf/DSFFhirWebClientProviderTest.java index 804bb670..f4b400ee 100644 --- a/src/test/java/de/numcodex/feasibility_gui_backend/query/broker/dsf/DSFFhirWebClientProviderTest.java +++ b/src/test/java/de/numcodex/feasibility_gui_backend/query/broker/dsf/DSFFhirWebClientProviderTest.java @@ -19,7 +19,7 @@ public class DSFFhirWebClientProviderTest { @Container - private GenericContainer blaze = new GenericContainer<>("samply/blaze:0.23.3") + private GenericContainer blaze = new GenericContainer<>("samply/blaze:0.25") .withExposedPorts(8080) .withNetwork(Network.newNetwork()) .withReuse(true); diff --git a/src/test/java/de/numcodex/feasibility_gui_backend/query/v3/QueryHandlerRestControllerIT.java b/src/test/java/de/numcodex/feasibility_gui_backend/query/v3/QueryHandlerRestControllerIT.java index 5e9ddb12..5579577c 100644 --- a/src/test/java/de/numcodex/feasibility_gui_backend/query/v3/QueryHandlerRestControllerIT.java +++ b/src/test/java/de/numcodex/feasibility_gui_backend/query/v3/QueryHandlerRestControllerIT.java @@ -184,7 +184,7 @@ public void testRunQueryEndpoint_FailsOnSoftQuotaExceeded() throws Exception { @Test @WithMockUser(roles = "FEASIBILITY_TEST_USER", username = "test") - public void testValidate2QueryEndpoint_SucceedsOnValidQuery() throws Exception { + public void testValidateQueryEndpoint_SucceedsOnValidQuery() throws Exception { StructuredQuery testQuery = createValidStructuredQuery(); doReturn(List.of()).when(termCodeValidation).getInvalidTermCodes(any(StructuredQuery.class)); @@ -193,27 +193,23 @@ public void testValidate2QueryEndpoint_SucceedsOnValidQuery() throws Exception { .contentType(APPLICATION_JSON) .content(jsonUtil.writeValueAsString(testQuery))) .andExpect(status().isOk()) - .andExpect(jsonPath("$.invalidTerms").isEmpty()); + .andExpect(jsonPath("$.invalidCriteria").isEmpty()); } @Test @WithMockUser(roles = "FEASIBILITY_TEST_USER") - public void testValidate2QueryEndpoint_SucceedsDespiteInvalidTermcodesWith200() throws Exception { + public void testValidateQueryEndpoint_SucceedsDespiteInvalidTermcodesWith200() throws Exception { StructuredQuery testQuery = createValidStructuredQuery(); - var invalidTermCode = TermCode.builder() - .code("LL2191-6") - .system("http://loinc.org") - .display("Geschlecht") - .build(); + var invalidCriterion = createInvalidCriterion(); - doReturn(List.of(invalidTermCode)).when(termCodeValidation).getInvalidTermCodes(any(StructuredQuery.class)); + doReturn(List.of(invalidCriterion)).when(termCodeValidation).getInvalidCriteria(any(StructuredQuery.class)); mockMvc.perform(post(URI.create(PATH_API + PATH_QUERY + "/validate")).with(csrf()) .contentType(APPLICATION_JSON) .content(jsonUtil.writeValueAsString(testQuery))) .andExpect(status().isOk()) - .andExpect(jsonPath("$.invalidTerms").exists()) - .andExpect(jsonPath("$.invalidTerms").isNotEmpty()); + .andExpect(jsonPath("$.invalidCriteria").exists()) + .andExpect(jsonPath("$.invalidCriteria").isNotEmpty()); } @Test @@ -711,6 +707,14 @@ private static TermCode createTermCode() { .build(); } + @NotNull + private static Criterion createInvalidCriterion() { + return Criterion.builder() + .termCodes(List.of(createTermCode())) + .context(null) + .build(); + } + @NotNull private static Query createValidApiQuery(long id) { return Query.builder()