Search in sources :

Example 6 with SavingsProductBuilder

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

the class SavingsWithdrawalTest method accountIsAlwaysSetToActiveWhenAWithdrawalIsMade.

@Test
public void accountIsAlwaysSetToActiveWhenAWithdrawalIsMade() throws AccountException {
    // setup
    savingsProduct = new SavingsProductBuilder().withMaxWithdrawalAmount(new Money(TestUtils.RUPEE, "50.0")).buildForUnitTests();
    savingsAccount = savingsAccountBuilder.withSavingsProduct(savingsProduct).withBalanceOf(new Money(TestUtils.RUPEE, "80.0")).buildForUnitTests();
    final Money amountToWithdraw = new Money(TestUtils.RUPEE, "25.0");
    // stubbing
    when(accountPayment.getAmount()).thenReturn(amountToWithdraw);
    // exercise test
    savingsAccount.withdraw(accountPayment, payingCustomer);
    // verification
    assertThat(savingsAccount.getAccountState().getId(), is(AccountState.SAVINGS_ACTIVE.getValue()));
}
Also used : Money(org.mifos.framework.util.helpers.Money) SavingsProductBuilder(org.mifos.domain.builders.SavingsProductBuilder) Test(org.junit.Test)

Example 7 with SavingsProductBuilder

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

the class SavingsWithdrawalTest method throwsAccountExceptionWhenWithdrawalAmountExceedsMaxWithdrawalAllowedBySavingsProduct.

@Test(expected = AccountException.class)
public void throwsAccountExceptionWhenWithdrawalAmountExceedsMaxWithdrawalAllowedBySavingsProduct() throws AccountException {
    // setup
    savingsProduct = new SavingsProductBuilder().withMaxWithdrawalAmount(new Money(TestUtils.RUPEE, "50.0")).buildForUnitTests();
    savingsAccount = savingsAccountBuilder.withSavingsProduct(savingsProduct).withBalanceOf(new Money(TestUtils.RUPEE, "80.0")).buildForUnitTests();
    final Money amountToWithdraw = new Money(TestUtils.RUPEE, "75.0");
    // stubbing
    when(accountPayment.getAmount()).thenReturn(amountToWithdraw);
    // exercise test
    savingsAccount.withdraw(accountPayment, payingCustomer);
}
Also used : Money(org.mifos.framework.util.helpers.Money) SavingsProductBuilder(org.mifos.domain.builders.SavingsProductBuilder) Test(org.junit.Test)

Example 8 with SavingsProductBuilder

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

the class SavingsWithdrawalTest method savingsPerformanceWithdrawalsIsIncrementedByTotalAmountWithdrawn.

@Test
public void savingsPerformanceWithdrawalsIsIncrementedByTotalAmountWithdrawn() throws AccountException {
    // setup
    final Money startingBalance = new Money(TestUtils.RUPEE, "80.0");
    savingsProduct = new SavingsProductBuilder().withMaxWithdrawalAmount(new Money(TestUtils.RUPEE, "50.0")).buildForUnitTests();
    savingsAccount = savingsAccountBuilder.withSavingsProduct(savingsProduct).withBalanceOf(startingBalance).buildForUnitTests();
    final Money amountToWithdraw = new Money(TestUtils.RUPEE, "25.0");
    // stubbing
    when(accountPayment.getAmount()).thenReturn(amountToWithdraw);
    // exercise test
    savingsAccount.withdraw(accountPayment, payingCustomer);
    // verification
    assertThat(savingsAccount.getSavingsPerformance().getTotalWithdrawals(), is(amountToWithdraw));
}
Also used : Money(org.mifos.framework.util.helpers.Money) SavingsProductBuilder(org.mifos.domain.builders.SavingsProductBuilder) Test(org.junit.Test)

Example 9 with SavingsProductBuilder

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

the class SavingsAccountSchedulesIntegrationTest method shouldGenerateSavingsAccountSchedulesForGroupOnlyWhenUsingCompleteGroupSetting.

@Test
public void shouldGenerateSavingsAccountSchedulesForGroupOnlyWhenUsingCompleteGroupSetting() throws Exception {
    createCenterGroupClientHierarchy(aWeeklyMeeting);
    SavingsOfferingBO savingsProduct = new SavingsProductBuilder().mandatory().withMandatoryAmount("33.0").appliesToGroupsOnly().trackedOnCompleteGroup().buildForIntegrationTests();
    SavingsBO savingsAccount = new SavingsAccountBuilder().active().withActivationDate(mondayTwoWeeksAgo()).withSavingsProduct(savingsProduct).withCustomer(group).withCreatedBy(IntegrationTestObjectMother.testUser()).build();
    IntegrationTestObjectMother.saveSavingsProductAndAssociatedSavingsAccounts(savingsProduct, savingsAccount);
    List<AccountActionDateEntity> savingSchedules = savingsAccount.getAccountActionDatesSortedByInstallmentId();
    for (AccountActionDateEntity savingSchedule : savingSchedules) {
        assertThat("saving schedule should be generated for group only and not any of its clients", savingSchedule.getCustomer().getCustomerId(), is(group.getCustomerId()));
    }
}
Also used : AccountActionDateEntity(org.mifos.accounts.business.AccountActionDateEntity) SavingsProductBuilder(org.mifos.domain.builders.SavingsProductBuilder) SavingsOfferingBO(org.mifos.accounts.productdefinition.business.SavingsOfferingBO) SavingsBO(org.mifos.accounts.savings.business.SavingsBO) SavingsAccountBuilder(org.mifos.domain.builders.SavingsAccountBuilder) Test(org.junit.Test)

Example 10 with SavingsProductBuilder

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

the class SavingsAccountSchedulesIntegrationTest method shouldGenerateSavingsAccountSchedulesForClient.

@Test
public void shouldGenerateSavingsAccountSchedulesForClient() throws Exception {
    createCenterGroupClientHierarchy(aWeeklyMeeting);
    SavingsOfferingBO savingsProduct = new SavingsProductBuilder().mandatory().withMandatoryAmount("33.0").appliesToClientsOnly().buildForIntegrationTests();
    SavingsBO savingsAccount = new SavingsAccountBuilder().active().withActivationDate(mondayTwoWeeksAgo()).withSavingsProduct(savingsProduct).withCustomer(client).withCreatedBy(IntegrationTestObjectMother.testUser()).build();
    IntegrationTestObjectMother.saveSavingsProductAndAssociatedSavingsAccounts(savingsProduct, savingsAccount);
    List<AccountActionDateEntity> savingSchedules = savingsAccount.getAccountActionDatesSortedByInstallmentId();
    for (AccountActionDateEntity savingSchedule : savingSchedules) {
        assertThat("saving schedule should be generated for individual client savings account", savingSchedule.getCustomer().getCustomerId(), is(client.getCustomerId()));
    }
}
Also used : AccountActionDateEntity(org.mifos.accounts.business.AccountActionDateEntity) SavingsProductBuilder(org.mifos.domain.builders.SavingsProductBuilder) SavingsOfferingBO(org.mifos.accounts.productdefinition.business.SavingsOfferingBO) SavingsBO(org.mifos.accounts.savings.business.SavingsBO) SavingsAccountBuilder(org.mifos.domain.builders.SavingsAccountBuilder) Test(org.junit.Test)

Aggregations

SavingsProductBuilder (org.mifos.domain.builders.SavingsProductBuilder)32 Test (org.junit.Test)26 SavingsAccountBuilder (org.mifos.domain.builders.SavingsAccountBuilder)19 SavingsOfferingBO (org.mifos.accounts.productdefinition.business.SavingsOfferingBO)14 Money (org.mifos.framework.util.helpers.Money)14 SavingsBO (org.mifos.accounts.savings.business.SavingsBO)9 LocalDate (org.joda.time.LocalDate)6 AccountActionDateEntity (org.mifos.accounts.business.AccountActionDateEntity)6 DateTime (org.joda.time.DateTime)5 Before (org.junit.Before)4 CollectionSheetCustomerSavingDto (org.mifos.application.servicefacade.CollectionSheetCustomerSavingDto)4 ClientBuilder (org.mifos.domain.builders.ClientBuilder)4 Date (java.util.Date)3 Ignore (org.junit.Ignore)3 SavingsScheduleEntity (org.mifos.accounts.savings.business.SavingsScheduleEntity)3 MeetingBuilder (org.mifos.domain.builders.MeetingBuilder)3 SavingsScheduleBuilder (org.mifos.domain.builders.SavingsScheduleBuilder)3 MeetingBO (org.mifos.application.meeting.business.MeetingBO)2 RecommendedAmntUnitEntity (org.mifos.accounts.productdefinition.business.RecommendedAmntUnitEntity)1 Holiday (org.mifos.application.holiday.business.Holiday)1