/* * Copyright (c) 2005-2011 Grameen Foundation USA * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing * permissions and limitations under the License. * * See also http://www.apache.org/licenses/LICENSE-2.0.html for an * explanation of the license and how it is applied. */ package org.mifos.test.acceptance.framework.testhelpers; import com.thoughtworks.selenium.Selenium; import org.mifos.test.acceptance.framework.ClientsAndAccountsHomepage; import org.mifos.test.acceptance.framework.center.MeetingParameters; import org.mifos.test.acceptance.framework.client.ChooseOfficePage; import org.mifos.test.acceptance.framework.client.ClientCloseReason; import org.mifos.test.acceptance.framework.client.ClientStatus; import org.mifos.test.acceptance.framework.client.ClientViewChangeLogPage; import org.mifos.test.acceptance.framework.client.ClientViewDetailsPage; import org.mifos.test.acceptance.framework.client.CreateClientConfirmationPage; import org.mifos.test.acceptance.framework.client.CreateClientEnterFamilyDetailsPage; import org.mifos.test.acceptance.framework.client.CreateClientEnterMfiDataPage; import org.mifos.test.acceptance.framework.client.CreateClientEnterPersonalDataPage; import org.mifos.test.acceptance.framework.client.CreateClientPreviewDataPage; import org.mifos.test.acceptance.framework.client.GroupSearchAddClientPage; import org.mifos.test.acceptance.framework.customer.CustomerChangeStatusPage; import org.mifos.test.acceptance.framework.customer.CustomerChangeStatusPreviewPage; import org.mifos.test.acceptance.framework.group.EditCustomerStatusParameters; import org.mifos.test.acceptance.framework.group.GroupSearchPage; import org.mifos.test.acceptance.framework.group.GroupViewDetailsPage; import org.mifos.test.acceptance.framework.loan.ChargeParameters; import org.mifos.test.acceptance.framework.loan.QuestionResponseParameters; import org.mifos.test.acceptance.framework.questionnaire.QuestionResponsePage; import org.mifos.test.acceptance.framework.questionnaire.QuestionnairePage; import org.mifos.test.acceptance.framework.questionnaire.ViewQuestionResponseDetailPage; import org.mifos.test.acceptance.util.StringUtil; import java.util.Map; public class ClientTestHelper { private final NavigationHelper navigationHelper; private final Selenium selenium; public static final String ACTIVE = "Active"; public static final String PENDING_APPROVAL = "Application Pending Approval"; public static final String PARTIAL_APPLICATION = "Partial Application"; public ClientTestHelper(Selenium selenium) { this.navigationHelper = new NavigationHelper(selenium); this.selenium = selenium; } public ClientViewDetailsPage changeCustomerStatus(ClientViewDetailsPage clientDetailsPage) { CustomerChangeStatusPage statusChangePage = clientDetailsPage.navigateToCustomerChangeStatusPage(); EditCustomerStatusParameters editCustomerStatusParameters = new EditCustomerStatusParameters(); editCustomerStatusParameters.setClientStatus(ClientStatus.PARTIAL); editCustomerStatusParameters.setNote("Status change"); CustomerChangeStatusPreviewPage statusPreviewPage = statusChangePage.setChangeStatusParametersAndSubmit(editCustomerStatusParameters); ClientViewDetailsPage clientDetailsPage2 = statusPreviewPage.submitAndGotoClientViewDetailsPage(); clientDetailsPage2.verifyStatus(PARTIAL_APPLICATION); clientDetailsPage2.verifyNotes(editCustomerStatusParameters.getNote()); CustomerChangeStatusPage statusChangePage2 = clientDetailsPage2.navigateToCustomerChangeStatusPage(); editCustomerStatusParameters.setClientStatus(ClientStatus.PENDING_APPROVAL); editCustomerStatusParameters.setNote("notes"); CustomerChangeStatusPreviewPage statusPreviewPage2 = statusChangePage2.setChangeStatusParametersAndSubmit(editCustomerStatusParameters); ClientViewDetailsPage clientDetailsPage3 = statusPreviewPage2.submitAndGotoClientViewDetailsPage(); clientDetailsPage3.verifyNotes(editCustomerStatusParameters.getNote()); clientDetailsPage2.verifyStatus(PENDING_APPROVAL); CustomerChangeStatusPage statusChangePage3 = clientDetailsPage3.navigateToCustomerChangeStatusPage(); editCustomerStatusParameters.setClientStatus(ClientStatus.ACTIVE); editCustomerStatusParameters.setNote("notes"); CustomerChangeStatusPreviewPage statusPreviewPage3 = statusChangePage3.setChangeStatusParametersAndSubmit(editCustomerStatusParameters); ClientViewDetailsPage clientDetailsPage4 = statusPreviewPage3.submitAndGotoClientViewDetailsPage(); clientDetailsPage4.verifyNotes(editCustomerStatusParameters.getNote()); clientDetailsPage3.verifyStatus(ACTIVE); CustomerChangeStatusPage statusChangePage4 = clientDetailsPage4.navigateToCustomerChangeStatusPage(); ClientViewDetailsPage clientDetailsPage5 = statusChangePage4.cancelAndGotoClientViewDetailsPage(); clientDetailsPage5.verifyNotes(editCustomerStatusParameters.getNote()); return clientDetailsPage5; } public ClientViewDetailsPage changeCustomerStatus(ClientViewDetailsPage clientDetailsPage, ClientStatus targetStatus) { CustomerChangeStatusPage statusChangePage = clientDetailsPage.navigateToCustomerChangeStatusPage(); EditCustomerStatusParameters editCustomerStatusParameters = new EditCustomerStatusParameters(); editCustomerStatusParameters.setClientStatus(targetStatus); editCustomerStatusParameters.setNote("Status change"); CustomerChangeStatusPreviewPage statusPreviewPage = statusChangePage.setChangeStatusParametersAndSubmit(editCustomerStatusParameters); ClientViewDetailsPage newClientDetailsPage = statusPreviewPage.submitAndGotoClientViewDetailsPage(); newClientDetailsPage.verifyStatus(targetStatus.getStatusText()); newClientDetailsPage.verifyNotes(editCustomerStatusParameters.getNote()); return newClientDetailsPage; } public ClientViewDetailsPage changeCustomerStatus(String clientName, EditCustomerStatusParameters editCustomerStatusParameters) { ClientViewDetailsPage clientDetailsPage = navigationHelper.navigateToClientViewDetailsPage(clientName); CustomerChangeStatusPage statusChangePage = clientDetailsPage.navigateToCustomerChangeStatusPage(); CustomerChangeStatusPreviewPage statusPreviewPage = statusChangePage.setChangeStatusParametersAndSubmit(editCustomerStatusParameters); ClientViewDetailsPage newClientDetailsPage = statusPreviewPage.submitAndGotoClientViewDetailsPage(); newClientDetailsPage.verifyStatus(editCustomerStatusParameters.getClientStatus().getStatusText()); newClientDetailsPage.verifyNotes(editCustomerStatusParameters.getNote()); return newClientDetailsPage; } public ClientViewDetailsPage activateClient(String clientName) { EditCustomerStatusParameters editCustomerStatusParameters = new EditCustomerStatusParameters(); editCustomerStatusParameters.setClientStatus(ClientStatus.ACTIVE); editCustomerStatusParameters.setNote("Activate Client"); return changeCustomerStatus(clientName, editCustomerStatusParameters); } public QuestionResponsePage navigateToQuestionResponsePageWhenCloseClientAccount(String clientName) { EditCustomerStatusParameters editCustomerStatusParameters = new EditCustomerStatusParameters(); editCustomerStatusParameters.setClientStatus(ClientStatus.CLOSED); editCustomerStatusParameters.setClientCloseReason(ClientCloseReason.LEFT_PROGRAM); editCustomerStatusParameters.setNote("Close client account"); ClientViewDetailsPage clientDetailsPage = navigationHelper.navigateToClientViewDetailsPage(clientName); CustomerChangeStatusPage statusChangePage = clientDetailsPage.navigateToCustomerChangeStatusPage(); return statusChangePage.changeStatusAndNavigateToQuestionResponsePage(editCustomerStatusParameters); } public ClientViewDetailsPage closeClientWithQG(String clientName, QuestionResponseParameters responseParamsAfterModyfication){ EditCustomerStatusParameters editCustomerStatusParameters = new EditCustomerStatusParameters(); editCustomerStatusParameters.setClientStatus(ClientStatus.CLOSED); editCustomerStatusParameters.setClientCloseReason(ClientCloseReason.LEFT_PROGRAM); editCustomerStatusParameters.setNote("Close client account"); ClientViewDetailsPage clientDetailsPage = navigationHelper.navigateToClientViewDetailsPage(clientName); CustomerChangeStatusPage statusChangePage = clientDetailsPage.navigateToCustomerChangeStatusPage(); QuestionResponsePage questionResponsePage = statusChangePage.changeStatusAndNavigateToQuestionResponsePage(editCustomerStatusParameters); questionResponsePage.populateAnswers(responseParamsAfterModyfication); questionResponsePage.navigateToNextPage(); new CustomerChangeStatusPreviewPage(selenium).submitAndGotoClientViewDetailsPage(); return new ClientViewDetailsPage(selenium); } public ClientViewDetailsPage createClientWithQuestionGroups(CreateClientEnterPersonalDataPage.SubmitFormParameters parameters, String group, QuestionResponseParameters responseParams) { QuestionResponsePage questionResponsePage = navigateToQuestionResponsePage(parameters, group); questionResponsePage.populateAnswers(responseParams); CreateClientEnterMfiDataPage createClientEnterMfiDataPage = questionResponsePage.navigateToNextPageClientCreation(); CreateClientPreviewDataPage clientPreviewDataPage = createClientEnterMfiDataPage.navigateToPreview(); clientPreviewDataPage.submit(); return navigateToClientViewDetails(parameters); } public QuestionResponsePage navigateToQuestionResponsePage(CreateClientEnterPersonalDataPage.SubmitFormParameters parameters, String group) { return navigationHelper .navigateToClientsAndAccountsPage() .navigateToCreateNewClientPage() .selectGroup(group) .create(parameters) .submitAndGotoCaptureQuestionResponsePage(); } private GroupSearchAddClientPage navigateToGroupSearchAddClientResult(String clientName, String groupName) { return navigationHelper.navigateToClientViewDetailsPage(clientName) .navigateToEditMeetingSchedule() .addGroupMembership() .searchGroup(groupName); } public void tryAddClientToClosedOrOnHoldGroup(String clientName, String groupName) { navigateToGroupSearchAddClientResult(clientName, groupName) .verifyNoResult(); } public void addClientToGroupWithErrorGroupLowerStatus(String clientName, String groupName) { navigateToGroupSearchAddClientResult(clientName, groupName) .selectGroupToAdd(groupName) .submitAddGroupWithErrorGroupLowerStatus(); } public void transferClientToGroupWithErrors(String clientName, String groupName) { navigationHelper .navigateToClientViewDetailsPage(clientName) .navigateToEditRemoveGroupMembership() .searchGroup(groupName) .selectGroupToAdd(groupName) .submitAddGroupWithError(); } public void addClientToGroup(String clientName, String groupName) { ClientViewDetailsPage clientViewDetailsPage = navigateToGroupSearchAddClientResult(clientName, groupName) .selectGroupToAdd(groupName) .submitAddGroup(); clientViewDetailsPage.verifyGroupMembership(groupName); String clientMeetingschedule = clientViewDetailsPage.getMeetingSchedule(); navigationHelper.navigateToGroupViewDetailsPage(groupName).verifyMeetingSchedule(clientMeetingschedule); } public void deleteClientGroupMembership(String clientName, String note) { ClientViewDetailsPage clientViewDetailsPage = navigationHelper.navigateToClientViewDetailsPage(clientName); String oldMeetingshedule = clientViewDetailsPage.getMeetingSchedule(); String groupName = clientViewDetailsPage.getGroupMembership(); GroupViewDetailsPage groupViewDetailsPage = navigationHelper.navigateToGroupViewDetailsPage(groupName); Integer activeClients = Integer.parseInt(groupViewDetailsPage.getNumberOfClientsInGroup()); String avgIndyvidualLoanSize = groupViewDetailsPage.getAvgIndyvidualLoanSize(); String totalLoanPortfolio = groupViewDetailsPage.getTotalLoanPortfolio(); clientViewDetailsPage = navigationHelper.navigateToClientViewDetailsPage(clientName); clientViewDetailsPage = clientViewDetailsPage.navigateToEditRemoveGroupMembership() .deleteGroupMembership() .confirmDeleteGroupMembership(note); clientViewDetailsPage.verifyMeetingSchedule(oldMeetingshedule); clientViewDetailsPage.verifyNotes(note); ClientViewChangeLogPage changeLogPage = clientViewDetailsPage.navigateToClientViewChangeLog(); if ("groupFlag".equals(changeLogPage.getLastEntryFieldName())) { changeLogPage.verifyLastEntryOnChangeLog("groupFlag", "1", "0", "mifos"); changeLogPage.verifyEntryOnChangeLog(2, "Group Name", groupName, "-", "mifos"); } else { changeLogPage.verifyLastEntryOnChangeLog("Group Name", groupName, "-", "mifos"); changeLogPage.verifyEntryOnChangeLog(2, "groupFlag", "1", "0", "mifos"); } groupViewDetailsPage = navigationHelper.navigateToGroupViewDetailsPage(groupName); groupViewDetailsPage.verifyNumberOfClientsInGroup(Integer.toString(activeClients - 1)); groupViewDetailsPage.verifyAvgIndyvidualLoanSize(avgIndyvidualLoanSize); groupViewDetailsPage.verifyTotalLoanPortfolio(totalLoanPortfolio); } public void deleteClientGroupMembershipWithError(String clientName) { navigationHelper .navigateToClientViewDetailsPage(clientName) .navigateToEditRemoveGroupMembership() .deleteGroupMembership() .confirmDeleteGroupMembershipFail(); } public ClientViewDetailsPage createClientAndVerify(String loanOfficer, String officeName) { CreateClientEnterPersonalDataPage.SubmitFormParameters formParameters = createClient(loanOfficer, officeName); return navigateToClientViewDetails(formParameters); } public CreateClientEnterPersonalDataPage.SubmitFormParameters createClient(String loanOfficer, String officeName) { CreateClientEnterPersonalDataPage clientPersonalDataPage = navigateToPersonalDataPage(officeName); CreateClientEnterPersonalDataPage.SubmitFormParameters formParameters = FormParametersHelper.getClientEnterPersonalDataPageFormParameters(); clientPersonalDataPage = clientPersonalDataPage.create(formParameters); clientPersonalDataPage.submitAndGotoCreateClientEnterMfiDataPage(); navigateToConfirmationPage(loanOfficer); return formParameters; } public ClientViewDetailsPage createClientWithQuestionGroups(String loanOfficer, String officeName, Map<String, String> choiceTags, String answer) { CreateClientEnterPersonalDataPage clientPersonalDataPage = navigateToPersonalDataPage(officeName); CreateClientEnterPersonalDataPage.SubmitFormParameters formParameters = FormParametersHelper.getClientEnterPersonalDataPageFormParameters(); clientPersonalDataPage = clientPersonalDataPage.create(formParameters); QuestionResponsePage questionResponsePage = clientPersonalDataPage.submitAndGotoCaptureQuestionResponsePage(); questionResponsePage.populateTextAnswer("name=questionGroups[0].sectionDetails[0].questions[0].value", answer); questionResponsePage.populateSmartSelect("txtListSearch", choiceTags); questionResponsePage.navigateToNextPage(); navigateToConfirmationPage(loanOfficer); return navigateToClientViewDetails(formParameters); } private ClientViewDetailsPage navigateToClientViewDetails(CreateClientEnterPersonalDataPage.SubmitFormParameters formParameters) { ClientViewDetailsPage clientViewDetailsPage = new CreateClientConfirmationPage(selenium).navigateToClientViewDetailsPage(); clientViewDetailsPage.verifyName(formParameters.getFirstName() + " " + formParameters.getLastName()); clientViewDetailsPage.verifyDateOfBirth(formParameters.getDateOfBirthDD(), formParameters.getDateOfBirthMM(), formParameters.getDateOfBirthYYYY()); clientViewDetailsPage.verifySpouseFather(formParameters.getSpouseFirstName() + " " + formParameters.getSpouseLastName()); clientViewDetailsPage.verifyHandicapped(formParameters.getHandicapped()); return clientViewDetailsPage; } private CreateClientConfirmationPage navigateToConfirmationPage(String loanOfficer) { CreateClientEnterMfiDataPage.SubmitFormParameters mfiFormParameters = new CreateClientEnterMfiDataPage.SubmitFormParameters(); mfiFormParameters.setLoanOfficerId(loanOfficer); MeetingParameters meetingFormParameters = new MeetingParameters(); meetingFormParameters.setWeekFrequency("1"); meetingFormParameters.setWeekDay(MeetingParameters.WeekDay.WEDNESDAY); meetingFormParameters.setMeetingPlace("Bangalore"); mfiFormParameters.setMeeting(meetingFormParameters); CreateClientPreviewDataPage clientPreviewDataPage = new CreateClientEnterMfiDataPage(selenium).submitAndGotoCreateClientPreviewDataPage(mfiFormParameters); CreateClientConfirmationPage clientConfirmationPage = clientPreviewDataPage.submit(); clientConfirmationPage.verifyPage(); return clientConfirmationPage; } private CreateClientEnterPersonalDataPage navigateToPersonalDataPage(String officeName) { ClientsAndAccountsHomepage clientsAndAccountsPage = navigationHelper.navigateToClientsAndAccountsPage(); GroupSearchPage groupSearchPage = clientsAndAccountsPage.navigateToCreateNewClientPage(); ChooseOfficePage chooseOfficePage = groupSearchPage.navigateToCreateClientWithoutGroupPage(); return chooseOfficePage.chooseOffice(officeName); } public CreateClientEnterPersonalDataPage createClient(String officeName, String dd, String mm, String yy) { CreateClientEnterPersonalDataPage clientPersonalDataPage = navigateToPersonalDataPage(officeName); CreateClientEnterPersonalDataPage.SubmitFormParameters formParameters = new CreateClientEnterPersonalDataPage.SubmitFormParameters(); formParameters.setSalutation(CreateClientEnterPersonalDataPage.SubmitFormParameters.MRS); formParameters.setFirstName("test"); formParameters.setLastName("Customer" + StringUtil.getRandomString(8)); formParameters.setDateOfBirthDD(dd); formParameters.setDateOfBirthMM(mm); formParameters.setDateOfBirthYYYY(yy); formParameters.setGender(CreateClientEnterPersonalDataPage.SubmitFormParameters.FEMALE); formParameters.setPovertyStatus(CreateClientEnterPersonalDataPage.SubmitFormParameters.POOR); formParameters.setHandicapped("Yes"); formParameters.setSpouseNameType(CreateClientEnterPersonalDataPage.SubmitFormParameters.FATHER); formParameters.setSpouseFirstName("father"); formParameters.setSpouseLastName("lastname" + StringUtil.getRandomString(8)); return clientPersonalDataPage.create(formParameters); } public CreateClientEnterPersonalDataPage createClientForFamilyInfo(String officeName, String dd, String mm, String yy) { CreateClientEnterPersonalDataPage clientPersonalDataPage = navigateToPersonalDataPage(officeName); CreateClientEnterPersonalDataPage.SubmitFormParameters formParameters = new CreateClientEnterPersonalDataPage.SubmitFormParameters(); formParameters.setLastName("Customer" + StringUtil.getRandomString(8)); formParameters.setSalutation(CreateClientEnterPersonalDataPage.SubmitFormParameters.MRS); formParameters.setFirstName("test"); formParameters.setDateOfBirthYYYY(yy); formParameters.setLastName("Customer" + StringUtil.getRandomString(8)); formParameters.setDateOfBirthDD(dd); formParameters.setDateOfBirthMM(mm); formParameters.setGender(CreateClientEnterPersonalDataPage.SubmitFormParameters.FEMALE); formParameters.setPovertyStatus(CreateClientEnterPersonalDataPage.SubmitFormParameters.POOR); formParameters.setHandicapped("Yes"); return clientPersonalDataPage.createWithoutSpouse(formParameters); } public CreateClientEnterFamilyDetailsPage createFamily(String fname, String lname, String dd, String mm, String yy, CreateClientEnterFamilyDetailsPage page) { CreateClientEnterFamilyDetailsPage.SubmitFormParameters formParameters = new CreateClientEnterFamilyDetailsPage.SubmitFormParameters(); formParameters.setRelationship(CreateClientEnterFamilyDetailsPage.SubmitFormParameters.FATHER); formParameters.setFirstName(fname); formParameters.setLastName(lname); formParameters.setDateOfBirthDD(dd); formParameters.setDateOfBirthMM(mm); formParameters.setDateOfBirthYY(yy); formParameters.setGender(CreateClientEnterFamilyDetailsPage.SubmitFormParameters.MALE); formParameters.setLivingStatus(CreateClientEnterFamilyDetailsPage.SubmitFormParameters.TOGETHER); return page.createMember(formParameters); } public CreateClientEnterFamilyDetailsPage createFamilyWithoutLookups(Integer relation, Integer gender, Integer livingStatus, CreateClientEnterFamilyDetailsPage page) { CreateClientEnterFamilyDetailsPage.SubmitFormParameters formParameters = new CreateClientEnterFamilyDetailsPage.SubmitFormParameters(); formParameters.setRelationship(relation); formParameters.setFirstName("fname"); formParameters.setLastName("lname"); formParameters.setDateOfBirthDD("11"); formParameters.setDateOfBirthMM("1"); formParameters.setDateOfBirthYY("2009"); formParameters.setGender(gender); formParameters.setLivingStatus(livingStatus); return page.createMember(formParameters); } public CreateClientEnterFamilyDetailsPage createFamilyWithAllName(String fname, String lname, String mname, String slname, String dd, String mm, String yy, CreateClientEnterFamilyDetailsPage page){ CreateClientEnterFamilyDetailsPage.SubmitFormParameters formParameters = new CreateClientEnterFamilyDetailsPage.SubmitFormParameters(); formParameters.setRelationship(CreateClientEnterFamilyDetailsPage.SubmitFormParameters.FATHER); formParameters.setFirstName(fname); formParameters.setLastName(lname); formParameters.setMiddleName(mname); formParameters.setSecondLastName(slname); formParameters.setDateOfBirthDD(dd); formParameters.setDateOfBirthMM(mm); formParameters.setDateOfBirthYY(yy); formParameters.setGender(CreateClientEnterFamilyDetailsPage.SubmitFormParameters.MALE); formParameters.setLivingStatus(CreateClientEnterFamilyDetailsPage.SubmitFormParameters.TOGETHER); return page.createMemberWithAllNames(formParameters); } public CreateClientPreviewDataPage createClientMFIInformationAndGoToPreviewPage(String loanOfficer, CreateClientEnterMfiDataPage clientMfiDataPage) { CreateClientEnterMfiDataPage.SubmitFormParameters mfiFormParameters = new CreateClientEnterMfiDataPage.SubmitFormParameters(); mfiFormParameters.setLoanOfficerId(loanOfficer); MeetingParameters meetingFormParameters = new MeetingParameters(); meetingFormParameters.setWeekFrequency("1"); meetingFormParameters.setWeekDay(MeetingParameters.WeekDay.WEDNESDAY); meetingFormParameters.setMeetingPlace("Mangalore"); mfiFormParameters.setMeeting(meetingFormParameters); return clientMfiDataPage.submitAndGotoCreateClientPreviewDataPage(mfiFormParameters); } public ClientViewDetailsPage createNewClient(String groupName, CreateClientEnterPersonalDataPage.SubmitFormParameters clientParams) { return navigationHelper .navigateToClientsAndAccountsPage() .navigateToCreateNewClientPage() .selectGroup(groupName) .create(clientParams) .submitAndGotoCreateClientEnterMfiDataPage() .navigateToPreview() .submit() .navigateToClientViewDetailsPage(); } public ClientViewDetailsPage navigateToClientViewDetailsPage(String clientName) { ClientViewDetailsPage clientViewDetailsPage = navigationHelper.navigateToClientViewDetailsPage(clientName); clientViewDetailsPage.verifyPage("ViewClientDetails"); return clientViewDetailsPage; } public ClientViewDetailsPage editQuestionGroupResponses(ClientViewDetailsPage clientViewDetailsPage, String numberSection, String locator, String response) { ViewQuestionResponseDetailPage viewQuestionResponseDetailPage = clientViewDetailsPage.navigateToViewAdditionalInformationPage(); viewQuestionResponseDetailPage.verifyPage(); QuestionnairePage questionnairePage = viewQuestionResponseDetailPage.navigateToEditSection(numberSection); questionnairePage.verifyPage(); selenium.type(locator, response); ClientViewDetailsPage clientViewDetailsPage2 = (ClientViewDetailsPage) questionnairePage.submit(); clientViewDetailsPage2.verifyPage("ViewClientDetails"); return clientViewDetailsPage2; } public void applyCharge(String clientSearchString, ChargeParameters chargeParameters) { navigationHelper.navigateToClientViewDetailsPage(clientSearchString) .navigateToViewClientChargesDetail() .navigateToApplyCharges() .applyChargeAndNaviagteToViewClientChargesDetail(chargeParameters); } public void verifyMeetingSchedule(String clientName, String meetingSchedule){ navigationHelper.navigateToClientViewDetailsPage(clientName) .verifyMeetingSchedule(meetingSchedule); } /** * Adds client to group but fails cause either client or group has active loan and/or savings accounts. * @param clientName * @param groupName */ public void addClientToGroupWithErrorActiveAccountExists(String clientName, String groupName) { navigateToGroupSearchAddClientResult(clientName, groupName) .selectGroupToAdd(groupName) .submitAddGroupWithErrorActiveAccountExists(); } /** * Creates client for office and witch custom weekly meeting schedule. * @param loanOfficer assigned loan officer * @param office office's name * @param frequency weekly meeting frequency * @param weekDay day of the meeting * @param meetingPlace place of the meetings * @return */ public ClientViewDetailsPage createClientWithCustomMFIInformation(String loanOfficer, String office, String frequency, MeetingParameters.WeekDay weekDay, String meetingPlace) { CreateClientEnterPersonalDataPage clientPersonalDataPage = navigateToPersonalDataPage(office); CreateClientEnterPersonalDataPage.SubmitFormParameters formParameters = FormParametersHelper.getClientEnterPersonalDataPageFormParameters(); clientPersonalDataPage = clientPersonalDataPage.create(formParameters); clientPersonalDataPage.submitAndGotoCreateClientEnterMfiDataPage(); CreateClientEnterMfiDataPage.SubmitFormParameters mfiFormParameters = new CreateClientEnterMfiDataPage.SubmitFormParameters(); mfiFormParameters.setLoanOfficerId(loanOfficer); MeetingParameters meetingFormParameters = new MeetingParameters(); meetingFormParameters.setWeekFrequency(frequency); meetingFormParameters.setWeekDay(weekDay); meetingFormParameters.setMeetingPlace(meetingPlace); mfiFormParameters.setMeeting(meetingFormParameters); CreateClientPreviewDataPage clientPreviewDataPage = new CreateClientEnterMfiDataPage(selenium).submitAndGotoCreateClientPreviewDataPage(mfiFormParameters); CreateClientConfirmationPage clientConfirmationPage = clientPreviewDataPage.submit(); clientConfirmationPage.verifyPage(); return navigateToClientViewDetails(formParameters); } }