001 /** 002 * Copyright 2005-2014 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.sampleu.krad.validationmessagesview; 017 018 import org.junit.Test; 019 import org.kuali.rice.testtools.selenium.WebDriverLegacyITBase; 020 021 /** 022 * Tests the Component section in Rice. 023 * 024 * @author Kuali Rice Team (rice.collab@kuali.org) 025 */ 026 public class ServerSideTestViewAft extends WebDriverLegacyITBase { 027 028 /** 029 * "/kr-krad/uicomponents?viewId=UifCompView&methodToCall=start&readOnlyFields=field91"; 030 */ 031 public static final String BOOKMARK_URL = "/kr-krad/uicomponents?viewId=Demo-ValidationServerSide&methodToCall=start"; 032 033 private static final String ERROR_ELEMENT_XPATH="//div[@class='uif-inputField uif-boxLayoutVerticalItem clearfix uif-hasError']"; 034 035 @Override 036 protected String getBookmarkUrl() { 037 return BOOKMARK_URL; 038 } 039 040 protected void navigate() throws InterruptedException { 041 waitAndClickKRAD(); 042 waitAndClickByLinkText("ServerSide Constraint Validation Demo"); 043 switchToWindow("Kuali :: Validation Server-side Test View"); 044 } 045 046 //Code for KRAD Test Package. 047 protected void testServerSideTestView() throws Exception { 048 049 //MinMax length and value and Required Constraint 050 waitAndTypeByName("field9","a"); 051 waitAndTypeByName("field10","1"); 052 waitAndClickByXpath("//button[@id='usave']"); 053 waitForTextPresent("MinMax Length test: Must be between 2 and 5 characters long"); 054 assertTextPresent("MinMax Value test: Value must be greater than 2 and no more than 50"); 055 assertTextPresent(new String[]{"Required constraint", "4 errors"}); 056 assertElementPresentByXpath("//div[@class='uif-inputField uif-boxLayoutHorizontalItem uif-hasError']"); 057 fireMouseOverEventByName("field3"); 058 waitForTextPresent("Field Label is a required field."); 059 fireMouseOverEventByName("field4"); 060 waitForTextPresent("Radio is a required field."); 061 fireMouseOverEventByName("field5"); 062 waitForTextPresent("Select is a required field."); 063 064 //PreRequisite constraint 065 // waitForElementPresentByXpath("//input[@name='field7' and @disabled]"); 066 // waitAndClickByXpath("//input[@type='checkbox' and @name='booleanField']"); 067 // if(isElementPresentByXpath("//input[@name='field7' and @disabled]")) { 068 // fail("PreRequisite Constraint isn't working !"); 069 // } 070 071 //MustOccurs constraint 072 waitAndTypeByName("field14","a"); 073 waitAndClickByXpath("//button[@id='usave']"); 074 Thread.sleep(4000); 075 076 //Case constraint 077 waitAndClickByXpath("//input[@name='field24' and @value='case1']"); 078 waitAndClickByXpath("//button[@id='usave']"); 079 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field25']"); 080 waitAndClickByXpath("//input[@name='field24' and @value='case2']"); 081 waitAndClickByXpath("//button[@id='usave']"); 082 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field25']"); 083 waitAndTypeByName("field25","123@#"); 084 waitAndClickByXpath("//button[@id='usave']"); 085 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field25']"); 086 fireMouseOverEventByName("field25"); 087 waitForTextPresent(" Can only be alphanumeric characters"); 088 waitAndTypeByName("field26","1234"); 089 waitAndClickByXpath("//input[@name='field24' and @value='case3']"); 090 waitAndClickByXpath("//button[@id='usave']"); 091 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field26']"); 092 fireMouseOverEventByName("field26"); 093 waitForTextPresent(" Value cannot be greater than 500"); 094 waitForTextPresent(" Must be at most 3 characters"); 095 waitAndTypeByName("field31","as"); 096 waitAndTypeByName("field32","asd"); 097 waitAndClickByXpath("//button[@id='usave']"); 098 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field33']"); 099 100 //All remaining constraint 101 waitAndTypeByName("field50","1111.111"); 102 waitAndTypeByName("field51","#1L"); 103 waitAndTypeByName("field77","1.1"); 104 waitAndTypeByName("field52","asdfasdf"); 105 waitAndTypeByName("field53","deep"); 106 waitAndTypeByName("field54","aad.@c"); 107 waitAndTypeByName("field84","www.kuali.org"); 108 waitAndTypeByName("field55","asd"); 109 waitAndTypeByName("field75","2014-04-04"); 110 waitAndTypeByName("field82","13"); 111 waitAndTypeByName("field83","24"); 112 waitAndTypeByName("field57","1599"); 113 waitAndTypeByName("field58","0"); 114 waitAndTypeByName("field61","360001"); 115 waitAndTypeByName("field62","@#"); 116 waitAndTypeByName("field63","@/"); 117 waitAndTypeByName("field64","@#12"); 118 waitAndTypeByName("field65","a s"); 119 waitAndTypeByName("field66","d"); 120 waitAndTypeByName("field67","asd"); 121 waitAndTypeByName("field68","1.a"); 122 waitAndClickByXpath("//button[@id='usave']"); 123 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field50']"); 124 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field51']"); 125 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field77']"); 126 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field52']"); 127 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field53']"); 128 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field54']"); 129 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field84']"); 130 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field55']"); 131 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field75']"); 132 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field82']"); 133 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field83']"); 134 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field57']"); 135 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field58']"); 136 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field61']"); 137 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field62']"); 138 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field63']"); 139 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field64']"); 140 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field65']"); 141 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field66']"); 142 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field67']"); 143 waitForElementPresentByXpath(ERROR_ELEMENT_XPATH+"/input[@name='field68']"); 144 145 } 146 147 @Test 148 public void testServerSideTestViewBookmark() throws Exception { 149 testServerSideTestView(); 150 passed(); 151 } 152 153 @Test 154 public void testServerSideTestViewNav() throws Exception { 155 testServerSideTestView(); 156 passed(); 157 } 158 }