From 7c80bf2ffc968d9824c0c39b4d5639d8f529d133 Mon Sep 17 00:00:00 2001 From: Arnold Galovics Date: Mon, 24 Jul 2023 14:44:23 +0200 Subject: [PATCH] FINERACT-1724: Client search API fix when external ID is null --- .../converter/ExternalIdJsonConverter.java | 2 ++ .../client/ClientSearchTest.java | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/ExternalIdJsonConverter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/ExternalIdJsonConverter.java index b8e089d65..054715163 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/ExternalIdJsonConverter.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/jersey/converter/ExternalIdJsonConverter.java @@ -42,6 +42,8 @@ public class ExternalIdJsonConverter implements JsonConverter { public void convertToJson(ExternalId value, JsonGenerator generator) throws IOException { if (value != null && !value.isEmpty()) { generator.writeString(value.getValue()); + } else { + generator.writeNull(); } } diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/ClientSearchTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/ClientSearchTest.java index e37908f7d..5d26ed4cb 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/ClientSearchTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/ClientSearchTest.java @@ -73,6 +73,32 @@ public class ClientSearchTest { assertThat(result.getTotalPages()).isEqualTo(3); } + @Test + public void testClientSearchWorks_WhenNoExternalIdForClients() { + // given + String lastname = Utils.randomStringGenerator("Client_LastName_", 5); + PostClientsRequest request1 = ClientHelper.defaultClientCreationRequest(); + request1.setExternalId(null); + request1.setLastname(lastname); + clientHelper.createClient(request1); + + PostClientsRequest request2 = ClientHelper.defaultClientCreationRequest(); + request2.setExternalId(null); + request2.setLastname(lastname); + clientHelper.createClient(request2); + + PostClientsRequest request3 = ClientHelper.defaultClientCreationRequest(); + request3.setExternalId(null); + request3.setLastname(lastname); + clientHelper.createClient(request3); + // when + PageClientSearchData result = clientHelper.searchClients(lastname, 0, 1); + // then + assertThat(result.getTotalElements()).isEqualTo(3); + assertThat(result.getNumberOfElements()).isEqualTo(1); + assertThat(result.getTotalPages()).isEqualTo(3); + } + @Test public void testClientSearchWorks_WithLastnameTextOnDefaultOrdering() { // given