FINERACT-2181: Moneyhelper multitenant configuration fix, rework it to be a utility class

This commit is contained in:
Attila Budai
2025-07-21 18:03:33 +02:00
committed by Adam Saghy
parent ecbefb04c4
commit 27bf6d05d5
7 changed files with 727 additions and 48 deletions
@@ -34,14 +34,12 @@ import static org.apache.fineract.portfolio.loanproduct.domain.RepaymentStartDat
import static org.apache.fineract.util.TimeZoneConstants.ASIA_MANILA_ID;
import static org.apache.fineract.util.TimeZoneConstants.EUROPE_BERLIN_ID;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.BDDMockito.given;
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.util.List;
import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService;
import org.apache.fineract.junit.context.WithTenantContext;
import org.apache.fineract.junit.context.WithTenantContextExtension;
import org.apache.fineract.junit.system.WithSystemProperty;
@@ -59,8 +57,6 @@ import org.apache.fineract.portfolio.loanaccount.data.HolidayDetailDTO;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mockito;
import org.springframework.test.util.ReflectionTestUtils;
@ExtendWith({ WithSystemTimeZoneExtension.class, WithTenantContextExtension.class, WithSystemPropertyExtension.class })
public class DefaultScheduledDateGeneratorTest {
@@ -69,12 +65,8 @@ public class DefaultScheduledDateGeneratorTest {
@BeforeEach
public void setUp() {
ConfigurationDomainService cds = Mockito.mock(ConfigurationDomainService.class);
given(cds.getRoundingMode()).willReturn(6); // default
MoneyHelper moneyHelper = new MoneyHelper();
ReflectionTestUtils.setField(moneyHelper, "configurationDomainService", cds);
moneyHelper.initialize();
// Initialize MoneyHelper with default rounding mode (HALF_EVEN = 6)
MoneyHelper.initializeTenantRoundingMode("default", 6);
}
@Test
@@ -21,7 +21,6 @@ package org.apache.fineract.portfolio.loanaccount.service;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.lenient;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -32,10 +31,10 @@ import java.util.Map;
import java.util.Set;
import org.apache.fineract.commands.service.CommandProcessingService;
import org.apache.fineract.infrastructure.businessdate.domain.BusinessDateType;
import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService;
import org.apache.fineract.infrastructure.core.api.JsonCommand;
import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
import org.apache.fineract.infrastructure.core.domain.ExternalId;
import org.apache.fineract.infrastructure.core.domain.FineractPlatformTenant;
import org.apache.fineract.infrastructure.core.exception.GeneralPlatformDomainRuleException;
import org.apache.fineract.infrastructure.core.service.DateUtils;
import org.apache.fineract.infrastructure.core.service.ExternalIdFactory;
@@ -65,10 +64,8 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.context.ApplicationContext;
import org.springframework.test.util.ReflectionTestUtils;
@ExtendWith(MockitoExtension.class)
public class LoanWritePlatformServiceJpaRepositoryImplTest {
@@ -134,12 +131,12 @@ public class LoanWritePlatformServiceJpaRepositoryImplTest {
}
private void setupMoneyHelper() {
ConfigurationDomainService cds = Mockito.mock(ConfigurationDomainService.class);
lenient().when(cds.getRoundingMode()).thenReturn(6);
// Set up a test tenant context
FineractPlatformTenant tenant = new FineractPlatformTenant(1L, "test", "Test Tenant", "Asia/Kolkata", null);
ThreadLocalContextUtil.setTenant(tenant);
MoneyHelper moneyHelper = new MoneyHelper();
ReflectionTestUtils.setField(moneyHelper, "configurationDomainService", cds);
moneyHelper.initialize();
// Initialize MoneyHelper with tenant configuration (HALF_EVEN = 6)
MoneyHelper.initializeTenantRoundingMode("test", 6);
}
@Test