Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -59,33 +59,22 @@ private SavingsEnumerations() {
public static final String INTEREST_CALCULATION_DAYS_IN_YEAR = "interestCalculationDaysInYearType";
public static final String RECURRING_FREQUENCY_TYPE = "recurringFrequencyType";

public static EnumOptionData savingEnumueration(final String typeName, final int id) {
if (typeName.equals(INTEREST_COMPOUNDING_PERIOD_TYPE)) {
return compoundingInterestPeriodType(id);
} else if (typeName.equals(INTEREST_POSTING_PERIOD_TYPE)) {
return interestPostingPeriodType(id);
} else if (typeName.equals(INTEREST_CALCULATION_TYPE)) {
return interestCalculationType(id);
} else if (typeName.equals(MIN_DEPOSIT_TERM_TYPE)) {
return depositTermFrequencyType(id);
} else if (typeName.equals(MAX_DEPOSIT_TERM_TYPE)) {
return depositTermFrequencyType(id);
} else if (typeName.equals(IN_MULTIPLES_OF_DEPOSIT_TERM_TYPE)) {
return inMultiplesOfDepositTermFrequencyType(id);
} else if (typeName.equals(DEPOSIT_PERIOD_FREQUNCY_TYPE)) {
return depositPeriodFrequency(id);
} else if (typeName.equals(LOCKIN_PERIOD_FREQUNCY_TYPE)) {
return lockinPeriodFrequencyType(id);
} else if (typeName.equals(ACCOUNTING_RULE_TYPE)) {
return AccountingEnumerations.accountingRuleType(id);
} else if (typeName.equals(PRE_CLOSURE_PENAL_INTEREST_TYPE)) {
return preClosurePenaltyInterestOnType(id);
} else if (typeName.equals(INTEREST_CALCULATION_DAYS_IN_YEAR)) {
return interestCalculationDaysInYearType(id);
} else if (typeName.equals(RECURRING_FREQUENCY_TYPE)) {
return depositPeriodFrequency(id);
}
return null;
public static EnumOptionData savingEnumeration(final String typeName, final int id) {
return switch (typeName) {
case INTEREST_COMPOUNDING_PERIOD_TYPE -> compoundingInterestPeriodType(id);
case INTEREST_POSTING_PERIOD_TYPE -> interestPostingPeriodType(id);
case INTEREST_CALCULATION_TYPE -> interestCalculationType(id);
case MIN_DEPOSIT_TERM_TYPE -> depositTermFrequencyType(id);
case MAX_DEPOSIT_TERM_TYPE -> depositTermFrequencyType(id);
case IN_MULTIPLES_OF_DEPOSIT_TERM_TYPE -> inMultiplesOfDepositTermFrequencyType(id);
case DEPOSIT_PERIOD_FREQUNCY_TYPE -> depositPeriodFrequency(id);
case LOCKIN_PERIOD_FREQUNCY_TYPE -> lockinPeriodFrequencyType(id);
case ACCOUNTING_RULE_TYPE -> AccountingEnumerations.accountingRuleType(id);
case PRE_CLOSURE_PENAL_INTEREST_TYPE -> preClosurePenaltyInterestOnType(id);
case INTEREST_CALCULATION_DAYS_IN_YEAR -> interestCalculationDaysInYearType(id);
case RECURRING_FREQUENCY_TYPE -> depositPeriodFrequency(id);
default -> null;
};
}

public static EnumOptionData lockinPeriodFrequencyType(final int id) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
/**
* 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.portfolio.savings.service;

import org.apache.fineract.accounting.common.AccountingEnumerations;
import org.apache.fineract.accounting.common.AccountingRuleType;
import org.apache.fineract.infrastructure.core.data.EnumOptionData;
import org.apache.fineract.portfolio.savings.PreClosurePenalInterestOnType;
import org.apache.fineract.portfolio.savings.SavingsCompoundingInterestPeriodType;
import org.apache.fineract.portfolio.savings.SavingsInterestCalculationDaysInYearType;
import org.apache.fineract.portfolio.savings.SavingsInterestCalculationType;
import org.apache.fineract.portfolio.savings.SavingsPeriodFrequencyType;
import org.apache.fineract.portfolio.savings.SavingsPostingInterestPeriodType;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class SavingsEnumerationsTest {

@Test
void savingEnumerationMapsCompoundingInterestPeriodType() {
int id = SavingsCompoundingInterestPeriodType.MONTHLY.getValue();

EnumOptionData data = SavingsEnumerations.savingEnumeration(SavingsEnumerations.INTEREST_COMPOUNDING_PERIOD_TYPE, id);
EnumOptionData expected = SavingsEnumerations.compoundingInterestPeriodType(id);

Assertions.assertEquals(data, expected);
}

@Test
void savingEnumerationMapsPostingInterestPeriodType() {
int id = SavingsPostingInterestPeriodType.BIANNUAL.getValue();

EnumOptionData data = SavingsEnumerations.savingEnumeration(SavingsEnumerations.INTEREST_POSTING_PERIOD_TYPE, id);
EnumOptionData expected = SavingsEnumerations.interestPostingPeriodType(id);

Assertions.assertEquals(data, expected);
}

@Test
void savingEnumerationMapsInterestCalculationType() {
int id = SavingsInterestCalculationType.DAILY_BALANCE.getValue();

EnumOptionData data = SavingsEnumerations.savingEnumeration(SavingsEnumerations.INTEREST_CALCULATION_TYPE, id);
EnumOptionData expected = SavingsEnumerations.interestCalculationType(id);

Assertions.assertEquals(data, expected);
}

@Test
void savingEnumerationMapsMinDepositTermType() {
int id = SavingsPeriodFrequencyType.WEEKS.getValue();

EnumOptionData data = SavingsEnumerations.savingEnumeration(SavingsEnumerations.MIN_DEPOSIT_TERM_TYPE, id);
EnumOptionData expected = SavingsEnumerations.depositTermFrequencyType(id);

Assertions.assertEquals(data, expected);
}

@Test
void savingEnumerationMapsMaxDepositTermType() {
int id = SavingsPeriodFrequencyType.YEARS.getValue();

EnumOptionData data = SavingsEnumerations.savingEnumeration(SavingsEnumerations.MAX_DEPOSIT_TERM_TYPE, id);
EnumOptionData expected = SavingsEnumerations.depositTermFrequencyType(id);

Assertions.assertEquals(data, expected);
}

@Test
void savingEnumerationMapsInMultiplesOfDepositTermType() {
int id = SavingsPeriodFrequencyType.DAYS.getValue();

EnumOptionData data = SavingsEnumerations.savingEnumeration(SavingsEnumerations.IN_MULTIPLES_OF_DEPOSIT_TERM_TYPE, id);
EnumOptionData expected = SavingsEnumerations.inMultiplesOfDepositTermFrequencyType(id);

Assertions.assertEquals(data, expected);
}

@Test
void savingEnumerationMapsDepositPeriodFrequencyType() {
int id = SavingsPeriodFrequencyType.MONTHS.getValue();

EnumOptionData data = SavingsEnumerations.savingEnumeration(SavingsEnumerations.DEPOSIT_PERIOD_FREQUNCY_TYPE, id);
EnumOptionData expected = SavingsEnumerations.depositPeriodFrequency(id);

Assertions.assertEquals(data, expected);
}

@Test
void savingEnumerationMapsLockinPeriodFrequencyType() {
int id = SavingsPeriodFrequencyType.MONTHS.getValue();

EnumOptionData data = SavingsEnumerations.savingEnumeration(SavingsEnumerations.LOCKIN_PERIOD_FREQUNCY_TYPE, id);
EnumOptionData expected = SavingsEnumerations.lockinPeriodFrequencyType(id);

Assertions.assertEquals(data, expected);
}

@Test
void savingEnumerationMapsAccountingRuleType() {
int id = AccountingRuleType.CASH_BASED.getValue();

EnumOptionData data = SavingsEnumerations.savingEnumeration(SavingsEnumerations.ACCOUNTING_RULE_TYPE, id);
EnumOptionData expected = AccountingEnumerations.accountingRuleType(id);

Assertions.assertEquals(data, expected);
}

@Test
void savingEnumerationMapsPreClosurePenaltyInterestType() {
int id = PreClosurePenalInterestOnType.WHOLE_TERM.getValue();

EnumOptionData data = SavingsEnumerations.savingEnumeration(SavingsEnumerations.PRE_CLOSURE_PENAL_INTEREST_TYPE, id);
EnumOptionData expected = SavingsEnumerations.preClosurePenaltyInterestOnType(id);

Assertions.assertEquals(data, expected);
}

@Test
void savingEnumerationMapsInterestCalculationDaysInYearType() {
int id = SavingsInterestCalculationDaysInYearType.DAYS_365.getValue();

EnumOptionData data = SavingsEnumerations.savingEnumeration(SavingsEnumerations.INTEREST_CALCULATION_DAYS_IN_YEAR, id);
EnumOptionData expected = SavingsEnumerations.interestCalculationDaysInYearType(id);

Assertions.assertEquals(data, expected);
}

@Test
void savingEnumerationMapsRecurringFrequencyType() {
int id = SavingsPeriodFrequencyType.WEEKS.getValue();

EnumOptionData data = SavingsEnumerations.savingEnumeration(SavingsEnumerations.RECURRING_FREQUENCY_TYPE, id);
EnumOptionData expected = SavingsEnumerations.depositPeriodFrequency(id);

Assertions.assertEquals(data, expected);
}

@Test
void savingEnumerationReturnsNullForUnknownType() {
EnumOptionData data = SavingsEnumerations.savingEnumeration("unknownType", 1);

Assertions.assertNull(data);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ private void updateEnumerations(Map<String, Object> commandAsJsonMap, JsonObject
commandAsJsonMap.remove(typeName);

final Integer enumTypeId = auditObject.get(typeName).getAsInt();
final String code = SavingsEnumerations.savingEnumueration(typeName, enumTypeId).getValue();
final String code = SavingsEnumerations.savingEnumeration(typeName, enumTypeId).getValue();
if (code != null) {
commandAsJsonMap.put(typeName, code);
}
Expand Down
Loading