From 82231101c8a2047d85711b33232d260fe4485c16 Mon Sep 17 00:00:00 2001 From: taskain7 Date: Wed, 19 Apr 2023 10:26:07 +0200 Subject: [PATCH] [FINERACT-1922] Skip business date job when business date is not enabled --- .../IncreaseBusinessDateBy1DayConfig.java | 5 +- .../IncreaseBusinessDateBy1DayTasklet.java | 9 ++- .../IncreaseCobDateBy1DayConfig.java | 5 +- .../IncreaseCobDateBy1DayTasklet.java | 9 ++- ...IncreaseBusinessDateBy1DayTaskletTest.java | 80 +++++++++++++++++++ .../IncreaseCobDateBy1DayTaskletTest.java | 80 +++++++++++++++++++ 6 files changed, 184 insertions(+), 4 deletions(-) create mode 100644 fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayTaskletTest.java create mode 100644 fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayTaskletTest.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayConfig.java index 12efaa339..3ea37724c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayConfig.java @@ -18,6 +18,7 @@ */ package org.apache.fineract.infrastructure.jobs.service.increasedateby1day.increasebusinessdateby1day; +import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.infrastructure.jobs.service.increasedateby1day.IncreaseDateBy1DayService; import org.springframework.batch.core.Job; @@ -38,6 +39,8 @@ public class IncreaseBusinessDateBy1DayConfig { private StepBuilderFactory steps; @Autowired private IncreaseDateBy1DayService increaseDateBy1DayService; + @Autowired + private ConfigurationDomainService configurationDomainService; @Bean protected Step increaseBusinessDateBy1DayStep() { @@ -52,6 +55,6 @@ public class IncreaseBusinessDateBy1DayConfig { @Bean public IncreaseBusinessDateBy1DayTasklet increaseBusinessDateBy1DayTasklet() { - return new IncreaseBusinessDateBy1DayTasklet(increaseDateBy1DayService); + return new IncreaseBusinessDateBy1DayTasklet(increaseDateBy1DayService, configurationDomainService); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayTasklet.java index 013cfa300..cae7ccb86 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayTasklet.java @@ -21,7 +21,9 @@ package org.apache.fineract.infrastructure.jobs.service.increasedateby1day.incre import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.fineract.infrastructure.businessdate.domain.BusinessDateType; +import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; import org.apache.fineract.infrastructure.jobs.service.increasedateby1day.IncreaseDateBy1DayService; +import org.springframework.batch.core.ExitStatus; import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; import org.springframework.batch.core.step.tasklet.Tasklet; @@ -32,10 +34,15 @@ import org.springframework.batch.repeat.RepeatStatus; public class IncreaseBusinessDateBy1DayTasklet implements Tasklet { private final IncreaseDateBy1DayService increaseDateBy1DayService; + private final ConfigurationDomainService configurationDomainService; @Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception { - increaseDateBy1DayService.increaseDateByTypeByOneDay(BusinessDateType.BUSINESS_DATE); + if (configurationDomainService.isBusinessDateEnabled()) { + increaseDateBy1DayService.increaseDateByTypeByOneDay(BusinessDateType.BUSINESS_DATE); + } else { + contribution.setExitStatus(ExitStatus.NOOP); + } return RepeatStatus.FINISHED; } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayConfig.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayConfig.java index 9acb55648..5328abb50 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayConfig.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayConfig.java @@ -18,6 +18,7 @@ */ package org.apache.fineract.infrastructure.jobs.service.increasedateby1day.increasecobdateby1day; +import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; import org.apache.fineract.infrastructure.jobs.service.JobName; import org.apache.fineract.infrastructure.jobs.service.increasedateby1day.IncreaseDateBy1DayService; import org.springframework.batch.core.Job; @@ -38,6 +39,8 @@ public class IncreaseCobDateBy1DayConfig { private StepBuilderFactory steps; @Autowired private IncreaseDateBy1DayService increaseDateBy1DayService; + @Autowired + private ConfigurationDomainService configurationDomainService; @Bean protected Step increaseCobDateBy1DayStep() { @@ -52,6 +55,6 @@ public class IncreaseCobDateBy1DayConfig { @Bean public IncreaseCobDateBy1DayTasklet increaseCobDateBy1DayTasklet() { - return new IncreaseCobDateBy1DayTasklet(increaseDateBy1DayService); + return new IncreaseCobDateBy1DayTasklet(increaseDateBy1DayService, configurationDomainService); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayTasklet.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayTasklet.java index 898e7e45c..a8094c595 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayTasklet.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayTasklet.java @@ -21,7 +21,9 @@ package org.apache.fineract.infrastructure.jobs.service.increasedateby1day.incre import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.fineract.infrastructure.businessdate.domain.BusinessDateType; +import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; import org.apache.fineract.infrastructure.jobs.service.increasedateby1day.IncreaseDateBy1DayService; +import org.springframework.batch.core.ExitStatus; import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; import org.springframework.batch.core.step.tasklet.Tasklet; @@ -32,10 +34,15 @@ import org.springframework.batch.repeat.RepeatStatus; public class IncreaseCobDateBy1DayTasklet implements Tasklet { private final IncreaseDateBy1DayService increaseDateBy1DayService; + private final ConfigurationDomainService configurationDomainService; @Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception { - increaseDateBy1DayService.increaseDateByTypeByOneDay(BusinessDateType.COB_DATE); + if (configurationDomainService.isBusinessDateEnabled()) { + increaseDateBy1DayService.increaseDateByTypeByOneDay(BusinessDateType.COB_DATE); + } else { + contribution.setExitStatus(ExitStatus.NOOP); + } return RepeatStatus.FINISHED; } } diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayTaskletTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayTaskletTest.java new file mode 100644 index 000000000..ce86ea33f --- /dev/null +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayTaskletTest.java @@ -0,0 +1,80 @@ +/** + * 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.jobs.service.increasedateby1day.increasebusinessdateby1day; + +import static org.junit.Assert.assertEquals; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +import org.apache.fineract.infrastructure.businessdate.domain.BusinessDateType; +import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; +import org.apache.fineract.infrastructure.jobs.service.increasedateby1day.IncreaseDateBy1DayService; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.mockito.junit.jupiter.MockitoSettings; +import org.mockito.quality.Strictness; +import org.springframework.batch.core.ExitStatus; +import org.springframework.batch.core.StepContribution; +import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.repeat.RepeatStatus; + +@ExtendWith(MockitoExtension.class) +@MockitoSettings(strictness = Strictness.LENIENT) +class IncreaseBusinessDateBy1DayTaskletTest { + + @Mock + private StepContribution stepContribution; + + @Mock + private ChunkContext chunkContext; + + @Mock + private ConfigurationDomainService configurationDomainService; + + @Mock + private IncreaseDateBy1DayService increaseDateBy1DayService; + + @InjectMocks + private IncreaseBusinessDateBy1DayTasklet underTest; + + @Test + public void shouldBusinessDateJobBeSkippedWhenBusinessDateIsNotEnabled() throws Exception { + given(configurationDomainService.isBusinessDateEnabled()).willReturn(false); + + RepeatStatus repeatStatus = underTest.execute(stepContribution, chunkContext); + + verify(stepContribution, times(1)).setExitStatus(ExitStatus.NOOP); + assertEquals(RepeatStatus.FINISHED, repeatStatus); + } + + @Test + public void shouldBusinessDateJobBeProcessedWhenBusinessDateIsEnabled() throws Exception { + given(configurationDomainService.isBusinessDateEnabled()).willReturn(true); + + RepeatStatus repeatStatus = underTest.execute(stepContribution, chunkContext); + + verify(increaseDateBy1DayService, times(1)).increaseDateByTypeByOneDay(BusinessDateType.BUSINESS_DATE); + assertEquals(RepeatStatus.FINISHED, repeatStatus); + } + +} diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayTaskletTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayTaskletTest.java new file mode 100644 index 000000000..d7b394cc7 --- /dev/null +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayTaskletTest.java @@ -0,0 +1,80 @@ +/** + * 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.jobs.service.increasedateby1day.increasecobdateby1day; + +import static org.junit.Assert.assertEquals; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +import org.apache.fineract.infrastructure.businessdate.domain.BusinessDateType; +import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; +import org.apache.fineract.infrastructure.jobs.service.increasedateby1day.IncreaseDateBy1DayService; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.mockito.junit.jupiter.MockitoSettings; +import org.mockito.quality.Strictness; +import org.springframework.batch.core.ExitStatus; +import org.springframework.batch.core.StepContribution; +import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.repeat.RepeatStatus; + +@ExtendWith(MockitoExtension.class) +@MockitoSettings(strictness = Strictness.LENIENT) +class IncreaseCobDateBy1DayTaskletTest { + + @Mock + private StepContribution stepContribution; + + @Mock + private ChunkContext chunkContext; + + @Mock + private ConfigurationDomainService configurationDomainService; + + @Mock + private IncreaseDateBy1DayService increaseDateBy1DayService; + + @InjectMocks + private IncreaseCobDateBy1DayTasklet underTest; + + @Test + public void shouldBusinessDateJobBeSkippedWhenBusinessDateIsNotEnabled() throws Exception { + given(configurationDomainService.isBusinessDateEnabled()).willReturn(false); + + RepeatStatus repeatStatus = underTest.execute(stepContribution, chunkContext); + + verify(stepContribution, times(1)).setExitStatus(ExitStatus.NOOP); + assertEquals(RepeatStatus.FINISHED, repeatStatus); + } + + @Test + public void shouldBusinessDateJobBeProcessedWhenBusinessDateIsEnabled() throws Exception { + given(configurationDomainService.isBusinessDateEnabled()).willReturn(true); + + RepeatStatus repeatStatus = underTest.execute(stepContribution, chunkContext); + + verify(increaseDateBy1DayService, times(1)).increaseDateByTypeByOneDay(BusinessDateType.COB_DATE); + assertEquals(RepeatStatus.FINISHED, repeatStatus); + } + +}