FINERACT-2421: Make "Business date configuration" reliable

This commit is contained in:
Adam Saghy
2026-01-15 10:21:00 +01:00
parent 442290ef92
commit d413e2b4af
6 changed files with 74 additions and 12 deletions
@@ -20,7 +20,6 @@ package org.apache.fineract.test.initializer.base;
import java.util.List;
import org.apache.fineract.test.config.CacheConfiguration;
import org.apache.fineract.test.helper.BusinessDateHelper;
import org.apache.fineract.test.initializer.global.FineractGlobalInitializerStep;
import org.apache.fineract.test.initializer.scenario.FineractScenarioInitializerStep;
import org.apache.fineract.test.initializer.suite.FineractSuiteInitializerStep;
@@ -38,8 +37,7 @@ public class BaseFineractInitializerConfiguration {
@Bean
public FineractInitializer fineractInitializer(List<FineractGlobalInitializerStep> globalInitializerSteps,
List<FineractSuiteInitializerStep> suiteInitializerSteps, List<FineractScenarioInitializerStep> scenarioInitializerSteps,
BusinessDateHelper businessDateHelper) {
return new FineractInitializer(globalInitializerSteps, suiteInitializerSteps, scenarioInitializerSteps, businessDateHelper);
List<FineractSuiteInitializerStep> suiteInitializerSteps, List<FineractScenarioInitializerStep> scenarioInitializerSteps) {
return new FineractInitializer(globalInitializerSteps, suiteInitializerSteps, scenarioInitializerSteps);
}
}
@@ -22,7 +22,6 @@ import java.util.List;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.fineract.test.helper.BusinessDateHelper;
import org.apache.fineract.test.initializer.global.FineractGlobalInitializerStep;
import org.apache.fineract.test.initializer.scenario.FineractScenarioInitializerStep;
import org.apache.fineract.test.initializer.suite.FineractSuiteInitializerStep;
@@ -37,7 +36,6 @@ public class FineractInitializer implements InitializingBean {
private final List<FineractGlobalInitializerStep> globalInitializerSteps;
private final List<FineractSuiteInitializerStep> suiteInitializerSteps;
private final List<FineractScenarioInitializerStep> scenarioInitializerSteps;
private final BusinessDateHelper businessDateHelper;
@Override
public void afterPropertiesSet() throws Exception {
@@ -71,7 +69,6 @@ public class FineractInitializer implements InitializingBean {
for (FineractGlobalInitializerStep initializerStep : globalInitializerSteps) {
initializerStep.initialize();
}
businessDateHelper.setBusinessDateToday();
}
public void setupDefaultsForSuite() throws Exception {
@@ -80,20 +77,23 @@ public class FineractInitializer implements InitializingBean {
log.debug("Executing suite initializer: {}", initializerStep.getClass().getName());
initializerStep.initializeForSuite();
}
businessDateHelper.setBusinessDateToday();
}
public void setupDefaultsForScenario() throws Exception {
for (FineractScenarioInitializerStep scenarioInitializerStep : scenarioInitializerSteps) {
scenarioInitializerStep.initializeForScenario();
}
businessDateHelper.setBusinessDateToday();
}
public void resetDefaultsAfterSuite() throws Exception {
for (FineractSuiteInitializerStep initializerStep : suiteInitializerSteps) {
initializerStep.resetAfterSuite();
}
businessDateHelper.setBusinessDateToday();
}
public void resetDefaultsAfterScenario() {
for (FineractScenarioInitializerStep initializerStep : scenarioInitializerSteps) {
initializerStep.resetAfterScenario();
}
}
}
@@ -0,0 +1,50 @@
/**
* 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.test.initializer.global;
import static org.apache.fineract.test.initializer.global.GlobalConfigurationGlobalInitializerStep.CONFIG_KEY_ENABLE_BUSINESS_DATE;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.fineract.test.helper.BusinessDateHelper;
import org.apache.fineract.test.helper.GlobalConfigurationHelper;
import org.apache.fineract.test.initializer.scenario.FineractScenarioInitializerStep;
import org.springframework.stereotype.Component;
@Slf4j
@RequiredArgsConstructor
@Component
public class BusinessDateInitializerStep implements FineractScenarioInitializerStep {
private final BusinessDateHelper businessDateHelper;
private final GlobalConfigurationHelper configurationHelper;
@Override
public void initializeForScenario() {
configurationHelper.enableGlobalConfiguration(CONFIG_KEY_ENABLE_BUSINESS_DATE, 0L);
businessDateHelper.setBusinessDateToday();
}
@Override
public void resetAfterScenario() {
configurationHelper.enableGlobalConfiguration(CONFIG_KEY_ENABLE_BUSINESS_DATE, 0L);
businessDateHelper.setBusinessDateToday();
configurationHelper.disableGlobalConfiguration(CONFIG_KEY_ENABLE_BUSINESS_DATE, 0L);
}
}
@@ -21,4 +21,6 @@ package org.apache.fineract.test.initializer.scenario;
public interface FineractScenarioInitializerStep {
void initializeForScenario() throws Exception;
void resetAfterScenario();
}
@@ -41,4 +41,10 @@ public class GlobalConfigurationScenarioInitializerStep implements FineractScena
globalConfigurationHelper.enableGlobalConfiguration(CONFIG_KEY_ENABLE_BUSINESS_DATE, 0L);
globalConfigurationHelper.enableGlobalConfiguration(CONFIG_KEY_ENABLE_RECALCULATE_COB_DATE, 0L);
}
@Override
public void resetAfterScenario() {
// Enable business date
globalConfigurationHelper.disableGlobalConfiguration(CONFIG_KEY_ENABLE_BUSINESS_DATE, 0L);
}
}
@@ -18,6 +18,7 @@
*/
package org.apache.fineract.test.stepdef.hook;
import io.cucumber.java.After;
import io.cucumber.java.AfterAll;
import io.cucumber.java.Before;
import io.cucumber.java.BeforeAll;
@@ -38,10 +39,10 @@ public class InitializingHook {
environment.getPropertySources().addFirst(new ResourcePropertySource("classpath:fineract-test-application.properties"));
InitializerProperties initializerProperties = PropertiesFactory.get(environment, InitializerProperties.class);
if (initializerProperties.isEnabled()) {
log.info("Setting up defaults for Fineract");
log.info("Setting up global defaults for Fineract");
FineractInitializerFactory.get().setupGlobalDefaults();
} else {
log.info("Skipping defaults for Fineract");
log.info("Skipping global defaults for Fineract");
}
FineractInitializerFactory.get().setupDefaultsForSuite();
@@ -52,6 +53,11 @@ public class InitializingHook {
FineractInitializerFactory.get().setupDefaultsForScenario();
}
@After
public static void after() throws Exception {
FineractInitializerFactory.get().resetDefaultsAfterScenario();
}
@AfterAll
public static void afterAll() throws Exception {
FineractInitializerFactory.get().resetDefaultsAfterSuite();