package org.mifos.test.acceptance.loanproduct;
import org.mifos.test.acceptance.framework.MifosPage;
import org.mifos.test.acceptance.framework.UiTestCaseBase;
import org.mifos.test.acceptance.framework.admin.AdminPage;
import org.mifos.test.acceptance.framework.loanproduct.DefineNewLoanProductPage;
import org.mifos.test.acceptance.framework.loanproduct.DefineNewLoanProductPage.SubmitFormParameters;
import org.mifos.test.acceptance.framework.loanproduct.DefineNewLoanProductPreviewPage;
import org.mifos.test.acceptance.framework.testhelpers.CustomPropertiesHelper;
import org.mifos.test.acceptance.framework.testhelpers.FormParametersHelper;
import org.mifos.test.acceptance.framework.testhelpers.NavigationHelper;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.util.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@ContextConfiguration(locations = {"classpath:ui-test-context.xml"})
@Test(singleThreaded = true, groups = {"loanproduct", "acceptance", "no_db_unit"})
public class BackDateLoanProductTest extends UiTestCaseBase {
private CustomPropertiesHelper propertiesHelper;
@SuppressWarnings("PMD.SignatureDeclareThrowsException")
@BeforeMethod
@Override
public void setUp() throws Exception {
super.setUp();
propertiesHelper = new CustomPropertiesHelper(selenium);
}
private DefineNewLoanProductPage preparePageForTest() {
NavigationHelper navigationHelper = new NavigationHelper(selenium);
AdminPage adminPage = navigationHelper.navigateToAdminPage();
DefineNewLoanProductPage newLoanProductPage = adminPage.navigateToDefineLoanProduct();
SubmitFormParameters parameters =
FormParametersHelper.getMonthlyLoanProductParameters();
return newLoanProductPage.fillLoanParameters(parameters);
}
@Test(enabled=true)
public void cannotCreateLoanProductInPastWhenBackDatingIsDisabled() {
propertiesHelper.setBackDatedLoanProductCreationAllowed(false);
DefineNewLoanProductPage newLoanProductPage = preparePageForTest();
newLoanProductPage.fillStartDate("1111", "11", "11");
newLoanProductPage = newLoanProductPage.submitWithErrors();
Assert.isTrue(newLoanProductPage.getSelenium().isTextPresent(
"The Start date can be anything between current date and 1 year" +
" from the current date."));
}
@Test(enabled=true)
public void canCreateLoanProductInPastWhenBackDatingIsEnabled() {
propertiesHelper.setBackDatedLoanProductCreationAllowed(true);
DefineNewLoanProductPage newLoanProductPage = preparePageForTest();
newLoanProductPage.fillStartDate("1111", "11", "11");
DefineNewLoanProductPreviewPage previewPage = newLoanProductPage
.submitAndGotoNewLoanProductPreviewPage();
previewPage.submit();
}
@Test(enabled=true)
public void cannotCreateLoanProductMoreThanOneYearInFutureWhenBackDatingIsEnabled() {
propertiesHelper.setBackDatedLoanProductCreationAllowed(true);
DefineNewLoanProductPage newLoanProductPage = preparePageForTest();
newLoanProductPage.fillStartDate("9999", "11", "11");
newLoanProductPage = newLoanProductPage.submitWithErrors();
Assert.isTrue(newLoanProductPage.getSelenium().isTextPresent(
"The Start date can be anything up to 1 year" +
" from the current date."));
}
@AfterMethod
public void logOut() {
(new MifosPage(selenium)).logout();
}
}