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.library.validation;
017    
018    import org.junit.Test;
019    
020    import edu.samplu.common.SmokeTestBase;
021    
022    /**
023     * @author Kuali Rice Team (rice.collab@kuali.org)
024     */
025    public class DemoLibraryValidationMustOccurConstraintsSmokeTest extends SmokeTestBase {
026    
027        /**
028         * /kr-krad/kradsampleapp?viewId=Demo-MustOccurConstraint-View&methodToCall=start
029         */
030        public static final String BOOKMARK_URL = "/kr-krad/kradsampleapp?viewId=Demo-MustOccurConstraint-View&methodToCall=start";
031    
032        /**
033         *   1-2 of the following must occur: (Field 1A) OR (Field 2A and Field 2B)
034         */
035        private static final String EXAMPLE1_VALIDATION_MESSAGE="  1-2 of the following must occur: (Field 1A) OR (Field 2A and Field 2B)";
036        
037        /**
038         *   The following must occur: (Field 1A) OR (Field 2A and Field 2B)
039         */
040        private static final String EXAMPLE2_VALIDATION_MESSAGE="  The following must occur: (Field 1A) OR (Field 2A and Field 2B)";
041        
042        /**
043         *   1-2 of the following must occur: (Field 1A or Field 1B) OR (Field 2A and Field 2B)
044         */
045        private static final String EXAMPLE3_VALIDATION_MESSAGE="  1-2 of the following must occur: (Field 1A or Field 1B) OR (Field 2A and Field 2B)";
046        
047        /**
048         * //input[@name='inputField4' and @class='uif-textControl dependsOn-inputField1 dependsOn-inputField2 dependsOn-inputField3 dirty error']
049         */
050        private static final String EXAMPLE1_ERROR_XPATH="//input[@name='inputField4' and @class='uif-textControl dependsOn-inputField1 dependsOn-inputField2 dependsOn-inputField3 dirty error']";
051        
052        /**
053         * //input[@name='inputField8' and @class='uif-textControl dependsOn-inputField5 dependsOn-inputField6 dependsOn-inputField7 dirty error']
054         */
055        private static final String EXAMPLE2_ERROR_XPATH="//input[@name='inputField8' and @class='uif-textControl dependsOn-inputField5 dependsOn-inputField6 dependsOn-inputField7 dirty error']";
056        
057        /**
058         * //input[@name='inputField13' and @class='uif-textControl dependsOn-inputField9 dependsOn-inputField10 dependsOn-inputField11 dependsOn-inputField12 dirty error']
059         */
060        private static final String EXAMPLE3_ERROR_XPATH="//input[@name='inputField13' and @class='uif-textControl dependsOn-inputField9 dependsOn-inputField10 dependsOn-inputField11 dependsOn-inputField12 dirty error']";
061     
062        @Override
063        protected String getBookmarkUrl() {
064            return BOOKMARK_URL;
065        }
066    
067        @Override
068        protected void navigate() throws Exception {
069            waitAndClickById("Demo-LibraryLink", "");
070            waitAndClickByLinkText("Validation");
071            waitAndClickByLinkText("Must Occur Constraint");
072        }
073    
074        protected void testValidationMustOccurConstraintsExample1() throws Exception {
075           //Scenario-1
076           waitAndTypeByName("inputField4","a");
077           waitAndTypeByName("inputField1","");
078           assertElementPresentByXpath(EXAMPLE1_ERROR_XPATH);
079           fireMouseOverEventByName("inputField4");
080           assertTextPresent(EXAMPLE1_VALIDATION_MESSAGE);
081           
082           //Scenario-2
083           waitAndTypeByName("inputField1","a");
084           waitAndTypeByName("inputField2","");
085           if(isElementPresentByXpath(EXAMPLE1_ERROR_XPATH)) {
086               fail("Criteria Not Satisfied");
087           }
088           
089           //Scenario-3
090           clearTextByName("inputField1");
091           waitAndTypeByName("inputField2","a");
092           waitAndTypeByName("inputField1","");
093           assertElementPresentByXpath(EXAMPLE1_ERROR_XPATH);
094           fireMouseOverEventByName("inputField4");
095           assertTextPresent(EXAMPLE1_VALIDATION_MESSAGE);
096           
097           //Scenario-4
098           waitAndTypeByName("inputField3","a");
099           waitAndTypeByName("inputField1","");
100           if(isElementPresentByXpath(EXAMPLE1_ERROR_XPATH)) {
101               fail("Criteria Not Satisfied");
102           }
103        }
104        
105        protected void testValidationMustOccurConstraintsExample2() throws Exception {
106            waitAndClickByLinkText("Example 2");
107            
108            //Scenario-1
109            waitAndTypeByName("inputField8","a");
110            waitAndTypeByName("inputField5","");
111            assertElementPresentByXpath(EXAMPLE2_ERROR_XPATH);
112            fireMouseOverEventByName("inputField8");
113            assertTextPresent(EXAMPLE2_VALIDATION_MESSAGE);
114            
115            //Scenario-2
116            waitAndTypeByName("inputField5","a");
117            waitAndTypeByName("inputField6","");
118            if(isElementPresentByXpath(EXAMPLE2_ERROR_XPATH)) {
119                fail("Criteria Not Satisfied");
120            }
121            
122            //Scenario-3
123            clearTextByName("inputField5");
124            waitAndTypeByName("inputField6","a");
125            waitAndTypeByName("inputField5","");
126            assertElementPresentByXpath(EXAMPLE2_ERROR_XPATH);
127            fireMouseOverEventByName("inputField8");
128            assertTextPresent(EXAMPLE2_VALIDATION_MESSAGE);
129            
130            //Scenario-4
131            waitAndTypeByName("inputField7","a");
132            waitAndTypeByName("inputField5","");
133            if (isElementPresentByXpath(EXAMPLE2_ERROR_XPATH)){
134                fail("Criteria Not Satisfied");
135            }
136            
137            //Scenario-5
138            waitAndTypeByName("inputField5","a");
139            waitAndTypeByName("inputField8","a");
140            assertElementPresentByXpath(EXAMPLE2_ERROR_XPATH);
141            fireMouseOverEventByName("inputField8");
142            assertTextPresent(EXAMPLE1_VALIDATION_MESSAGE);
143        }
144    
145        protected void testValidationMustOccurConstraintsExample3() throws Exception {
146            waitAndClickByLinkText("Example 3");
147            
148            //Scenario-1
149            waitAndTypeByName("inputField13","a");
150            waitAndTypeByName("inputField9","");
151            Thread.sleep(1000);
152            assertElementPresentByXpath(EXAMPLE3_ERROR_XPATH);
153            fireMouseOverEventByName("inputField13");
154            assertTextPresent(EXAMPLE3_VALIDATION_MESSAGE);
155            
156            //Scenario-2
157            waitAndTypeByName("inputField9","a");
158            waitAndTypeByName("inputField13","");
159            if (isElementPresentByXpath(EXAMPLE3_ERROR_XPATH)) {
160                fail("Criteria Not Satisfied");
161            }
162            clearTextByName("inputField9");
163            
164            //Scenario-3
165            waitAndTypeByName("inputField10","a");
166            waitAndTypeByName("inputField13","");
167            if (isElementPresentByXpath(EXAMPLE3_ERROR_XPATH)) {
168                fail("Criteria Not Satisfied");
169            }
170            clearTextByName("inputField10");
171            
172            //Scenario-4
173            waitAndTypeByName("inputField11","a");
174            waitAndTypeByName("inputField12","a");
175            waitAndTypeByName("inputField13","");
176            if (isElementPresentByXpath(EXAMPLE3_ERROR_XPATH)) {
177                fail("Criteria Not Satisfied");
178            }
179        }
180        
181    
182        @Test
183        public void testValidationMustOccurConstraintsBookmark() throws Exception {
184            testValidationMustOccurConstraintsExample1();
185            testValidationMustOccurConstraintsExample2();
186            testValidationMustOccurConstraintsExample3();
187            passed();
188        }
189    
190        @Test
191        public void testValidationMustOccurConstraintsNav() throws Exception {
192            testValidationMustOccurConstraintsExample1();
193            testValidationMustOccurConstraintsExample2();
194            testValidationMustOccurConstraintsExample3();
195            passed();
196        }
197    }