FINERACT-2169: Business date api refactor;
This commit is contained in:
committed by
Adam Saghy
parent
99f313e02c
commit
35aa6e1f4f
+15
-27
@@ -20,7 +20,6 @@ package org.apache.fineract.infrastructure.businessdate.api;
|
|||||||
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.media.ArraySchema;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Content;
|
import io.swagger.v3.oas.annotations.media.Content;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import io.swagger.v3.oas.annotations.parameters.RequestBody;
|
import io.swagger.v3.oas.annotations.parameters.RequestBody;
|
||||||
@@ -33,19 +32,16 @@ import jakarta.ws.rs.POST;
|
|||||||
import jakarta.ws.rs.Path;
|
import jakarta.ws.rs.Path;
|
||||||
import jakarta.ws.rs.PathParam;
|
import jakarta.ws.rs.PathParam;
|
||||||
import jakarta.ws.rs.Produces;
|
import jakarta.ws.rs.Produces;
|
||||||
import jakarta.ws.rs.core.Context;
|
|
||||||
import jakarta.ws.rs.core.MediaType;
|
import jakarta.ws.rs.core.MediaType;
|
||||||
import jakarta.ws.rs.core.UriInfo;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.fineract.commands.domain.CommandWrapper;
|
import org.apache.fineract.commands.domain.CommandWrapper;
|
||||||
import org.apache.fineract.commands.service.CommandWrapperBuilder;
|
import org.apache.fineract.commands.service.CommandWrapperBuilder;
|
||||||
import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService;
|
import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService;
|
||||||
import org.apache.fineract.infrastructure.businessdate.data.BusinessDateData;
|
import org.apache.fineract.infrastructure.businessdate.data.BusinessDateData;
|
||||||
|
import org.apache.fineract.infrastructure.businessdate.data.request.BusinessDateRequest;
|
||||||
import org.apache.fineract.infrastructure.businessdate.service.BusinessDateReadPlatformService;
|
import org.apache.fineract.infrastructure.businessdate.service.BusinessDateReadPlatformService;
|
||||||
import org.apache.fineract.infrastructure.core.api.ApiRequestParameterHelper;
|
|
||||||
import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
|
import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
|
||||||
import org.apache.fineract.infrastructure.core.serialization.ApiRequestJsonSerializationSettings;
|
|
||||||
import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer;
|
import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer;
|
||||||
import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
|
import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@@ -56,7 +52,8 @@ import org.springframework.stereotype.Component;
|
|||||||
@Tag(name = "Business Date Management", description = "Business date management enables you to set up, fetch and adjust organisation business dates")
|
@Tag(name = "Business Date Management", description = "Business date management enables you to set up, fetch and adjust organisation business dates")
|
||||||
public class BusinessDateApiResource {
|
public class BusinessDateApiResource {
|
||||||
|
|
||||||
private final ApiRequestParameterHelper parameterHelper;
|
private static final String BUSINESS_DATE = "BUSINESS_DATE";
|
||||||
|
|
||||||
private final PlatformSecurityContext securityContext;
|
private final PlatformSecurityContext securityContext;
|
||||||
private final DefaultToApiJsonSerializer<BusinessDateData> jsonSerializer;
|
private final DefaultToApiJsonSerializer<BusinessDateData> jsonSerializer;
|
||||||
private final BusinessDateReadPlatformService readPlatformService;
|
private final BusinessDateReadPlatformService readPlatformService;
|
||||||
@@ -66,13 +63,9 @@ public class BusinessDateApiResource {
|
|||||||
@Consumes({ MediaType.TEXT_HTML, MediaType.APPLICATION_JSON })
|
@Consumes({ MediaType.TEXT_HTML, MediaType.APPLICATION_JSON })
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
@Operation(summary = "List all business dates", description = "")
|
@Operation(summary = "List all business dates", description = "")
|
||||||
@ApiResponses({
|
public List<BusinessDateData> getBusinessDates() {
|
||||||
@ApiResponse(responseCode = "200", description = "OK", content = @Content(array = @ArraySchema(schema = @Schema(implementation = BusinessDateApiResourceSwagger.BusinessDateResponse.class)))) })
|
securityContext.authenticatedUser().validateHasReadPermission(BUSINESS_DATE);
|
||||||
public String getBusinessDates(@Context final UriInfo uriInfo) {
|
return this.readPlatformService.findAll();
|
||||||
securityContext.authenticatedUser().validateHasReadPermission("BUSINESS_DATE");
|
|
||||||
final List<BusinessDateData> foundBusinessDates = this.readPlatformService.findAll();
|
|
||||||
ApiRequestJsonSerializationSettings settings = parameterHelper.process(uriInfo.getQueryParameters());
|
|
||||||
return this.jsonSerializer.serialize(settings, foundBusinessDates);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@@ -80,28 +73,23 @@ public class BusinessDateApiResource {
|
|||||||
@Consumes({ MediaType.TEXT_HTML, MediaType.APPLICATION_JSON })
|
@Consumes({ MediaType.TEXT_HTML, MediaType.APPLICATION_JSON })
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
@Operation(summary = "Retrieve a specific Business date", description = "")
|
@Operation(summary = "Retrieve a specific Business date", description = "")
|
||||||
@ApiResponses({
|
public BusinessDateData getBusinessDate(@PathParam("type") @Parameter(description = "type") final String type) {
|
||||||
@ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = BusinessDateApiResourceSwagger.BusinessDateResponse.class))) })
|
securityContext.authenticatedUser().validateHasReadPermission(BUSINESS_DATE);
|
||||||
public String getBusinessDate(@PathParam("type") @Parameter(description = "type") final String type, @Context final UriInfo uriInfo) {
|
return this.readPlatformService.findByType(type);
|
||||||
securityContext.authenticatedUser().validateHasReadPermission("BUSINESS_DATE");
|
|
||||||
final BusinessDateData businessDate = this.readPlatformService.findByType(type);
|
|
||||||
ApiRequestJsonSerializationSettings settings = parameterHelper.process(uriInfo.getQueryParameters());
|
|
||||||
return this.jsonSerializer.serialize(settings, businessDate);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@POST
|
@POST
|
||||||
@Consumes({ MediaType.APPLICATION_JSON })
|
@Consumes({ MediaType.APPLICATION_JSON })
|
||||||
@Produces({ MediaType.APPLICATION_JSON })
|
@Produces({ MediaType.APPLICATION_JSON })
|
||||||
@Operation(summary = "Update Business Date", description = "")
|
@Operation(summary = "Update Business Date", description = "")
|
||||||
@RequestBody(required = true, content = @Content(schema = @Schema(implementation = BusinessDateApiResourceSwagger.BusinessDateRequest.class)))
|
@RequestBody(required = true, content = @Content(schema = @Schema(implementation = BusinessDateRequest.class)))
|
||||||
@ApiResponses({
|
@ApiResponses({
|
||||||
@ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = BusinessDateApiResourceSwagger.BusinessDateResponse.class))) })
|
@ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = BusinessDateApiResourceSwagger.BusinessDateResponse.class))) })
|
||||||
public String updateBusinessDate(final String jsonRequestBody, @Context UriInfo uriInfo) {
|
public CommandProcessingResult updateBusinessDate(BusinessDateRequest businessDateRequest) {
|
||||||
securityContext.authenticatedUser().validateHasUpdatePermission("BUSINESS_DATE");
|
securityContext.authenticatedUser().validateHasUpdatePermission(BUSINESS_DATE);
|
||||||
final CommandWrapper commandRequest = new CommandWrapperBuilder().updateBusinessDate().withJson(jsonRequestBody).build();
|
final CommandWrapper commandRequest = new CommandWrapperBuilder().updateBusinessDate()
|
||||||
|
.withJson(jsonSerializer.serialize(businessDateRequest)).build();
|
||||||
CommandProcessingResult result = commandWritePlatformService.logCommandSource(commandRequest);
|
return commandWritePlatformService.logCommandSource(commandRequest);
|
||||||
return jsonSerializer.serialize(result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-24
@@ -19,7 +19,7 @@
|
|||||||
package org.apache.fineract.infrastructure.businessdate.api;
|
package org.apache.fineract.infrastructure.businessdate.api;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import java.time.LocalDate;
|
import java.util.Map;
|
||||||
|
|
||||||
final class BusinessDateApiResourceSwagger {
|
final class BusinessDateApiResourceSwagger {
|
||||||
|
|
||||||
@@ -30,32 +30,12 @@ final class BusinessDateApiResourceSwagger {
|
|||||||
@Schema(description = "BusinessDateResponse")
|
@Schema(description = "BusinessDateResponse")
|
||||||
public static final class BusinessDateResponse {
|
public static final class BusinessDateResponse {
|
||||||
|
|
||||||
@Schema(example = "COB date")
|
@Schema(example = "1")
|
||||||
public String description;
|
public Long commandId;
|
||||||
@Schema(example = "COB_DATE")
|
public Map<String, Object> changes;
|
||||||
public String type;
|
|
||||||
@Schema(example = "[2015,02,15]")
|
|
||||||
public LocalDate date;
|
|
||||||
|
|
||||||
private BusinessDateResponse() {
|
private BusinessDateResponse() {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Schema(description = "BusinessDateRequest")
|
|
||||||
public static final class BusinessDateRequest {
|
|
||||||
|
|
||||||
@Schema(example = "yyyy-MM-dd")
|
|
||||||
public String dateFormat;
|
|
||||||
@Schema(example = "COB_DATE")
|
|
||||||
public String type;
|
|
||||||
@Schema(example = "2015-02-15")
|
|
||||||
public String date;
|
|
||||||
@Schema(example = "en")
|
|
||||||
public String locale;
|
|
||||||
|
|
||||||
private BusinessDateRequest() {}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -18,6 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.fineract.infrastructure.businessdate.data;
|
package org.apache.fineract.infrastructure.businessdate.data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -30,6 +31,7 @@ import org.apache.fineract.infrastructure.businessdate.domain.BusinessDateType;
|
|||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
public class BusinessDateData implements Serializable {
|
public class BusinessDateData implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private String description;
|
private String description;
|
||||||
private String type;
|
private String type;
|
||||||
|
|||||||
+32
@@ -0,0 +1,32 @@
|
|||||||
|
/**
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
package org.apache.fineract.infrastructure.businessdate.data.request;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
public record BusinessDateRequest(String dateFormat, String type, String date, String locale) implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
public static BusinessDateRequest ofNull() {
|
||||||
|
return new BusinessDateRequest(null, null, null, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-2
@@ -25,7 +25,7 @@ import io.cucumber.java.en.When;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import org.apache.fineract.client.models.BusinessDateResponse;
|
import org.apache.fineract.client.models.BusinessDateData;
|
||||||
import org.apache.fineract.client.services.BusinessDateManagementApi;
|
import org.apache.fineract.client.services.BusinessDateManagementApi;
|
||||||
import org.apache.fineract.test.helper.BusinessDateHelper;
|
import org.apache.fineract.test.helper.BusinessDateHelper;
|
||||||
import org.apache.fineract.test.helper.ErrorHelper;
|
import org.apache.fineract.test.helper.ErrorHelper;
|
||||||
@@ -53,7 +53,7 @@ public class BusinessDateStepDef extends AbstractStepDef {
|
|||||||
|
|
||||||
@Then("Admin checks that the business date is correctly set to {string}")
|
@Then("Admin checks that the business date is correctly set to {string}")
|
||||||
public void checkBusinessDate(String businessDate) throws IOException {
|
public void checkBusinessDate(String businessDate) throws IOException {
|
||||||
Response<BusinessDateResponse> businessDateResponse = businessDateManagementApi.getBusinessDate(BusinessDateHelper.BUSINESS_DATE)
|
Response<BusinessDateData> businessDateResponse = businessDateManagementApi.getBusinessDate(BusinessDateHelper.BUSINESS_DATE)
|
||||||
.execute();
|
.execute();
|
||||||
ErrorHelper.checkSuccessfulApiCall(businessDateResponse);
|
ErrorHelper.checkSuccessfulApiCall(businessDateResponse);
|
||||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d MMMM yyyy");
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d MMMM yyyy");
|
||||||
|
|||||||
+2
-2
@@ -29,7 +29,7 @@ import java.time.format.DateTimeFormatter;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.fineract.client.models.BusinessDateResponse;
|
import org.apache.fineract.client.models.BusinessDateData;
|
||||||
import org.apache.fineract.client.models.GetLoansLoanIdLoanChargeData;
|
import org.apache.fineract.client.models.GetLoansLoanIdLoanChargeData;
|
||||||
import org.apache.fineract.client.models.GetLoansLoanIdResponse;
|
import org.apache.fineract.client.models.GetLoansLoanIdResponse;
|
||||||
import org.apache.fineract.client.models.GetLoansLoanIdTransactions;
|
import org.apache.fineract.client.models.GetLoansLoanIdTransactions;
|
||||||
@@ -132,7 +132,7 @@ public class LoanChargeAdjustmentStepDef extends AbstractStepDef {
|
|||||||
|
|
||||||
Long transactionId = getTransactionIdForTransactionMetConditions(transactionDate, transactionAmount, loanDetailsResponse);
|
Long transactionId = getTransactionIdForTransactionMetConditions(transactionDate, transactionAmount, loanDetailsResponse);
|
||||||
|
|
||||||
Response<List<BusinessDateResponse>> businessDateResponse = businessDateManagementApi.getBusinessDates().execute();
|
Response<List<BusinessDateData>> businessDateResponse = businessDateManagementApi.getBusinessDates().execute();
|
||||||
LocalDate businessDate = businessDateResponse.body().get(0).getDate();
|
LocalDate businessDate = businessDateResponse.body().get(0).getDate();
|
||||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DATE_FORMAT);
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DATE_FORMAT);
|
||||||
String businessDateActual = formatter.format(businessDate);
|
String businessDateActual = formatter.format(businessDate);
|
||||||
|
|||||||
+13
-35
@@ -23,21 +23,16 @@ import static org.mockito.BDDMockito.given;
|
|||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.verifyNoInteractions;
|
import static org.mockito.Mockito.verifyNoInteractions;
|
||||||
|
|
||||||
import jakarta.servlet.ServletException;
|
|
||||||
import jakarta.ws.rs.core.UriInfo;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService;
|
import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService;
|
||||||
import org.apache.fineract.infrastructure.businessdate.data.BusinessDateData;
|
import org.apache.fineract.infrastructure.businessdate.data.BusinessDateData;
|
||||||
|
import org.apache.fineract.infrastructure.businessdate.data.request.BusinessDateRequest;
|
||||||
import org.apache.fineract.infrastructure.businessdate.service.BusinessDateReadPlatformService;
|
import org.apache.fineract.infrastructure.businessdate.service.BusinessDateReadPlatformService;
|
||||||
import org.apache.fineract.infrastructure.core.api.ApiRequestParameterHelper;
|
|
||||||
import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
|
import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
|
||||||
import org.apache.fineract.infrastructure.core.serialization.ApiRequestJsonSerializationSettings;
|
|
||||||
import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer;
|
import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer;
|
||||||
import org.apache.fineract.infrastructure.security.exception.NoAuthorizationException;
|
import org.apache.fineract.infrastructure.security.exception.NoAuthorizationException;
|
||||||
import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
|
import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
|
||||||
import org.apache.fineract.useradministration.domain.AppUser;
|
import org.apache.fineract.useradministration.domain.AppUser;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
@@ -51,15 +46,9 @@ import org.mockito.quality.Strictness;
|
|||||||
@MockitoSettings(strictness = Strictness.LENIENT)
|
@MockitoSettings(strictness = Strictness.LENIENT)
|
||||||
class BusinessDateApiTest {
|
class BusinessDateApiTest {
|
||||||
|
|
||||||
@Mock
|
|
||||||
private ApiRequestParameterHelper parameterHelper;
|
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private BusinessDateReadPlatformService readPlatformService;
|
private BusinessDateReadPlatformService readPlatformService;
|
||||||
|
|
||||||
@Mock
|
|
||||||
private UriInfo uriInfo;
|
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private PlatformSecurityContext securityContext;
|
private PlatformSecurityContext securityContext;
|
||||||
|
|
||||||
@@ -72,16 +61,8 @@ class BusinessDateApiTest {
|
|||||||
@InjectMocks
|
@InjectMocks
|
||||||
private BusinessDateApiResource underTest;
|
private BusinessDateApiResource underTest;
|
||||||
|
|
||||||
private ApiRequestJsonSerializationSettings apiRequestJsonSerializationSettings;
|
|
||||||
|
|
||||||
@BeforeEach
|
|
||||||
void setUp() throws IOException {
|
|
||||||
apiRequestJsonSerializationSettings = new ApiRequestJsonSerializationSettings(false, null, false, false, false);
|
|
||||||
given(parameterHelper.process(Mockito.any())).willReturn(apiRequestJsonSerializationSettings);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void getBusinessDatesAPIHasPermission() throws ServletException, IOException {
|
void getBusinessDatesAPIHasPermission() {
|
||||||
AppUser appUser = Mockito.mock(AppUser.class);
|
AppUser appUser = Mockito.mock(AppUser.class);
|
||||||
List<BusinessDateData> response = Mockito.mock(List.class);
|
List<BusinessDateData> response = Mockito.mock(List.class);
|
||||||
given(readPlatformService.findAll()).willReturn(response);
|
given(readPlatformService.findAll()).willReturn(response);
|
||||||
@@ -89,26 +70,25 @@ class BusinessDateApiTest {
|
|||||||
Mockito.doNothing().when(appUser).validateHasReadPermission("BUSINESS_DATE");
|
Mockito.doNothing().when(appUser).validateHasReadPermission("BUSINESS_DATE");
|
||||||
given(securityContext.authenticatedUser()).willReturn(appUser);
|
given(securityContext.authenticatedUser()).willReturn(appUser);
|
||||||
// when
|
// when
|
||||||
underTest.getBusinessDates(uriInfo);
|
underTest.getBusinessDates();
|
||||||
// then
|
// then
|
||||||
verify(readPlatformService, Mockito.times(1)).findAll();
|
verify(readPlatformService, Mockito.times(1)).findAll();
|
||||||
verify(jsonSerializer, Mockito.times(1)).serialize(apiRequestJsonSerializationSettings, response);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void getBusinessDatesAPIHasNoPermission() throws ServletException, IOException {
|
void getBusinessDatesAPIHasNoPermission() {
|
||||||
AppUser appUser = Mockito.mock(AppUser.class);
|
AppUser appUser = Mockito.mock(AppUser.class);
|
||||||
// given
|
// given
|
||||||
Mockito.doThrow(NoAuthorizationException.class).when(appUser).validateHasReadPermission("BUSINESS_DATE");
|
Mockito.doThrow(NoAuthorizationException.class).when(appUser).validateHasReadPermission("BUSINESS_DATE");
|
||||||
given(securityContext.authenticatedUser()).willReturn(appUser);
|
given(securityContext.authenticatedUser()).willReturn(appUser);
|
||||||
// when
|
// when
|
||||||
assertThatThrownBy(() -> underTest.getBusinessDates(uriInfo)).isInstanceOf(NoAuthorizationException.class);
|
assertThatThrownBy(() -> underTest.getBusinessDates()).isInstanceOf(NoAuthorizationException.class);
|
||||||
// then
|
// then
|
||||||
verifyNoInteractions(readPlatformService);
|
verifyNoInteractions(readPlatformService);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void getBusinessDateByTypeAPIHasPermission() throws ServletException, IOException {
|
void getBusinessDateByTypeAPIHasPermission() {
|
||||||
AppUser appUser = Mockito.mock(AppUser.class);
|
AppUser appUser = Mockito.mock(AppUser.class);
|
||||||
BusinessDateData response = Mockito.mock(BusinessDateData.class);
|
BusinessDateData response = Mockito.mock(BusinessDateData.class);
|
||||||
given(readPlatformService.findByType("type")).willReturn(response);
|
given(readPlatformService.findByType("type")).willReturn(response);
|
||||||
@@ -116,26 +96,25 @@ class BusinessDateApiTest {
|
|||||||
Mockito.doNothing().when(appUser).validateHasReadPermission("BUSINESS_DATE");
|
Mockito.doNothing().when(appUser).validateHasReadPermission("BUSINESS_DATE");
|
||||||
given(securityContext.authenticatedUser()).willReturn(appUser);
|
given(securityContext.authenticatedUser()).willReturn(appUser);
|
||||||
// when
|
// when
|
||||||
underTest.getBusinessDate("type", uriInfo);
|
underTest.getBusinessDate("type");
|
||||||
// then
|
// then
|
||||||
verify(readPlatformService, Mockito.times(1)).findByType("type");
|
verify(readPlatformService, Mockito.times(1)).findByType("type");
|
||||||
verify(jsonSerializer, Mockito.times(1)).serialize(apiRequestJsonSerializationSettings, response);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void getBusinessDateByTypeAPIHasNoPermission() throws ServletException, IOException {
|
void getBusinessDateByTypeAPIHasNoPermission() {
|
||||||
AppUser appUser = Mockito.mock(AppUser.class);
|
AppUser appUser = Mockito.mock(AppUser.class);
|
||||||
// given
|
// given
|
||||||
Mockito.doThrow(NoAuthorizationException.class).when(appUser).validateHasReadPermission("BUSINESS_DATE");
|
Mockito.doThrow(NoAuthorizationException.class).when(appUser).validateHasReadPermission("BUSINESS_DATE");
|
||||||
given(securityContext.authenticatedUser()).willReturn(appUser);
|
given(securityContext.authenticatedUser()).willReturn(appUser);
|
||||||
// when
|
// when
|
||||||
assertThatThrownBy(() -> underTest.getBusinessDate("type", uriInfo)).isInstanceOf(NoAuthorizationException.class);
|
assertThatThrownBy(() -> underTest.getBusinessDate("type")).isInstanceOf(NoAuthorizationException.class);
|
||||||
// then
|
// then
|
||||||
verifyNoInteractions(readPlatformService);
|
verifyNoInteractions(readPlatformService);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void postBusinessDateAPIHasPermission() throws ServletException, IOException {
|
void postBusinessDateAPIHasPermission() {
|
||||||
AppUser appUser = Mockito.mock(AppUser.class);
|
AppUser appUser = Mockito.mock(AppUser.class);
|
||||||
CommandProcessingResult response = Mockito.mock(CommandProcessingResult.class);
|
CommandProcessingResult response = Mockito.mock(CommandProcessingResult.class);
|
||||||
// given
|
// given
|
||||||
@@ -143,20 +122,19 @@ class BusinessDateApiTest {
|
|||||||
given(securityContext.authenticatedUser()).willReturn(appUser);
|
given(securityContext.authenticatedUser()).willReturn(appUser);
|
||||||
given(commandWritePlatformService.logCommandSource(Mockito.any())).willReturn(response);
|
given(commandWritePlatformService.logCommandSource(Mockito.any())).willReturn(response);
|
||||||
// when
|
// when
|
||||||
underTest.updateBusinessDate("{}", uriInfo);
|
underTest.updateBusinessDate(BusinessDateRequest.ofNull());
|
||||||
// then
|
// then
|
||||||
verify(commandWritePlatformService, Mockito.times(1)).logCommandSource(Mockito.any());
|
verify(commandWritePlatformService, Mockito.times(1)).logCommandSource(Mockito.any());
|
||||||
verify(jsonSerializer, Mockito.times(1)).serialize(response);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void postBusinessDateAPIHasNoPermission() throws ServletException, IOException {
|
void postBusinessDateAPIHasNoPermission() {
|
||||||
AppUser appUser = Mockito.mock(AppUser.class);
|
AppUser appUser = Mockito.mock(AppUser.class);
|
||||||
// given
|
// given
|
||||||
Mockito.doThrow(NoAuthorizationException.class).when(appUser).validateHasUpdatePermission("BUSINESS_DATE");
|
Mockito.doThrow(NoAuthorizationException.class).when(appUser).validateHasUpdatePermission("BUSINESS_DATE");
|
||||||
given(securityContext.authenticatedUser()).willReturn(appUser);
|
given(securityContext.authenticatedUser()).willReturn(appUser);
|
||||||
// when
|
// when
|
||||||
assertThatThrownBy(() -> underTest.updateBusinessDate("{}", uriInfo)).isInstanceOf(NoAuthorizationException.class);
|
assertThatThrownBy(() -> underTest.updateBusinessDate(BusinessDateRequest.ofNull())).isInstanceOf(NoAuthorizationException.class);
|
||||||
// then
|
// then
|
||||||
verifyNoInteractions(readPlatformService);
|
verifyNoInteractions(readPlatformService);
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -41,7 +41,7 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
import org.apache.fineract.client.models.BusinessDateResponse;
|
import org.apache.fineract.client.models.BusinessDateData;
|
||||||
import org.apache.fineract.client.models.DeleteDelinquencyBucketResponse;
|
import org.apache.fineract.client.models.DeleteDelinquencyBucketResponse;
|
||||||
import org.apache.fineract.client.models.DeleteDelinquencyRangeResponse;
|
import org.apache.fineract.client.models.DeleteDelinquencyRangeResponse;
|
||||||
import org.apache.fineract.client.models.GetDelinquencyBucketsResponse;
|
import org.apache.fineract.client.models.GetDelinquencyBucketsResponse;
|
||||||
@@ -321,7 +321,7 @@ public class DelinquencyBucketsIntegrationTest extends BaseLoanIntegrationTest {
|
|||||||
final LocalDate bussinesLocalDate = Utils.getDateAsLocalDate("01 March 2012");
|
final LocalDate bussinesLocalDate = Utils.getDateAsLocalDate("01 March 2012");
|
||||||
log.info("Current date {}", bussinesLocalDate);
|
log.info("Current date {}", bussinesLocalDate);
|
||||||
BusinessDateHelper.updateBusinessDate(requestSpec, responseSpec, BusinessDateType.BUSINESS_DATE, bussinesLocalDate);
|
BusinessDateHelper.updateBusinessDate(requestSpec, responseSpec, BusinessDateType.BUSINESS_DATE, bussinesLocalDate);
|
||||||
final BusinessDateResponse businessDateResponse = this.businessDateHelper.getBusinessDateByType(requestSpec, responseSpec,
|
final BusinessDateData businessDateResponse = this.businessDateHelper.getBusinessDateByType(requestSpec, responseSpec,
|
||||||
BusinessDateType.BUSINESS_DATE);
|
BusinessDateType.BUSINESS_DATE);
|
||||||
|
|
||||||
ArrayList<Integer> rangeIds = new ArrayList<>();
|
ArrayList<Integer> rangeIds = new ArrayList<>();
|
||||||
|
|||||||
+5
-4
@@ -25,6 +25,7 @@ import java.time.LocalDate;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.fineract.client.models.BusinessDateData;
|
||||||
import org.apache.fineract.client.models.BusinessDateRequest;
|
import org.apache.fineract.client.models.BusinessDateRequest;
|
||||||
import org.apache.fineract.client.models.BusinessDateResponse;
|
import org.apache.fineract.client.models.BusinessDateResponse;
|
||||||
import org.apache.fineract.client.util.Calls;
|
import org.apache.fineract.client.util.Calls;
|
||||||
@@ -60,19 +61,19 @@ public final class BusinessDateHelper {
|
|||||||
// Example: org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper.disburseLoan(java.lang.Long,
|
// Example: org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper.disburseLoan(java.lang.Long,
|
||||||
// org.apache.fineract.client.models.PostLoansLoanIdRequest)
|
// org.apache.fineract.client.models.PostLoansLoanIdRequest)
|
||||||
@Deprecated(forRemoval = true)
|
@Deprecated(forRemoval = true)
|
||||||
public BusinessDateResponse getBusinessDateByType(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
|
public BusinessDateData getBusinessDateByType(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
|
||||||
final BusinessDateType type) {
|
final BusinessDateType type) {
|
||||||
final String BUSINESS_DATE_API = "/fineract-provider/api/v1/businessdate/" + type.name() + "?" + Utils.TENANT_IDENTIFIER;
|
final String BUSINESS_DATE_API = "/fineract-provider/api/v1/businessdate/" + type.name() + "?" + Utils.TENANT_IDENTIFIER;
|
||||||
final String response = Utils.performServerGet(requestSpec, responseSpec, BUSINESS_DATE_API);
|
final String response = Utils.performServerGet(requestSpec, responseSpec, BUSINESS_DATE_API);
|
||||||
log.info("{}", response);
|
log.info("{}", response);
|
||||||
return GSON.fromJson(response, BusinessDateResponse.class);
|
return GSON.fromJson(response, BusinessDateData.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public BusinessDateResponse getBusinessDate(final String type) {
|
public BusinessDateData getBusinessDate(final String type) {
|
||||||
return Calls.ok(FineractClientHelper.getFineractClient().businessDateManagement.getBusinessDate(type));
|
return Calls.ok(FineractClientHelper.getFineractClient().businessDateManagement.getBusinessDate(type));
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<BusinessDateResponse> getBusinessDates() {
|
public List<BusinessDateData> getBusinessDates() {
|
||||||
return Calls.ok(FineractClientHelper.getFineractClient().businessDateManagement.getBusinessDates());
|
return Calls.ok(FineractClientHelper.getFineractClient().businessDateManagement.getBusinessDates());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user