001 /**
002 * Copyright 2005-2013 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 */
016 package edu.samplu.krad.demo.uif.library;
017
018 import com.thoughtworks.selenium.SeleneseTestBase;
019 import org.junit.Test;
020 import org.openqa.selenium.By;
021
022 import static org.junit.Assert.assertTrue;
023
024 /**
025 * @author Kuali Rice Team (rice.collab@kuali.org)
026 */
027 public class DemoLibraryElementsActionSmokeTest extends DemoLibraryBase {
028
029 /**
030 * /kr-krad/kradsampleapp?viewId=Demo-Action-View&methodToCall=start
031 */
032 public static final String BOOKMARK_URL = "/kr-krad/kradsampleapp?viewId=Demo-Action-View&methodToCall=start";
033
034 @Override
035 public String getBookmarkUrl() {
036 return BOOKMARK_URL;
037 }
038
039 @Override
040 protected void navigate() throws Exception {
041 waitAndClickById("Demo-LibraryLink", "");
042 waitAndClickByLinkText("Elements");
043 waitAndClickByLinkText("Action");
044 }
045
046 protected void testActionDefault() throws Exception {
047 waitForElementPresentByClassName("uif-headerText-span");
048 assertTextPresent("Default");
049 SeleneseTestBase.assertTrue(getTextByClassName("uif-instructionalMessage").contains(
050 "Action with action script"));
051 assertElementPresentByLinkText("Action Link");
052 }
053
054 protected void testActionPresubmit() throws Exception {
055 waitAndClickByLinkText("Presubmit");
056 waitForElementPresentByClassName("uif-headerText-span");
057 assertTextPresent("Presubmit");
058 assertTextPresent("ActionLinkField with presubmit script");
059 assertElementPresentByLinkText("Pre submit returning true Link");
060 assertElementPresentByLinkText("Pre submit returning false Link");
061
062 waitAndClickByLinkText("Pre submit returning true Link");
063 assertTrue(driver.switchTo().alert().getText().contains("Pre submit call was invoked, returning true"));
064 driver.switchTo().alert().accept();
065
066 waitAndClickByLinkText("Pre submit returning false Link");
067 assertTrue(driver.switchTo().alert().getText().contains("Pre submit call was invoked, returning false"));
068 driver.switchTo().alert().accept();
069 }
070
071 protected void testActionSuccessCallback() throws Exception {
072 waitAndClickByLinkText("Success Callback");
073 waitForElementPresentByClassName("uif-headerText-span");
074 assertTextPresent("Action Field with a success callback script");
075 assertElementPresentByLinkText("Action Link success callback");
076
077 waitAndClickByLinkText("Action Link success callback");
078 assertTrue(driver.switchTo().alert().getText().contains("Refresh called successfully"));
079 driver.switchTo().alert().accept();
080 }
081
082 protected void testActionValidation() throws Exception {
083 waitForElementPresentByClassName("uif-page"); // make sure the page is there before we use the driver
084 driver.findElement(By.className("uif-page")).findElement(By.linkText("Validation")).click();
085
086 waitForElementPresentByClassName("uif-headerText-span");
087 assertTextPresent("Action Field with client side validation");
088 assertTextPresent("InputField 1");
089 assertTextNotPresent("InputField 1: Required"); // no validation error yet
090
091 waitAndClickByLinkText("Action Link with clientside validation");
092 assertTextPresent("InputField 1: Required"); // now we have a validation error
093
094 waitAndTypeByName("inputField1", "some text");
095 waitAndClickByLinkText("Action Link with clientside validation");
096 assertTextNotPresent("InputField 1: Required"); // now the error goes away
097 }
098
099 protected void testActionImages() throws Exception {
100 waitAndClickByLinkText("Images");
101 waitForElementPresentByClassName("uif-headerText-span");
102 assertTextPresent("Images");
103 assertTextPresent("Action Field with images");
104
105 driver.findElement(By.partialLinkText("Action Link with left image")).findElement(By.className(
106 "leftActionImage"));
107 driver.findElement(By.partialLinkText("Action Link with right image")).findElement(By.className(
108 "rightActionImage"));
109 }
110
111 protected void testActionButton() throws Exception {
112 waitAndClickByLinkText("Buttons");
113 waitForElementPresentByClassName("prettyprint");
114 assertTextPresent("Buttons");
115 assertTextPresent("Action Field buttons");
116
117 waitAndClickButtonByText("button");
118 assertTrue(driver.switchTo().alert().getText().contains("You clicked a button"));
119 driver.switchTo().alert().accept();
120
121 waitAndClickButtonByText("Image BOTTOM");
122 assertTrue(driver.switchTo().alert().getText().contains("You clicked a button"));
123 driver.switchTo().alert().accept();
124
125 waitAndClickById("ST-DemoButtonImageTop");
126 assertTrue(driver.switchTo().alert().getText().contains("You clicked a button"));
127 driver.switchTo().alert().accept();
128
129 driver.findElement(By.xpath("//span[contains(text(),'Image LEFT')]"));
130 driver.findElement(By.id("ST-DemoButtonImageLeft")).click();
131 assertTrue(driver.switchTo().alert().getText().contains("You clicked a button"));
132 driver.switchTo().alert().accept();
133
134 driver.findElement(By.id("ST-DemoButtonImageRight")).click();
135 assertTrue(driver.switchTo().alert().getText().contains("You clicked a button"));
136 driver.switchTo().alert().accept();
137
138 driver.findElement(By.id("ST-DemoButtonImageOnly")).click();
139 assertTrue(driver.switchTo().alert().getText().contains("You clicked a button"));
140 driver.switchTo().alert().accept();
141
142 driver.findElement(By.xpath("//button[contains(text(),'Disabled Button') and @disabled]/preceding-sibling::button/img"));
143 driver.findElement(By.xpath("//button/img[contains(@alt,'Image Only button')]"));
144
145 driver.findElement(By.xpath("//button[contains(text(),'Disabled Button') and @disabled]"));
146 }
147
148 private void testAllActionTabs() throws Exception {
149 testActionDefault();
150 testActionPresubmit();
151 testActionSuccessCallback();
152 testActionValidation();
153 testActionImages();
154 testActionButton();
155 }
156
157 @Test
158 public void testActionButtonBookmark() throws Exception {
159 testActionButton();
160 passed();
161 }
162
163 @Test
164 public void testActionButtonNav() throws Exception {
165 testActionButton();
166 passed();
167 }
168
169 @Test
170 public void testActionBookmark() throws Exception {
171 testAllActionTabs();
172 passed();
173 }
174
175 @Test
176 public void testActionNav() throws Exception {
177 testAllActionTabs();
178 passed();
179 }
180 }