package org.openlmis.functional; import org.openlmis.UiUtils.TestCaseHelper; import org.openlmis.pageobjects.*; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.io.IOException; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; import static com.thoughtworks.selenium.SeleneseTestBase.assertTrue; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertFalse; public class ManageFilterSearch extends TestCaseHelper { LoginPage loginPage; RequisitionGroupPage requisitionGroupPage; SupervisoryNodesPage supervisoryNodesPage; public static final String ADMIN = "admin"; public static final String PASSWORD = "password"; public Map<String, String> testData = new HashMap<String, String>() {{ put(PASSWORD, "Admin123"); put(ADMIN, "Admin123"); }}; @BeforeMethod(groups = {"admin"}) public void setUp() throws InterruptedException, SQLException, IOException { super.setup(); dbWrapper.removeAllExistingRights("Admin"); dbWrapper.assignRight("Admin", "MANAGE_FACILITY"); dbWrapper.insertFacilitiesWithFacilityTypeIDAndGeoZoneId("F10", "F100", 1, 3); dbWrapper.insertFacilitiesWithFacilityTypeIDAndGeoZoneId("F100A", "F10A", 2, 3); dbWrapper.insertFacilitiesWithFacilityTypeIDAndGeoZoneId("F10B", "F10C", 3, 5); loginPage = PageObjectFactory.getLoginPage(testWebDriver, baseUrlGlobal); requisitionGroupPage = PageObjectFactory.getRequisitionGroupPage(testWebDriver); } @Test(groups = {"admin"}) public void testFilterAfterFacilitySearchOnRequisitionGroupPage() throws SQLException { dbWrapper.assignRight("Admin", "MANAGE_REQUISITION_GROUP"); dbWrapper.insertSupervisoryNode("F10", "N1", "Super1", null); dbWrapper.insertSupervisoryNode("F100A", "N2", "Super2", null); dbWrapper.insertRequisitionGroups("RG1", "RG2", "N2", "N1"); dbWrapper.updateFieldValue("facilities", "enabled", "false", "code", "F10B"); dbWrapper.updateFieldValue("facilities", "virtualFacility", "true", "code", "F10C"); HomePage homePage = loginPage.loginAs(testData.get(ADMIN), testData.get(PASSWORD)); requisitionGroupPage = homePage.navigateToRequisitionGroupPage(); requisitionGroupPage.clickAddNewButton(); requisitionGroupPage.clickMembersAccordionLink(); requisitionGroupPage.clickAddMembersButton(); requisitionGroupPage.searchMultipleFacilities("F10"); testWebDriver.waitForAjax(); assertEquals("5 matches found for 'F10'", requisitionGroupPage.getNFacilityResultsMessage()); requisitionGroupPage.clickFilterButton(); requisitionGroupPage.selectFacilityType("Lvl3 Hospital"); requisitionGroupPage.clickApplyFilterButton(); testWebDriver.waitForAjax(); assertEquals("2 matches found for 'F10'", requisitionGroupPage.getNFacilityResultsMessage()); requisitionGroupPage.clickFilterButton(); assertEquals("Lvl3 Hospital", requisitionGroupPage.getSelectedFacilityTypeOnFilterPopUp()); requisitionGroupPage.searchGeographicZone("Root"); requisitionGroupPage.selectGeographicZoneResult(1); assertEquals("Root", requisitionGroupPage.getSelectedGeoZoneOnFilterPopUp()); requisitionGroupPage.clickApplyFilterButton(); testWebDriver.waitForAjax(); assertEquals("No matches found for 'F10'", requisitionGroupPage.getNoFacilityResultMessage()); assertEquals("Lvl3 Hospital", requisitionGroupPage.getSelectedFacilityTypeLabelOnAddFilterPage()); assertEquals("Root", requisitionGroupPage.getSelectedGeoZoneLabelOnAddFilterPage()); assertTrue(requisitionGroupPage.isSetFilterButtonPresent()); requisitionGroupPage.clickMembersAccordionLink(); requisitionGroupPage.clickMembersAccordionLink(); assertEquals("No matches found for 'F10'", requisitionGroupPage.getNoFacilityResultMessage()); assertEquals("Lvl3 Hospital", requisitionGroupPage.getSelectedFacilityTypeLabelOnAddFilterPage()); assertEquals("Root", requisitionGroupPage.getSelectedGeoZoneLabelOnAddFilterPage()); assertTrue(requisitionGroupPage.isSetFilterButtonPresent()); } @Test(groups = {"admin"}) public void testFilterAfterTooManyFacilitySearchResultsOnRequisitionGroupPage() throws SQLException { dbWrapper.assignRight("Admin", "MANAGE_REQUISITION_GROUP"); dbWrapper.insertSupervisoryNode("F10", "N1", "Super1", null); dbWrapper.insertSupervisoryNode("F100A", "N2", "Super2", null); dbWrapper.insertRequisitionGroups("RG1", "RG2", "N2", "N1"); dbWrapper.insertFacilitiesWithFacilityTypeIDAndGeoZoneId("F11", "F11A", 1, 3); dbWrapper.insertFacilitiesWithFacilityTypeIDAndGeoZoneId("F11B", "F11C", 2, 3); dbWrapper.insertFacilitiesWithFacilityTypeIDAndGeoZoneId("F11D", "F11E", 3, 5); dbWrapper.insertFacilitiesWithFacilityTypeIDAndGeoZoneId("F11F", "F11G", 3, 5); dbWrapper.insertFacilitiesWithFacilityTypeIDAndGeoZoneId("F11H", "F11I", 3, 5); dbWrapper.insertFacilitiesWithFacilityTypeIDAndGeoZoneId("F110", "F111", 3, 5); dbWrapper.updateFieldValue("facilities", "enabled", "false", "code", "F11A"); dbWrapper.updateFieldValue("facilities", "virtualFacility", "true", "code", "F11"); dbWrapper.setupDataForGeoZones(); HomePage homePage = loginPage.loginAs(testData.get(ADMIN), testData.get(PASSWORD)); requisitionGroupPage = homePage.navigateToRequisitionGroupPage(); requisitionGroupPage.clickAddNewButton(); requisitionGroupPage.clickMembersAccordionLink(); requisitionGroupPage.clickAddMembersButton(); requisitionGroupPage.searchMultipleFacilities("F11"); testWebDriver.waitForAjax(); assertEquals("Too many results found. Please refine your search.", requisitionGroupPage.getTooManyFacilitySearchResultMessage()); requisitionGroupPage.clickFilterButton(); testWebDriver.waitForAjax(); requisitionGroupPage.selectFacilityType("Warehouse"); assertEquals("Warehouse", requisitionGroupPage.getSelectedFacilityTypeOnFilterPopUp()); requisitionGroupPage.searchGeographicZone("ABD"); assertEquals("No matches found for 'ABD'", requisitionGroupPage.getNoGeoZoneResultMessage()); requisitionGroupPage.searchGeographicZone("%"); assertEquals("Too many results found. Please refine your search.", requisitionGroupPage.getTooManyGeoZoneSearchResultMessage()); requisitionGroupPage.searchGeographicZone("A"); assertEquals("3 matches found for 'A'", requisitionGroupPage.getNGeoZoneResultsMessage()); requisitionGroupPage.searchGeographicZone("Arusha"); assertEquals("1 match found for 'Arusha'", requisitionGroupPage.getOneGeoZoneResultMessage()); requisitionGroupPage.selectGeographicZoneResult(1); assertEquals("Arusha", requisitionGroupPage.getSelectedGeoZoneOnFilterPopUp()); requisitionGroupPage.clickApplyFilterButton(); testWebDriver.waitForAjax(); assertEquals("1 match found for 'F11'", requisitionGroupPage.getOneFacilityResultMessage()); requisitionGroupPage.clickFilterButton(); testWebDriver.waitForAjax(); requisitionGroupPage.searchGeographicZone("Root"); requisitionGroupPage.selectGeographicZoneResult(1); requisitionGroupPage.clickCancelFilterButton(); testWebDriver.waitForAjax(); assertEquals("1 match found for 'F11'", requisitionGroupPage.getOneFacilityResultMessage()); assertEquals("Warehouse", requisitionGroupPage.getSelectedFacilityTypeLabelOnAddFilterPage()); assertEquals("Arusha", requisitionGroupPage.getSelectedGeoZoneLabelOnAddFilterPage()); assertTrue(requisitionGroupPage.isSetFilterButtonPresent()); testWebDriver.refresh(); requisitionGroupPage.clickMembersAccordionLink(); requisitionGroupPage.clickAddMembersButton(); assertFalse(requisitionGroupPage.isNoFacilityResultMessageDisplayed()); assertEquals("", requisitionGroupPage.getSelectedFacilityTypeLabelOnAddFilterPage()); assertEquals("", requisitionGroupPage.getSelectedGeoZoneLabelOnAddFilterPage()); assertTrue(requisitionGroupPage.isSetFilterButtonPresent()); } @Test(groups = {"admin"}) public void testClearFilterAfterFacilitySearchOnSupervisoryNodesPage() throws SQLException { dbWrapper.assignRight("Admin", "MANAGE_SUPERVISORY_NODE"); dbWrapper.insertSupervisoryNode("F10", "N1", "Super1", null); dbWrapper.insertSupervisoryNode("F100A", "N2", "Super2", null); dbWrapper.insertRequisitionGroups("RG1", "RG2", "N2", "N1"); HomePage homePage = loginPage.loginAs(testData.get(ADMIN), testData.get(PASSWORD)); supervisoryNodesPage = homePage.navigateToSupervisoryNodes(); supervisoryNodesPage.clickAddNewButton(); testWebDriver.waitForAjax(); supervisoryNodesPage.clickAssociatedFacilityMemberField(); supervisoryNodesPage.searchFacility("F10"); testWebDriver.waitForAjax(); assertEquals("6 matches found for 'F10'", supervisoryNodesPage.getNFacilityResultsMessage()); supervisoryNodesPage.clickFilterButton(); supervisoryNodesPage.clickApplyFilterButton(); assertEquals("6 matches found for 'F10'", supervisoryNodesPage.getNFacilityResultsMessage()); supervisoryNodesPage.clickFilterButton(); supervisoryNodesPage.selectFacilityType("Lvl3 Hospital"); assertEquals("Lvl3 Hospital", supervisoryNodesPage.getSelectedFacilityTypeOnFilterPopUp()); supervisoryNodesPage.searchGeographicZone("Root"); supervisoryNodesPage.selectGeographicZoneResult(1); assertEquals("Root", supervisoryNodesPage.getSelectedGeoZoneOnFilterPopUp()); supervisoryNodesPage.clickApplyFilterButton(); testWebDriver.waitForAjax(); assertEquals("No matches found for 'F10'", supervisoryNodesPage.getNoFacilityResultMessage()); supervisoryNodesPage.clickFilterButton(); supervisoryNodesPage.clickCancelFilterButton(); testWebDriver.waitForAjax(); assertEquals("No matches found for 'F10'", supervisoryNodesPage.getNoFacilityResultMessage()); assertEquals("Lvl3 Hospital", supervisoryNodesPage.getSelectedFacilityTypeLabelOnAddFilterPage()); assertEquals("Root", supervisoryNodesPage.getSelectedGeoZoneLabelOnAddFilterPage()); supervisoryNodesPage.clickFilterButton(); assertEquals("Lvl3 Hospital", supervisoryNodesPage.getSelectedFacilityTypeLabelOnAddFilterPage()); assertEquals("Root", supervisoryNodesPage.getSelectedGeoZoneLabelOnAddFilterPage()); supervisoryNodesPage.clickRemoveFacilityTypeFilter(); assertFalse(supervisoryNodesPage.isSelectedFacilityTypeOnFilterPopUpDisplayed()); assertFalse(supervisoryNodesPage.isRemoveFacilityTypeFilterDisplayed()); supervisoryNodesPage.clickRemoveGeoZoneFilter(); assertFalse(supervisoryNodesPage.isSelectedGeoZoneOnFilterPopUpDisplayed()); assertFalse(supervisoryNodesPage.isRemoveGeoZoneFilterDisplayed()); supervisoryNodesPage.clickApplyFilterButton(); assertTrue(supervisoryNodesPage.isSetFilterButtonPresent()); assertEquals("", supervisoryNodesPage.getSelectedFacilityTypeLabelOnAddFilterPage()); assertEquals("", supervisoryNodesPage.getSelectedGeoZoneLabelOnAddFilterPage()); } @AfterMethod(groups = {"admin"}) public void tearDown() throws SQLException { HomePage homePage = PageObjectFactory.getHomePage(testWebDriver); homePage.logout(baseUrlGlobal); dbWrapper.removeAllExistingRights("Admin"); dbWrapper.insertAllAdminRightsAsSeedData(); dbWrapper.deleteData(); dbWrapper.closeConnection(); } }