Untitled
unknown
plain_text
2 years ago
11 kB
7
Indexable
package com.workplace.reservation.test.frontend.it; import org.hamcrest.CoreMatchers; import org.hamcrest.MatcherAssert; import org.testng.Assert; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.runner.RunWith; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.Keys; import java.net.URI; import java.net.URISyntaxException; import com.glide.script.GlideRecord; import java.util.List; import com.snc.glide.it.annotations.WithScopedApp; import com.snc.glide.it.rules.DataLoader; import com.snc.glide.it.rules.RecordCleaner; import com.snc.glide.it.runners.Step; import com.snc.sdlc.annotations.Story; import com.snc.sdlc.annotations.TestCase; import com.snc.selenium.core.SNCTest; import com.snc.selenium.runner.GlideUiRunner; import com.snc.selenium.runner.WithUser; import com.workplace.reservation.test.objects.WSDSearchReservableObject; import com.workplace.reservation.test.objects.WSDGeneralWidgetObjects; import com.workplace.reservation.test.objects.WSDReservationWidgetObjects; @Story({ "STRY54825899", "STRY54826164" }) //@WithScopedApp(value = { "app-wsd-core", "app-wsd-reservation" }, loadDemoData = false, nodeRestart = false) @RunWith(GlideUiRunner.class) public class WSDOverlappingReservationIT extends SNCTest implements WSDSearchReservableObject, WSDGeneralWidgetObjects, WSDReservationWidgetObjects{ WebDriver driver = getDriver(); @ClassRule public static final DataLoader testData = new DataLoader(); public static final RecordCleaner recordCleaner = new RecordCleaner(); @BeforeClass public void loadData() { testData.loadResource("sys_user.xml"); testData.loadResource("sys_user_has_role.xml"); testData.loadResource("sn_wsd_rsv_m2m_reservable_module_view_configuration.xml"); testData.loadResource("sn_wsd_rsv_reservable_module.xml"); testData.loadResource("sn_wsd_core_workplace_location.xml"); testData.loadResource("sn_wsd_rsv_reservable_view.xml"); testData.loadResource("sn_wsd_rsv_reservation.xml"); } @AfterClass public void deleteRecord() { recordCleaner.clean(); testData.unloadAll(); } @Story({"STRY54825899", "STRY54826164", "STRY54905741", "STRY54826169", "STRY54984211", "STRY54960124"}) @TestCase({ "TNTC0266326", "TNTC0267458", "TNTC0269493", "TNTC0272113", "TNTC0272864", "TNTC0277111" }) @WithUser("rsv_user_1") @Step(value = 1, info = "Checking for overlapping reservations") public void verifyOverlappingRsv() { searchForSpaceInSearchPage(); landOnRsvPageFromSearchPage(); createRsv(); searchForSpaceInSearchPage(); //verify overlapping msg in search page verifyWarningMsg(overlappingMsg); landOnRsvPageFromSearchPage(); //verify overlapping msg in intermediate page verifyWarningMsg(overlappingMsg); createRsv(); WebElement actionsButton = item.findElement(By.className(ACTIONS_BUTTON_CLASS_NAME)); actionsButton.click(); WebElement link = item.findElement(By.linkText(CHANGE_RSV_DETAILS)); link.click(); //checks overlapping reservation for private reservation where opened by is logged in user WebElement onBehalfOf = item.findElement(By.id(RSV_ON_BEHALF_OF_ID)); onBehalfOf.click(); onBehalfOf.sendKeys(RSV_USER_2); WebElement firstOptionInOnBehalfOf = item.findElement(By.className(SELECT2_HIGHLIGHTED)); firstOptionInOnBehalfOf.click(); verifyWarningMsg(overlappingMsgForDiffOnbehalfOfUser); //checks overlapping reservation for private reservation where opened by is not logged in user onBehalfOf.click(); onBehalfOf.sendKeys(RSV_USER_3); WebElement firstOptionInOnBehalfOfPicker = item.findElement(By.className(SELECT2_HIGHLIGHTED)); firstOptionInOnBehalfOfPicker.click(); //As this is private reservation, it shouldn't be visible to loggedin user verifyNoWarningMsgForPrivateRsv(); WebElement dateLocationButton = item.findElement(By.className(CHANGE_DATE_OR_LOCATION_CLASS_NAME)); dateLocationButton.click(); //verify overlapping msg in edit scenario in search page verifyWarningMsg(overlappingMsg); } /* @Story({"STRY54960124"}) @TestCase({"TNTC0277111" }) @WithUser("shared_rsv_user") @Step(value = 2, info = "Checking for overlapping private reservations visible for notification recipients") public void verifyOverlappingPrivateRsvForSharedUser() { //page.load("/ws?id=wsd_reservation&reservable_ids=0ad6b7f9c3111010cc7060bf4b40dd30&start=2026-01-02T08:00:00Z&end=2026-01-02T09:00:00Z&reservable_module=5db44502dbb650106c731dcd13961937", true); searchForSpaceInSearchPage(); landOnRsvPageFromSearchPage(); //checks overlapping reservation for private reservation where opened by is notification recipient WebElement onBehalfOf = item.findElement(By.id(RSV_ON_BEHALF_OF_ID)); onBehalfOf.click(); onBehalfOf.sendKeys(RSV_USER_3); WebElement firstOptionInOnBehalfOf = item.findElement(By.className(SELECT2_HIGHLIGHTED)); firstOptionInOnBehalfOf.click(); verifyWarningMsg(overlappingMsgForDiffOnbehalfOfUserRsv3); }*/ /* @Story({"STRY54960124"}) @TestCase({"TNTC0277111" }) @WithUser("rsv_attendee_user") @Step(value = 3, info = "Checking for overlapping reservations visible for attendees") public void verifyOverlappingPrivateRsvForAttendee() { //page.load("/ws?id=wsd_reservation&reservable_ids=0ad6b7f9c3111010cc7060bf4b40dd30&start=2026-01-02T08:00:00Z&end=2026-01-02T09:00:00Z&reservable_module=5db44502dbb650106c731dcd13961937", true) searchForSpaceInSearchPage(); landOnRsvPageFromSearchPage(); //checks overlapping reservation for private reservation where opened by is attendee WebElement onBehalfOf = item.findElement(By.id(RSV_ON_BEHALF_OF_ID)); onBehalfOf.click(); onBehalfOf.sendKeys(RSV_USER_3); WebElement firstOptionInOnBehalfOf = item.findElement(By.className(SELECT2_HIGHLIGHTED)); firstOptionInOnBehalfOf.click(); verifyWarningMsg(overlappingMsgForDiffOnbehalfOfUserRsv3); } */ private String getRsvIdFromUrl(String actualUrl) { String reservationId = null; try { URI uri = new URI(actualUrl); String query = uri.getQuery(); String[] queryParams = query.split("&"); for (String param : queryParams) { String[] keyValue = param.split("="); if (keyValue[0].equals("reservation_id")) { reservationId = keyValue[1]; break; } } } catch (URISyntaxException e) { throw new RuntimeException(e.getMessage()); } return reservationId; } public void searchForSpaceInSearchPage() { WebDriver driver = getDriver(); page.load("/ws?id=" + WSD_RESERVABLE_SEARCH_PAGE_ID, true); WebDriverWait wait = new WebDriverWait(driver, MAX_ASYNC_TIME); wait.until(ExpectedConditions.urlContains(WSD_RESERVABLE_SEARCH_PAGE_ID)); // Find the UI tag containing the reservableModule list WebElement uiTagReservableModules = item.findElement(By.className(RESERVABLE_MODULE_TYPES_LIST)); // Find all the list items in the UI tag List<WebElement> reservableModulelistItems = uiTagReservableModules.findElements(By.cssSelector(LIST_TAG)); // Iterate through the list items to find the desired one for (WebElement reservableModuleItem : reservableModulelistItems) { if (reservableModuleItem.getText().equals(RESERVABLE_MODULE_NAME)) { reservableModuleItem.click(); break; } } WebElement unifiedPicker = item.findElement(By.className(UNIFIED_PICKER_CONTAINER_CLASS_NAME)); WebElement pickerInput = unifiedPicker.findElement(By.tagName(INPUT_TAG)); pickerInput.sendKeys(BUILDING_PICKER_4mationHNKUtrecht_BUILDING_VALUE); // private location selectFirstValueInDropDown(getDriver()); WebElement startDatePicker = driver.findElement(By.id(START_TIME_ID)); startDatePicker.clear(); startDatePicker.sendKeys(START_DATE_TIME); startDatePicker.sendKeys(Keys.TAB); WebElement endDatePicker = driver.findElement(By.id(END_TIME_ID)); endDatePicker.clear(); endDatePicker.sendKeys(END_DATE_TIME); endDatePicker.sendKeys(Keys.TAB); WebElement searchButton = item.findElement(By.className(BUTTON_CLASS_NAME)); searchButton.click(); searchButton.click(); } public void landOnRsvPageFromSearchPage() { WebElement addButton = item.findElement(SelectSpace); //WebElement addButton = item.findElement(By.name("Add")); //WebElement addButton =item.findElement(By.cssSelector("[id*='add']")); addButton.click(); WebElement nextButton = item.findElement(By.className(BTN_NEXT_CLASS_NAME)); nextButton.click(); //verify overlapping msg in intermediate page //verifyWarningMsg(overlappingMsg); WebElement submitButton = item.findElement(By.className(SUBMIT_RSV_BTN)); submitButton.click(); String actualUrl = driver.getCurrentUrl(); String rsvId = getRsvIdFromUrl(actualUrl); if(!rsvId.isEmpty()) { GlideRecord rsvGr = new GlideRecord(RESERVATION_TABLE_NAME); if(rsvGr.get(rsvId)) recordCleaner.add(rsvGr); } } public void createRsv() { WebElement submitButton = item.findElement(By.className(SUBMIT_RSV_BTN)); submitButton.click(); String actualUrl = driver.getCurrentUrl(); String rsvId = getRsvIdFromUrl(actualUrl); if(!rsvId.isEmpty()) { GlideRecord rsvGr = new GlideRecord(RESERVATION_TABLE_NAME); if(rsvGr.get(rsvId)) recordCleaner.add(rsvGr); } } public void verifyNoWarningMsgForPrivateRsv() { WebElement alertDiv = item.findElement(By.className(ALERT_WARNING_CLASS_NAME)); Assert.assertNull(alertDiv); } public void verifyWarningMsg(String overlappingMsgText) { System.out.println("start of verifyWarningMsg"); // Find the div element WebElement alertDiv = item.findElement(By.className(ALERT_WARNING_CLASS_NAME)); // Get the text within the div element String alertDivText = alertDiv.getText(); MatcherAssert.assertThat(alertDivText, CoreMatchers.containsString(overlappingMsgText)); System.out.println("end of verifyWarningMsg"); } public void selectFirstValueInDropDown(WebDriver driver) { timers.waitUntilPageLoaded(5); ((JavascriptExecutor) driver).executeScript( "$(\".select2-results-dept-0.select2-result.select2-result-selectable.select2-highlighted\").trigger(\"mousedown\").trigger(\"mouseup\")", ""); timers.waitUntilPageLoaded(5); } }
Editor is loading...