Search in sources :

Example 1 with SavingsScheduleBuilder

use of org.mifos.domain.builders.SavingsScheduleBuilder in project head by mifos.

the class SavingsScheduleTest method whenASavingsScheduleForAnInActiveSavingsAccountIsCreatedDepositEqualsZero.

@Test
public void whenASavingsScheduleForAnInActiveSavingsAccountIsCreatedDepositEqualsZero() {
    AccountStateEntity savingsAccountState = new AccountStateEntity(AccountState.SAVINGS_INACTIVE);
    // stubbing
    when(savingsAccount.getAccountState()).thenReturn(savingsAccountState);
    // exercise
    savingsSchedule = new SavingsScheduleBuilder().withInstallmentNumber(1).withAccount(savingsAccount).withCustomer(payingCustomer).withDepositDue(recommendedAmount).build();
    // verification
    assertThat(savingsSchedule.getDeposit(), is(new Money(defaultCurrency)));
}
Also used : SavingsScheduleBuilder(org.mifos.domain.builders.SavingsScheduleBuilder) Money(org.mifos.framework.util.helpers.Money) AccountStateEntity(org.mifos.accounts.business.AccountStateEntity) Test(org.junit.Test)

Example 2 with SavingsScheduleBuilder

use of org.mifos.domain.builders.SavingsScheduleBuilder in project head by mifos.

the class SavingsPaymentStrategyForMandatorySavingsAccountsTest method whenDepositAmountIsInExcessOfTotalDepositDueTheExcessAmountIsReturnedInRemainingAmount.

@Test
public void whenDepositAmountIsInExcessOfTotalDepositDueTheExcessAmountIsReturnedInRemainingAmount() {
    // setup
    final Money balanceBeforeDeposit = new Money(TestUtils.RUPEE, "0.0");
    final Money fullDepositAmount = new Money(TestUtils.RUPEE, "80.0");
    final Date dateOfDeposit = new DateTime().toDate();
    final SavingsScheduleEntity unpaidSaving1 = new SavingsScheduleBuilder().withInstallmentNumber(1).withAccount(savingsAccount).withCustomer(payingCustomer).withDepositDue(new Money(TestUtils.RUPEE, "10.0")).build();
    final SavingsScheduleEntity unpaidSaving2 = new SavingsScheduleBuilder().withInstallmentNumber(2).withAccount(savingsAccount).withCustomer(payingCustomer).withDepositDue(new Money(TestUtils.RUPEE, "50.0")).build();
    final List<SavingsScheduleEntity> unpaidDepositsForPayingCustomer = Arrays.asList(unpaidSaving1, unpaidSaving2);
    // stubbing
    when(accountPayment.getAmount()).thenReturn(fullDepositAmount);
    when(accountPayment.getPaymentDate()).thenReturn(dateOfDeposit);
    // exercise test
    final Money remainingAmount = paymentStrategy.makeScheduledPayments(accountPayment, unpaidDepositsForPayingCustomer, payingCustomer, SavingsType.MANDATORY, balanceBeforeDeposit);
    // verification
    assertThat(remainingAmount, is(new Money(TestUtils.RUPEE, "20.0")));
}
Also used : SavingsScheduleBuilder(org.mifos.domain.builders.SavingsScheduleBuilder) Money(org.mifos.framework.util.helpers.Money) SavingsScheduleEntity(org.mifos.accounts.savings.business.SavingsScheduleEntity) Date(java.util.Date) DateTime(org.joda.time.DateTime) Test(org.junit.Test)

Example 3 with SavingsScheduleBuilder

use of org.mifos.domain.builders.SavingsScheduleBuilder in project head by mifos.

the class SavingsPaymentStrategyForVoluntarySavingsAccountsTest method whenUnpaidScheduledInstallmentsExistAllAreMarkedAsPaid.

@Test
public void whenUnpaidScheduledInstallmentsExistAllAreMarkedAsPaid() {
    // setup
    final Money balanceBeforeDeposit = new Money(TestUtils.RUPEE, "0.0");
    final Money fullDepositAmount = new Money(TestUtils.RUPEE, "100.0");
    final Date dateOfDeposit = new DateTime().toDate();
    final SavingsScheduleEntity unpaidSaving1 = new SavingsScheduleBuilder().withInstallmentNumber(1).withAccount(savingsAccount).withCustomer(payingCustomer).build();
    final SavingsScheduleEntity unpaidSaving2 = new SavingsScheduleBuilder().withInstallmentNumber(2).withAccount(savingsAccount).withCustomer(payingCustomer).build();
    final List<SavingsScheduleEntity> unpaidDepositsForPayingCustomer = Arrays.asList(unpaidSaving1, unpaidSaving2);
    // stubbing
    when(accountPayment.getAmount()).thenReturn(fullDepositAmount);
    when(accountPayment.getPaymentDate()).thenReturn(dateOfDeposit);
    // exercise test
    paymentStrategy.makeScheduledPayments(accountPayment, unpaidDepositsForPayingCustomer, payingCustomer, SavingsType.VOLUNTARY, balanceBeforeDeposit);
    // verification
    assertThat(unpaidSaving1.isPaid(), is(true));
    assertThat(unpaidSaving2.isPaid(), is(true));
}
Also used : SavingsScheduleBuilder(org.mifos.domain.builders.SavingsScheduleBuilder) Money(org.mifos.framework.util.helpers.Money) SavingsScheduleEntity(org.mifos.accounts.savings.business.SavingsScheduleEntity) Date(java.util.Date) DateTime(org.joda.time.DateTime) Test(org.junit.Test)

Example 4 with SavingsScheduleBuilder

use of org.mifos.domain.builders.SavingsScheduleBuilder in project head by mifos.

the class SavingsPaymentStrategyForVoluntarySavingsAccountsTest method whenUnpaidScheduledInstallmentsExistAnyExcessPaymentOverDepositDueShouldBeReturnedAsRemainingAmount.

@Test
public void whenUnpaidScheduledInstallmentsExistAnyExcessPaymentOverDepositDueShouldBeReturnedAsRemainingAmount() {
    // setup
    final Money balanceBeforeDeposit = new Money(TestUtils.RUPEE, "0.0");
    final Money fullDepositAmount = new Money(TestUtils.RUPEE, "100.0");
    final Money recommendedDepositDue = new Money(TestUtils.RUPEE, "36.0");
    final Date dateOfDeposit = new DateTime().toDate();
    final SavingsScheduleEntity unpaidSaving1 = new SavingsScheduleBuilder().withInstallmentNumber(1).withAccount(savingsAccount).withCustomer(payingCustomer).build();
    final SavingsScheduleEntity unpaidSaving2 = new SavingsScheduleBuilder().withInstallmentNumber(2).withAccount(savingsAccount).withCustomer(payingCustomer).withDepositDue(recommendedDepositDue).build();
    final List<SavingsScheduleEntity> unpaidDepositsForPayingCustomer = Arrays.asList(unpaidSaving1, unpaidSaving2);
    // stubbing
    when(accountPayment.getAmount()).thenReturn(fullDepositAmount);
    when(accountPayment.getPaymentDate()).thenReturn(dateOfDeposit);
    // exercise test
    final Money remainingAmount = paymentStrategy.makeScheduledPayments(accountPayment, unpaidDepositsForPayingCustomer, payingCustomer, SavingsType.VOLUNTARY, balanceBeforeDeposit);
    // verification
    assertThat(remainingAmount, is(fullDepositAmount.subtract(recommendedDepositDue)));
}
Also used : SavingsScheduleBuilder(org.mifos.domain.builders.SavingsScheduleBuilder) Money(org.mifos.framework.util.helpers.Money) SavingsScheduleEntity(org.mifos.accounts.savings.business.SavingsScheduleEntity) Date(java.util.Date) DateTime(org.joda.time.DateTime) Test(org.junit.Test)

Example 5 with SavingsScheduleBuilder

use of org.mifos.domain.builders.SavingsScheduleBuilder in project head by mifos.

the class SavingsPaymentStrategyForVoluntarySavingsAccountsTest method whenUnpaidScheduledInstallmentsExistASavingsTrxnDetailIsCreatedWithLatestBalance.

@Test
public void whenUnpaidScheduledInstallmentsExistASavingsTrxnDetailIsCreatedWithLatestBalance() {
    // setup
    final Money balanceBeforeDeposit = new Money(TestUtils.RUPEE, "0.0");
    final Money fullDepositAmount = new Money(TestUtils.RUPEE, "100.0");
    final Money recommendedDepositDue = new Money(TestUtils.RUPEE, "36.0");
    final Date dateOfDeposit = new DateTime().toDate();
    final SavingsScheduleEntity unpaidSaving1 = new SavingsScheduleBuilder().withInstallmentNumber(1).withAccount(savingsAccount).withCustomer(payingCustomer).build();
    final SavingsScheduleEntity unpaidSaving2 = new SavingsScheduleBuilder().withInstallmentNumber(2).withAccount(savingsAccount).withCustomer(payingCustomer).withDepositDue(recommendedDepositDue).build();
    final List<SavingsScheduleEntity> unpaidDepositsForPayingCustomer = Arrays.asList(unpaidSaving1, unpaidSaving2);
    // stubbing
    when(accountPayment.getAmount()).thenReturn(fullDepositAmount);
    when(accountPayment.getPaymentDate()).thenReturn(dateOfDeposit);
    // exercise test
    paymentStrategy.makeScheduledPayments(accountPayment, unpaidDepositsForPayingCustomer, payingCustomer, SavingsType.VOLUNTARY, balanceBeforeDeposit);
    // verification
    verify(savingsTransactionActivityHelper, times(1)).createSavingsTrxnForDeposit(accountPayment, recommendedDepositDue, payingCustomer, unpaidSaving2, balanceBeforeDeposit.add(recommendedDepositDue));
}
Also used : SavingsScheduleBuilder(org.mifos.domain.builders.SavingsScheduleBuilder) Money(org.mifos.framework.util.helpers.Money) SavingsScheduleEntity(org.mifos.accounts.savings.business.SavingsScheduleEntity) Date(java.util.Date) DateTime(org.joda.time.DateTime) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)20 SavingsScheduleBuilder (org.mifos.domain.builders.SavingsScheduleBuilder)20 Money (org.mifos.framework.util.helpers.Money)19 Date (java.util.Date)18 DateTime (org.joda.time.DateTime)18 SavingsScheduleEntity (org.mifos.accounts.savings.business.SavingsScheduleEntity)18 LocalDate (org.joda.time.LocalDate)4 Ignore (org.junit.Ignore)4 SavingsOfferingBO (org.mifos.accounts.productdefinition.business.SavingsOfferingBO)3 SavingsProductBuilder (org.mifos.domain.builders.SavingsProductBuilder)3 AccountStateEntity (org.mifos.accounts.business.AccountStateEntity)2