001/** 002 * Copyright 2005-2016 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package edu.sampleu.krad.configview; 017 018import org.kuali.rice.testtools.common.JiraAwareFailable; 019import org.kuali.rice.testtools.selenium.WebDriverLegacyITBase; 020import org.openqa.selenium.By; 021import org.openqa.selenium.WebElement; 022 023import java.util.List; 024 025/** 026 * Tests the Component section in Rice. 027 * 028 * @author Kuali Rice Team (rice.collab@kuali.org) 029 */ 030public abstract class ConfigurationTestViewAftBase extends WebDriverLegacyITBase { 031 032 /** 033 * "/kr-krad/configuration-test-view-uif-controller?viewId=ConfigurationTestView&methodToCall=start"; 034 */ 035 public static final String BOOKMARK_URL = "/kr-krad/configuration-test-view-uif-controller?viewId=ConfigurationTestView&methodToCall=start"; 036 037 /** bean id prefix in used in view */ 038 private String idPrefix = "ConfigurationTestView-ProgressiveRender-"; 039 040 /** bean id suffix for add line controls */ 041 String addLineIdSuffix = "InputField_add_control"; 042 043 044 @Override 045 protected String getBookmarkUrl() { 046 return BOOKMARK_URL; 047 } 048 049 protected void navigation() throws InterruptedException { 050 waitAndClickKRAD(); 051 waitAndClickByXpath("(//a[text()='Configuration Test View'])"); 052 switchToWindow(CONFIGURATION_VIEW_WINDOW_TITLE); 053 waitForTitleToEqualKualiPortalIndex(); 054 } 055 056 protected void testConfigurationTestViewNav(JiraAwareFailable failable) throws Exception { 057 navigation(); 058 testConfigurationTestView(idPrefix); 059 testAddLineWithSpecificTime(idPrefix, addLineIdSuffix); 060 testAddLineWithAllDay(idPrefix, addLineIdSuffix); 061 testAddLineAllDay(idPrefix, addLineIdSuffix); 062 testInitialColumnSorting(idPrefix); 063 passed(); 064 } 065 066 protected void testConfigurationTestViewBookmark(JiraAwareFailable failable) throws Exception { 067 testConfigurationTestView(idPrefix); 068 testAddLineWithSpecificTime(idPrefix, addLineIdSuffix); 069 testAddLineWithAllDay(idPrefix, addLineIdSuffix); 070 testAddLineAllDay(idPrefix, addLineIdSuffix); 071 testInitialColumnSorting(idPrefix); 072 passed(); 073 } 074 075 protected void testAddLineWithSpecificTime(String idPrefix, String addLineIdSuffix) throws Exception { 076 waitForElementPresentByXpath("//label[@id='" + idPrefix + "TextInputField_label']"); 077 confirmAddLineControlsPresent(idPrefix, addLineIdSuffix); 078 String startTimeId = "//*[@id='" + idPrefix + "StartTime" + addLineIdSuffix + "']"; 079 String inputTime = "7:06"; 080 waitAndTypeByXpath(startTimeId, inputTime); 081 String amPmSelectLocator = "//*[@id='" + idPrefix + "StartTimeAmPm" + addLineIdSuffix + "']"; 082 selectByXpath(amPmSelectLocator, "PM"); 083 assertEquals("PM", waitAndGetAttributeByXpath(amPmSelectLocator, "value")); 084 Thread.sleep(5000); //allow for ajax refresh 085 waitAndClickButtonByText("Add"); 086 Thread.sleep(5000); //allow for line to be added 087 088 //confirm that line has been added 089 assertTrue("line (//input[@value='7:06'])is not present", isElementPresentByXpath("//input[@value='7:06']")); 090 } 091 092 protected void testAddLineWithAllDay(String idPrefix, String addLineIdSuffix) throws Exception { 093 waitForElementPresentByXpath("//label[@id='" + idPrefix + "TextInputField_label']"); 094 confirmAddLineControlsPresent(idPrefix, addLineIdSuffix); 095 String startTimeId = "//*[@id='" + idPrefix + "StartTime" + addLineIdSuffix + "']"; 096 String inputTime = "5:20"; 097 waitAndTypeByXpath(startTimeId, inputTime); 098 String allDayId = "//*[@id='" + idPrefix + "AllDay" + addLineIdSuffix + "']"; 099 waitAndClickByXpath(allDayId); 100 checkForIncidentReport(); 101 Thread.sleep(5000); //allow for ajax refresh 102 waitAndClickButtonByText("Add"); 103 Thread.sleep(5000); //allow for line to be added 104 105 //confirm that line has been added 106 assertTrue("line (//input[@checked='checked'])is not present", isElementPresentByXpath("//input[@checked='checked']")); 107 } 108 109 protected void testAddLineAllDay(String idPrefix, String addLineIdSuffix) throws Exception { 110 waitForElementPresentByXpath("//label[@id='" + idPrefix + "TextInputField_label']"); 111 confirmAddLineControlsPresent(idPrefix, addLineIdSuffix); 112 String allDayId = "//*[@id='" + idPrefix + "AllDay" + addLineIdSuffix + "']"; 113 waitAndClickByXpath(allDayId); 114 checkForIncidentReport(); 115 Thread.sleep(5000); //allow for ajax refresh 116 waitAndClickButtonByText("Add"); 117 Thread.sleep(5000); //allow for line to be added 118 119 //confirm that another line has been added (by checking the number of delete buttons) 120 WebElement table = findElement(By.id("ConfigurationTestView-ProgressiveRender-TimeInfoSection_disclosureContent")); 121 List<WebElement> columns = findElements(By.xpath("//button[contains(text(), 'Delete')]"), table); 122 assertEquals("line was not added", 3, columns.size()); 123 124 } 125 126 protected void testInitialColumnSorting(String idPrefix) throws Exception { 127 waitForElementPresentByXpath("//section[@id = '" + idPrefix + "DayEventSection']"); 128 129 // confirm that the table is sorted by the second column 130 waitForElementPresentByXpath("//section[@id = '" + idPrefix + "DayEventSection']//table/tbody/tr[1]/td[2]//span[contains(text(), '10/01/2010')]"); 131 waitForElementPresentByXpath("//section[@id = '" + idPrefix + "DayEventSection']//table/tbody/tr[2]/td[2]//span[contains(text(), '10/02/2010')]"); 132 waitForElementPresentByXpath("//section[@id = '" + idPrefix + "DayEventSection']//table/tbody/tr[3]/td[2]//span[contains(text(), '10/03/2010')]"); 133 waitForElementPresentByXpath("//section[@id = '" + idPrefix + "DayEventSection']//table/tbody/tr[4]/td[2]//span[contains(text(), '10/04/2010')]"); 134 waitForElementPresentByXpath("//section[@id = '" + idPrefix + "DayEventSection']//table/tbody/tr[5]/td[2]//span[contains(text(), '10/05/2010')]"); 135 } 136 137 /** 138 * verify that add line controls are present 139 */ 140 protected void confirmAddLineControlsPresent(String idPrefix, String addLineIdSuffix) { 141 String[] addLineIds = {"StartTime", "StartTimeAmPm", "AllDay"}; 142 143 for (String id : addLineIds) { 144 String tagId = "//*[@id='" + idPrefix + id + addLineIdSuffix + "']"; 145 assertTrue("Did not find id " + tagId, isElementPresentByXpath(tagId)); 146 } 147 } 148 149}