package org.mifos.test.acceptance.util; import java.sql.SQLException; import org.joda.time.ReadableInstant; import org.joda.time.format.DateTimeFormat; import org.mifos.test.acceptance.framework.admin.AdminPage; import org.mifos.test.acceptance.framework.admin.FeesCreatePage; import org.mifos.test.acceptance.framework.center.MeetingParameters; import org.mifos.test.acceptance.framework.client.ClientStatus; import org.mifos.test.acceptance.framework.client.CreateClientEnterMfiDataPage; import org.mifos.test.acceptance.framework.client.CreateClientEnterPersonalDataPage; import org.mifos.test.acceptance.framework.group.EditCustomerStatusParameters; import org.mifos.test.acceptance.framework.holiday.CreateHolidayEntryPage; import org.mifos.test.acceptance.framework.office.OfficeParameters; import org.mifos.test.acceptance.framework.testhelpers.NavigationHelper; import org.mifos.test.acceptance.framework.testhelpers.OfficeHelper; import org.mifos.test.acceptance.framework.testhelpers.UserHelper; import org.mifos.test.acceptance.framework.user.CreateUserParameters; import com.thoughtworks.selenium.Selenium; public class TestDataSetup { private final ApplicationDatabaseOperation applicationDatabaseOperation; private final Selenium selenium; public TestDataSetup(Selenium selenium, ApplicationDatabaseOperation applicationDatabaseOperation) { this.selenium = selenium; this.applicationDatabaseOperation = applicationDatabaseOperation; } public void createBranch(int officeType, String officeName, String shortName) throws SQLException { if (applicationDatabaseOperation.doesBranchOfficeExist(officeName,officeType, shortName)) { return; } OfficeHelper officeHelper = new OfficeHelper(selenium); OfficeParameters officeParameters = new OfficeParameters(); officeParameters.setOfficeType(officeType); officeParameters.setOfficeName(officeName); officeParameters.setShortName(shortName); officeParameters.setParentOffice("Head Office(Mifos HO )"); officeHelper.createOffice(officeParameters); } public void createUser(String userLoginName, String userName, String officeName) throws SQLException { String firstName = userName.split(" ")[0]; String lastName = userName.split(" ")[1]; if (applicationDatabaseOperation.doesSystemUserExist(userLoginName,userName,officeName)) { return; } CreateUserParameters userParameters = new AdminPage(selenium).getAdminUserParameters(); userParameters.setUserName(userLoginName); userParameters.setFirstName(firstName); userParameters.setLastName(lastName); new UserHelper(selenium).createUser(userParameters, officeName); } public void createClient(String clientName, String officeName, String loanOfficerName) throws SQLException { CreateClientEnterPersonalDataPage.SubmitFormParameters clientPersonalInfoParameters = defineClient(clientName); if (applicationDatabaseOperation.doesClientExist(clientName, officeName)) { return; } new NavigationHelper(selenium).navigateToHomePage(). navigateToClientsAndAccountsUsingHeaderTab(). navigateToCreateNewClientPage(). navigateToCreateClientWithoutGroupPage(). chooseOffice(officeName). create(clientPersonalInfoParameters). submitAndGotoCreateClientEnterMfiDataPage(). submitAndGotoCreateClientPreviewDataPage(defineMfiData(loanOfficerName)). submit().navigateToClientViewDetailsPage(). navigateToCustomerChangeStatusPage(). setChangeStatusParametersAndSubmit(setApprovalStatus()). submitAndGotoClientViewDetailsPage(). navigateToEditMeetingSchedule(). editClientMeeting(setMeetingScheduleParameters()); } public void createFee(FeesCreatePage.SubmitFormParameters feeParameters) throws SQLException { if (applicationDatabaseOperation.doesFeeExist(feeParameters.getFeeName())) { return; } new NavigationHelper(selenium). navigateToAdminPage(). navigateToFeesCreate(). fillFeesParameters(feeParameters). submitPageAndGotoPreviewFeesCreatePage(). submit(); } private EditCustomerStatusParameters setApprovalStatus() { EditCustomerStatusParameters parameters = new EditCustomerStatusParameters(); parameters.setClientStatus(ClientStatus.ACTIVE); parameters.setNote("For Test"); return parameters; } private CreateClientEnterMfiDataPage.SubmitFormParameters defineMfiData(String userName) { CreateClientEnterMfiDataPage.SubmitFormParameters mfiDataParameters = new CreateClientEnterMfiDataPage.SubmitFormParameters(); mfiDataParameters.setMeeting(setMeetingScheduleParameters()); mfiDataParameters.setLoanOfficerId(userName); return mfiDataParameters; } private MeetingParameters setMeetingScheduleParameters() { MeetingParameters meetingParameters = new MeetingParameters(); meetingParameters.setMeetingPlace("test_location"); meetingParameters.setWeekFrequency("1"); meetingParameters.setWeekDay(MeetingParameters.WeekDay.TUESDAY); return meetingParameters; } private CreateClientEnterPersonalDataPage.SubmitFormParameters defineClient(String clientName) { CreateClientEnterPersonalDataPage.SubmitFormParameters clientPersonalInfoParameters = new CreateClientEnterPersonalDataPage.SubmitFormParameters(); clientPersonalInfoParameters.setSalutation(CreateClientEnterPersonalDataPage.SubmitFormParameters.MRS); clientPersonalInfoParameters.setFirstName(clientName.split(" ")[0]); clientPersonalInfoParameters.setLastName(clientName.split(" ")[1]); clientPersonalInfoParameters.setDateOfBirthDD("22"); clientPersonalInfoParameters.setDateOfBirthMM("05"); clientPersonalInfoParameters.setDateOfBirthYYYY("1987"); clientPersonalInfoParameters.setGender(CreateClientEnterPersonalDataPage.SubmitFormParameters.FEMALE); clientPersonalInfoParameters.setPovertyStatus(CreateClientEnterPersonalDataPage.SubmitFormParameters.POOR); clientPersonalInfoParameters.setSpouseNameType(CreateClientEnterPersonalDataPage.SubmitFormParameters.FATHER); clientPersonalInfoParameters.setSpouseFirstName("father"); clientPersonalInfoParameters.setSpouseLastName("lastname" + StringUtil.getRandomString(8)); return clientPersonalInfoParameters; } public void addDecliningPrincipalBalance() throws SQLException { if (!applicationDatabaseOperation.doesDecliningPrincipalBalanceExist()) { applicationDatabaseOperation.insertDecliningPrincipalBalanceInterestType(); } //To change body of created methods use File | Settings | File Templates. } @SuppressWarnings("PMD.AvoidReassigningParameters") // one of the dependent methods throws Exception public void createHoliday(ReadableInstant fromDate, ReadableInstant toDate, String repaymentRule) throws SQLException { if (toDate == null) { toDate = fromDate; } String ddFrom = DateTimeFormat.forPattern("dd").print(fromDate); String mmFrom = DateTimeFormat.forPattern("MM").print(fromDate); String yyyyFrom = DateTimeFormat.forPattern("yyyy").print(fromDate); String ddTo = DateTimeFormat.forPattern("dd").print(toDate); String mmTo = DateTimeFormat.forPattern("MM").print(toDate); String yyyyTo = DateTimeFormat.forPattern("yyyy").print(toDate); CreateHolidayEntryPage.CreateHolidaySubmitParameters holidayParameters = new CreateHolidayEntryPage.CreateHolidaySubmitParameters(); holidayParameters.setName(ddFrom + mmFrom + yyyyFrom + ddTo + mmTo + yyyyTo); holidayParameters.setFromDateDD(ddFrom); holidayParameters.setFromDateMM(mmFrom); holidayParameters.setFromDateYYYY(yyyyFrom); holidayParameters.setThruDateDD(ddTo); holidayParameters.setThruDateMM(mmTo); holidayParameters.setThruDateYYYY(yyyyTo); holidayParameters.setRepaymentRule(repaymentRule); holidayParameters.setSelectedOfficeIds("1"); if (applicationDatabaseOperation.doesHolidayExist(holidayParameters.getName())) { return; } new NavigationHelper(selenium). navigateToAdminPage(). navigateToDefineHolidayPage(). submitAndNavigateToHolidayConfirmationPage(holidayParameters).submitAndNavigateToViewHolidaysPage(); } }