package org.mifos.test.acceptance.admin; import java.util.logging.Logger; import org.joda.time.DateTime; import org.mifos.test.acceptance.framework.MifosPage; import org.mifos.test.acceptance.framework.UiTestCaseBase; import org.mifos.test.acceptance.framework.admin.ImportSavingsReviewPage; import org.mifos.test.acceptance.framework.admin.ImportSavingsSaveSummaryPage; import org.mifos.test.acceptance.framework.admin.ManageRolePage; import org.mifos.test.acceptance.framework.savingsproduct.SavingsProductParameters; import org.mifos.test.acceptance.framework.testhelpers.AdminTestHelper; import org.mifos.test.acceptance.framework.testhelpers.NavigationHelper; import org.mifos.test.acceptance.framework.testhelpers.SavingsProductHelper; import org.mifos.test.acceptance.remote.DateTimeUpdaterRemoteTestingService; import org.springframework.test.context.ContextConfiguration; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @ContextConfiguration(locations = {"classpath:ui-test-context.xml"}) @SuppressWarnings("PMD.SignatureDeclareThrowsException") @Test(singleThreaded = true, groups = { "client", "acceptance", "import" }) public class SavingsImportTest extends UiTestCaseBase { private SavingsProductHelper savingsProductHelper; private AdminTestHelper adminTestHelper; private NavigationHelper navigationHelper; String[] arrayOfErrors; DateTime targetTime; @Override @BeforeMethod public void setUp() throws Exception { super.setUp(); savingsProductHelper = new SavingsProductHelper(selenium); adminTestHelper = new AdminTestHelper(selenium); navigationHelper = new NavigationHelper(selenium); targetTime=new DateTime(2012, 9, 18, 12, 0, 0, 0); //changing date so dates in xls spreadsheet will be appropriate DateTimeUpdaterRemoteTestingService dtUpdate=new DateTimeUpdaterRemoteTestingService(selenium); dtUpdate.setDateTime(targetTime); } @AfterMethod public void logOut() { (new MifosPage(selenium)).logout(); new DateTimeUpdaterRemoteTestingService(selenium).resetDateTime(); } @Test(enabled = true) public void importSavingAccountsToClientTest() { ManageRolePage manageRolePage = navigationHelper.navigateToAdminPage().navigateToViewRolesPage().navigateToManageRolePage("Admin"); try { manageRolePage.enablePermission("8_8"); } catch (AssertionError ex) { Logger.getAnonymousLogger().info("Permission is marked."); } manageRolePage.submitAndGotoViewRolesPage(); String succesNumber = "1"; String errorNumber = "5"; arrayOfErrors = buildArrayOfErrorsForImportSavingsTest(); String importFile = this.getClass().getResource("/ImportSavingsAccountsTest.xls").toString(); SavingsProductParameters parameters = savingsProductHelper.getGenericSavingsProductParameters(targetTime, SavingsProductParameters.VOLUNTARY, SavingsProductParameters.CLIENTS); parameters.setProductInstanceName("importSavings"); parameters.setShortName("IMP"); try { savingsProductHelper.createSavingsProduct(parameters); } catch (AssertionError e) { Logger.getAnonymousLogger().info("Product exists"); } ImportSavingsReviewPage reviewPage = adminTestHelper.loadImportSavingsFileAndSubmitForReview(importFile); reviewPage.validateErrors(arrayOfErrors); reviewPage.validateSuccesText(succesNumber); ImportSavingsSaveSummaryPage summaryPage = reviewPage.saveSuccessfullRows(); summaryPage.verifySuccesString(succesNumber); summaryPage.verifyErrorString(errorNumber); } private String[] buildArrayOfErrorsForImportSavingsTest() { String[] arrayString = { "Error in row 3, Column 2: Customer with global id 2 not found", "Error in row 4, Column 3: Missing product name", "Error in row 5, Column 3: Active and applicable product with name WrongProductName not found", "Error in row 6, Column 4: Missing account status name", "Error in row 7, Column 4: Saving status is incorrect" }; return arrayString; } }