/*
* 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.admin;
import org.mifos.test.acceptance.framework.ClientsAndAccountsHomepage;
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.admin.DefineHiddenMandatoryFieldsPage;
import org.mifos.test.acceptance.framework.client.CreateClientEnterPersonalDataPage;
import org.mifos.test.acceptance.framework.group.CreateGroupSearchPage;
import org.mifos.test.acceptance.framework.loan.CreateLoanAccountSearchPage;
import org.mifos.test.acceptance.framework.loan.CreateLoanAccountSearchParameters;
import org.mifos.test.acceptance.framework.testhelpers.NavigationHelper;
import org.springframework.test.context.ContextConfiguration;
import org.testng.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={"acceptance","ui","admin","no_db_unit"})
public class DefineHiddenMandatoryFieldsTest extends UiTestCaseBase{
private NavigationHelper navigationHelper;
@Override
@SuppressWarnings("PMD.SignatureDeclareThrowsException") // one of the dependent methods throws Exception
@BeforeMethod
public void setUp() throws Exception {
super.setUp();
navigationHelper = new NavigationHelper(selenium);
}
@AfterMethod
public void logOut() {
(new MifosPage(selenium)).logout();
}
@Test(enabled=true)
@SuppressWarnings("PMD.SignatureDeclareThrowsException") // one of the dependent methods throws Exception
//http://mifosforge.jira.com/browse/MIFOSTEST-219
public void verifyChangesMadeOnDefineMandatoryHiddenFileds(){
//When
AdminPage adminPage = navigationHelper.navigateToAdminPage().navigateToViewRolesPage().navigateToManageRolePage("Admin").disablePermission("9_1").
verifyPermissionText("9_1", "Can define hidden/mandatory fields").submitAndGotoViewRolesPage().navigateToAdminPage();
DefineHiddenMandatoryFieldsPage defineHiddenMandatoryFieldsPage = adminPage.navigateToDefineHiddenMandatoryFields();
//Then
defineHiddenMandatoryFieldsPage.verifyAccessDenied();
//When
adminPage = navigationHelper.navigateToAdminPage().navigateToViewRolesPage().navigateToManageRolePage("Admin").enablePermission("9_1").
verifyPermissionText("9_1", "Can define hidden/mandatory fields").submitAndGotoViewRolesPage().navigateToAdminPage();
defineHiddenMandatoryFieldsPage = adminPage.navigateToDefineHiddenMandatoryFields();
defineHiddenMandatoryFieldsPage.checkHideRelativeSecondLastName();
defineHiddenMandatoryFieldsPage.checkMandatoryEthnicity();
adminPage = defineHiddenMandatoryFieldsPage.submit();
adminPage.navigateToClientsAndAccountsPageUsingHeaderTab().navigateToCreateNewClientPage()
.navigateToCreateClientWithoutGroupPage().chooseOffice("MyOfficeDHMFT");
//Then
Assert.assertTrue(selenium.isTextPresent("*Ethnicity:"));
Assert.assertFalse(selenium.isElementPresent("create_ClientPersonalInfo.input.spouseSecondLastName"));
// restore original configuration
defineHiddenMandatoryFieldsPage = navigationHelper.navigateToAdminPage().navigateToDefineHiddenMandatoryFields();
defineHiddenMandatoryFieldsPage.uncheckHideRelativeSecondLastName();
defineHiddenMandatoryFieldsPage.uncheckMandatoryEthnicity();
defineHiddenMandatoryFieldsPage.submit();
}
/**
* Verify Hidden Fields
* http://mifosforge.jira.com/browse/MIFOSTEST-1182
*
* @throws Exception
*/
@Test(enabled=true)
@SuppressWarnings("PMD")
public void verifyHiddenFields(){
//When
AdminPage adminPage = navigationHelper.navigateToAdminPage();
DefineHiddenMandatoryFieldsPage defineHiddenMandatoryFieldsPage = adminPage.navigateToDefineHiddenMandatoryFields();
defineHiddenMandatoryFieldsPage.uncheckMandatoryPovertyStatus();
defineHiddenMandatoryFieldsPage.checkHideExternalId();
defineHiddenMandatoryFieldsPage.checkHideEthnicity();
defineHiddenMandatoryFieldsPage.checkHideCitizenShip();
defineHiddenMandatoryFieldsPage.checkHideHandicapped();
defineHiddenMandatoryFieldsPage.checkHideEducationLevel();
defineHiddenMandatoryFieldsPage.checkHidePhoto();
defineHiddenMandatoryFieldsPage.checkHideAssignClientPostions();
defineHiddenMandatoryFieldsPage.checkHideAddress2();
defineHiddenMandatoryFieldsPage.checkHideAddress3();
defineHiddenMandatoryFieldsPage.checkHideCity();
defineHiddenMandatoryFieldsPage.checkHideState();
defineHiddenMandatoryFieldsPage.checkHideCountry();
defineHiddenMandatoryFieldsPage.checkHidePostalCode();
defineHiddenMandatoryFieldsPage.checkHideReceiptIdDate();
defineHiddenMandatoryFieldsPage.checkHideCollateralTypeNotes();
defineHiddenMandatoryFieldsPage.checkHideMiddleName();
defineHiddenMandatoryFieldsPage.checkHideSecondLastName();
defineHiddenMandatoryFieldsPage.checkHideGovtId();
defineHiddenMandatoryFieldsPage.checkHideRelativeMiddleName();
defineHiddenMandatoryFieldsPage.checkHideRelativeSecondLastName();
defineHiddenMandatoryFieldsPage.checkHidePhone();
defineHiddenMandatoryFieldsPage.checkHideTrained();
defineHiddenMandatoryFieldsPage.checkHideBusinessWorkActivities();
defineHiddenMandatoryFieldsPage.checkHidePovertyStatus();
defineHiddenMandatoryFieldsPage.checkHideGroupTrained();
adminPage = defineHiddenMandatoryFieldsPage.submit();
CreateClientEnterPersonalDataPage createClientEnterPersonalDataPage = adminPage.navigateToClientsAndAccountsPageUsingHeaderTab().navigateToCreateNewClientPage()
.navigateToCreateClientWithoutGroupPage().chooseOffice("MyOfficeDHMFT");
//Then
Assert.assertFalse(selenium.isElementPresent("create_ClientPersonalInfo.input.spouseSecondLastName"));
Assert.assertFalse(selenium.isElementPresent("create_ClientPersonalInfo.input.middleName"));
Assert.assertFalse(selenium.isElementPresent("create_ClientPersonalInfo.input.secondLastName"));
Assert.assertFalse(selenium.isElementPresent("create_ClientPersonalInfo.input.governmentId"));
Assert.assertFalse(selenium.isElementPresent("clientDetailView.citizenship"));
Assert.assertFalse(selenium.isElementPresent("clientDetailView.ethnicity"));
Assert.assertFalse(selenium.isElementPresent("clientDetailView.educationLevel"));
Assert.assertFalse(selenium.isElementPresent("clientDetailView.businessActivities"));
Assert.assertFalse(selenium.isElementPresent("clientDetailView.povertyStatus"));
Assert.assertFalse(selenium.isElementPresent("clientDetailView.handicapped"));
Assert.assertFalse(selenium.isElementPresent("create_ClientPersonalInfo.input.spouseMiddleName"));
Assert.assertFalse(selenium.isElementPresent("create_ClientPersonalInfo.input.address2"));
Assert.assertFalse(selenium.isElementPresent("create_ClientPersonalInfo.input.address3"));
Assert.assertFalse(selenium.isElementPresent("create_ClientPersonalInfo.input.city"));
Assert.assertFalse(selenium.isElementPresent("create_ClientPersonalInfo.input.state"));
Assert.assertFalse(selenium.isElementPresent("create_ClientPersonalInfo.input.country"));
Assert.assertFalse(selenium.isElementPresent("create_ClientPersonalInfo.input.postalCode"));
Assert.assertFalse(selenium.isElementPresent("create_ClientPersonalInfo.input.telephone"));
CreateClientEnterPersonalDataPage.SubmitFormParameters params = new CreateClientEnterPersonalDataPage.SubmitFormParameters();
params.setSalutation(47);
params.setFirstName("Client");
params.setLastName("Test");
params.setDateOfBirthDD("11");
params.setDateOfBirthMM("02");
params.setDateOfBirthYYYY("1981");
params.setGender(49);
createClientEnterPersonalDataPage.createWithoutSpouse(params);
createClientEnterPersonalDataPage.submitAndGotoCreateClientEnterMfiDataPage();
Assert.assertFalse(selenium.isElementPresent("trained"));
Assert.assertFalse(selenium.isElementPresent("trainedDateDD"));
ClientsAndAccountsHomepage clientsAndAccountsHomepage = navigationHelper.navigateToClientsAndAccountsPage();
CreateLoanAccountSearchPage createLoanAccountSearchPage = clientsAndAccountsHomepage.navigateToCreateLoanAccountUsingLeftMenu();
CreateLoanAccountSearchParameters params2 = new CreateLoanAccountSearchParameters();
params2.setSearchString("ClientWithLoan");
params2.setLoanProduct("ClientEmergencyLoan");
createLoanAccountSearchPage.searchAndNavigateToCreateLoanAccountPage(params2);
Assert.assertFalse(selenium.isElementPresent("collateralTypeId"));
Assert.assertFalse(selenium.isElementPresent("collateralNotes"));
Assert.assertFalse(selenium.isElementPresent("externalId"));
navigationHelper.navigateToClientsAndAccountsPage();
CreateGroupSearchPage createGroupSearchPage = clientsAndAccountsHomepage.navigateToCreateNewGroupPage();
createGroupSearchPage.searchAndNavigateToCreateGroupPage("Default Center");
Assert.assertFalse(selenium.isElementPresent("trained"));
Assert.assertFalse(selenium.isElementPresent("trainedDateDD"));
// restore original configuration
defineHiddenMandatoryFieldsPage = navigationHelper.navigateToAdminPage().navigateToDefineHiddenMandatoryFields();
defineHiddenMandatoryFieldsPage.uncheckHideExternalId();
defineHiddenMandatoryFieldsPage.uncheckHideEthnicity();
defineHiddenMandatoryFieldsPage.uncheckHideCitizenShip();
defineHiddenMandatoryFieldsPage.uncheckHideHandicapped();
defineHiddenMandatoryFieldsPage.uncheckHideEducationLevel();
defineHiddenMandatoryFieldsPage.uncheckHidePhoto();
defineHiddenMandatoryFieldsPage.uncheckHideAssignClientPostions();
defineHiddenMandatoryFieldsPage.uncheckHideAddress2();
defineHiddenMandatoryFieldsPage.uncheckHideAddress3();
defineHiddenMandatoryFieldsPage.uncheckHideCity();
defineHiddenMandatoryFieldsPage.uncheckHideState();
defineHiddenMandatoryFieldsPage.uncheckHideCountry();
defineHiddenMandatoryFieldsPage.uncheckHidePostalCode();
defineHiddenMandatoryFieldsPage.uncheckHideReceiptIdDate();
defineHiddenMandatoryFieldsPage.uncheckHideCollateralTypeNotes();
defineHiddenMandatoryFieldsPage.uncheckHideMiddleName();
defineHiddenMandatoryFieldsPage.uncheckHideSecondLastName();
defineHiddenMandatoryFieldsPage.uncheckHideGovtId();
defineHiddenMandatoryFieldsPage.uncheckHidePovertyStatus();
defineHiddenMandatoryFieldsPage.uncheckHideRelativeMiddleName();
defineHiddenMandatoryFieldsPage.uncheckHideRelativeSecondLastName();
defineHiddenMandatoryFieldsPage.uncheckHidePhone();
defineHiddenMandatoryFieldsPage.uncheckHideTrained();
defineHiddenMandatoryFieldsPage.uncheckHideBusinessWorkActivities();
defineHiddenMandatoryFieldsPage.uncheckHideGroupTrained();
defineHiddenMandatoryFieldsPage.checkMandatoryPovertyStatus();
defineHiddenMandatoryFieldsPage.submit();
}
/**
* Verify Mandatory Fields
* http://mifosforge.jira.com/browse/MIFOSTEST-1181
*
* @throws Exception
*/
@Test(enabled=true)
@SuppressWarnings("PMD")
public void verifyMandatoryFields(){
//When
AdminPage adminPage = navigationHelper.navigateToAdminPage();
DefineHiddenMandatoryFieldsPage defineHiddenMandatoryFieldsPage = adminPage.navigateToDefineHiddenMandatoryFields();
defineHiddenMandatoryFieldsPage.checkMandatoryExternalId();
defineHiddenMandatoryFieldsPage.checkMandatoryEthnicity();
defineHiddenMandatoryFieldsPage.checkMandatoryCitizenShip();
defineHiddenMandatoryFieldsPage.checkMandatoryHandicapped();
defineHiddenMandatoryFieldsPage.checkMandatoryEducationLevel();
// TODO: we cannot make photo as a mandatory one, because we cannot upload images in selenium tests
//defineHiddenMandatoryFieldsPage.checkMandatoryPhoto();
defineHiddenMandatoryFieldsPage.checkMandatoryAddress1();
defineHiddenMandatoryFieldsPage.checkMandatoryMiddleName();
defineHiddenMandatoryFieldsPage.checkMandatorySecondLastName();
defineHiddenMandatoryFieldsPage.checkMandatoryGovtId();
defineHiddenMandatoryFieldsPage.checkMandatoryMaritalStatus();
defineHiddenMandatoryFieldsPage.checkMandatoryRelativeSecondLastName();
defineHiddenMandatoryFieldsPage.checkMandatoryPhone();
defineHiddenMandatoryFieldsPage.checkMandatoryTrained();
defineHiddenMandatoryFieldsPage.checkMandatoryTrainedOn();
defineHiddenMandatoryFieldsPage.checkMandatoryNumberOfChildren();
defineHiddenMandatoryFieldsPage.checkMandatoryLoanAccountPurpose();
defineHiddenMandatoryFieldsPage.checkMandatoryLoanSourceOfFund();
adminPage = defineHiddenMandatoryFieldsPage.submit();
CreateClientEnterPersonalDataPage createClientEnterPersonalDataPage = adminPage.navigateToClientsAndAccountsPageUsingHeaderTab().navigateToCreateNewClientPage()
.navigateToCreateClientWithoutGroupPage().chooseOffice("MyOfficeDHMFT");
//Then
Assert.assertTrue(selenium.isTextPresent("*Middle Name"));
Assert.assertTrue(selenium.isTextPresent("*Second Last Name"));
Assert.assertTrue(selenium.isTextPresent("*Government ID"));
Assert.assertTrue(selenium.isTextPresent("*Marital Status"));
Assert.assertTrue(selenium.isTextPresent("*Number Of Children"));
Assert.assertTrue(selenium.isTextPresent("*Citizenship"));
Assert.assertTrue(selenium.isTextPresent("*Ethnicity"));
Assert.assertTrue(selenium.isTextPresent("*Education Level"));
Assert.assertTrue(selenium.isTextPresent("*Handicapped"));
Assert.assertTrue(selenium.isTextPresent("*Address 1"));
Assert.assertTrue(selenium.isTextPresent("*Poverty Status"));
CreateClientEnterPersonalDataPage.SubmitFormParameters params3 = new CreateClientEnterPersonalDataPage.SubmitFormParameters();
params3.setSalutation(47);
params3.setFirstName("Client");
params3.setMiddleName("Middle");
params3.setLastName("Test");
params3.setSecondLastName("Second");
params3.setGovernmentID("12345");
params3.setMaritalStatus(67);
params3.setCitizenship(131);
params3.setEthnicity(133);
params3.setHandicappedDropdown(139);
params3.setPovertyStatus(42);
params3.setEducationLevel(135);
params3.setSpouseLastName("LastName");
params3.setAddress1("address1");
params3.setNumberOfChildren("2");
params3.setDateOfBirthDD("11");
params3.setDateOfBirthMM("02");
params3.setDateOfBirthYYYY("1981");
params3.setGender(49);
params3.setPhone("123456");
params3.setSpouseNameType(2);
createClientEnterPersonalDataPage.createWithMandatoryFields(params3);
createClientEnterPersonalDataPage.submitAndGotoCreateClientEnterMfiDataPage();
Assert.assertTrue(selenium.isTextPresent("*External Id"));
Assert.assertTrue(selenium.isTextPresent("*Trained"));
Assert.assertTrue(selenium.isTextPresent("*Trained On Date"));
ClientsAndAccountsHomepage clientsAndAccountsHomepage = navigationHelper.navigateToClientsAndAccountsPage();
CreateLoanAccountSearchPage createLoanAccountSearchPage = clientsAndAccountsHomepage.navigateToCreateLoanAccountUsingLeftMenu();
CreateLoanAccountSearchParameters params4 = new CreateLoanAccountSearchParameters();
params4.setSearchString("ClientWithLoan");
params4.setLoanProduct("ClientEmergencyLoan");
createLoanAccountSearchPage.searchAndNavigateToCreateLoanAccountPage(params4);
Assert.assertTrue(selenium.isTextPresent("*External id"));
navigationHelper.navigateToClientsAndAccountsPage();
CreateGroupSearchPage createGroupSearchPage = clientsAndAccountsHomepage.navigateToCreateNewGroupPage();
createGroupSearchPage.searchAndNavigateToCreateGroupPage("Default Center");
Assert.assertTrue(selenium.isTextPresent("*External Id"));
// restore original configuration
defineHiddenMandatoryFieldsPage = navigationHelper.navigateToAdminPage().navigateToDefineHiddenMandatoryFields();
defineHiddenMandatoryFieldsPage.uncheckMandatoryExternalId();
defineHiddenMandatoryFieldsPage.uncheckMandatoryEthnicity();
defineHiddenMandatoryFieldsPage.uncheckMandatoryCitizenShip();
defineHiddenMandatoryFieldsPage.uncheckMandatoryHandicapped();
defineHiddenMandatoryFieldsPage.uncheckMandatoryEducationLevel();
//defineHiddenMandatoryFieldsPage.uncheckMandatoryPhoto();
defineHiddenMandatoryFieldsPage.uncheckMandatoryAddress1();
defineHiddenMandatoryFieldsPage.uncheckMandatoryMiddleName();
defineHiddenMandatoryFieldsPage.uncheckMandatorySecondLastName();
defineHiddenMandatoryFieldsPage.uncheckMandatoryGovtId();
defineHiddenMandatoryFieldsPage.uncheckMandatoryMaritalStatus();
defineHiddenMandatoryFieldsPage.uncheckMandatoryRelativeSecondLastName();
defineHiddenMandatoryFieldsPage.uncheckMandatoryPhone();
defineHiddenMandatoryFieldsPage.uncheckMandatoryTrained();
defineHiddenMandatoryFieldsPage.uncheckMandatoryTrainedOn();
defineHiddenMandatoryFieldsPage.uncheckMandatoryNumberOfChildren();
defineHiddenMandatoryFieldsPage.uncheckMandatoryLoanAccountPurpose();
defineHiddenMandatoryFieldsPage.uncheckMandatoryLoanSourceOfFund();
defineHiddenMandatoryFieldsPage.submit();
}
}