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 */
016package edu.samplu.krad.demo.uif.library;
017
018import com.thoughtworks.selenium.SeleneseTestBase;
019import org.junit.Test;
020import org.openqa.selenium.By;
021import org.openqa.selenium.Keys;
022import org.openqa.selenium.WebElement;
023
024/**
025 * @author Kuali Rice Team (rice.collab@kuali.org)
026 */
027public class DemoLibraryControlCheckboxDefaultSmokeTest extends DemoLibraryBase {
028
029    /**
030     * /kr-krad/kradsampleapp?viewId=ComponentLibraryHome
031     */
032    public static final String BOOKMARK_URL = "/kr-krad/kradsampleapp?viewId=Demo-CheckboxControl-View";
033
034    @Override
035    public String getBookmarkUrl() {
036        return BOOKMARK_URL;
037    }
038
039    @Override
040    protected void navigate() throws Exception {
041        navigateToExample("Demo-CheckboxControl-Example1");
042    }
043
044    protected void testCheckboxControlDefault() throws Exception {
045        waitForElementPresentById("ST-DemoCheckboxControlExample1-Input1_control");
046        assertTextPresent("Default Checkbox Control");
047        assertLabelFor("ST-DemoCheckboxControlExample1-Input1_control", "Add me to your mailing list");
048        SeleneseTestBase.assertTrue(isVisibleById("ST-DemoCheckboxControlExample1-Input1_control"));
049        SeleneseTestBase.assertTrue(isEnabledById("ST-DemoCheckboxControlExample1-Input1_control"));
050        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample1-Input1_control"));
051        checkById("ST-DemoCheckboxControlExample1-Input1_control");
052        SeleneseTestBase.assertTrue(isCheckedById("ST-DemoCheckboxControlExample1-Input1_control"));
053    }
054
055
056    @Test
057    public void testCheckboxControlDefaultBookmark() throws Exception {
058        testCheckboxControlDefault();
059        passed();
060    }
061
062    @Test
063    public void testCheckboxControlDefaultNav() throws Exception {
064        navigateToLibraryDemo("Controls", "Checkbox");
065        testCheckboxControlDefault();
066        passed();
067    }
068
069    protected void testCheckboxControlOptionsFinder() throws Exception {
070        navigateToExample("Demo-CheckboxControl-Example2");
071
072        waitForElementPresentById("ST-DemoCheckboxControlExample2-Input1_control_0");
073        waitForElementPresentById("ST-DemoCheckboxControlExample2-Input1_control_1");
074        waitForElementPresentById("ST-DemoCheckboxControlExample2-Input1_control_2");
075        waitForElementPresentById("ST-DemoCheckboxControlExample2-Input1_control_3");
076        waitForElementPresentById("ST-DemoCheckboxControlExample2-Input1_control_4");
077        assertTextPresent("CheckboxControl with optionsFinder set");
078        assertLabelFor("ST-DemoCheckboxControlExample2-Input1_control_0", "Option 1");
079        assertLabelFor("ST-DemoCheckboxControlExample2-Input1_control_1", "Option 2");
080        assertLabelFor("ST-DemoCheckboxControlExample2-Input1_control_2", "Option 3");
081        assertLabelFor("ST-DemoCheckboxControlExample2-Input1_control_3", "Option 4");
082        assertLabelFor("ST-DemoCheckboxControlExample2-Input1_control_4", "Option 5");
083
084        // check that checkbox controls are enabled and visible but not selected
085        SeleneseTestBase.assertTrue(isVisibleById("ST-DemoCheckboxControlExample2-Input1_control_0"));
086        SeleneseTestBase.assertTrue(isVisibleById("ST-DemoCheckboxControlExample2-Input1_control_1"));
087        SeleneseTestBase.assertTrue(isVisibleById("ST-DemoCheckboxControlExample2-Input1_control_2"));
088        SeleneseTestBase.assertTrue(isVisibleById("ST-DemoCheckboxControlExample2-Input1_control_3"));
089        SeleneseTestBase.assertTrue(isVisibleById("ST-DemoCheckboxControlExample2-Input1_control_4"));
090        SeleneseTestBase.assertTrue(isEnabledById("ST-DemoCheckboxControlExample2-Input1_control_0"));
091        SeleneseTestBase.assertTrue(isEnabledById("ST-DemoCheckboxControlExample2-Input1_control_1"));
092        SeleneseTestBase.assertTrue(isEnabledById("ST-DemoCheckboxControlExample2-Input1_control_2"));
093        SeleneseTestBase.assertTrue(isEnabledById("ST-DemoCheckboxControlExample2-Input1_control_3"));
094        SeleneseTestBase.assertTrue(isEnabledById("ST-DemoCheckboxControlExample2-Input1_control_4"));
095        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample2-Input1_control_0"));
096        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample2-Input1_control_1"));
097        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample2-Input1_control_2"));
098        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample2-Input1_control_3"));
099        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample2-Input1_control_4"));
100
101        // set check mark on second checkbox control
102       checkById("ST-DemoCheckboxControlExample2-Input1_control_1");
103
104        // check that only second checkbox controls is selected
105        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample2-Input1_control_0"));
106        SeleneseTestBase.assertTrue(isCheckedById("ST-DemoCheckboxControlExample2-Input1_control_1"));
107        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample2-Input1_control_2"));
108        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample2-Input1_control_3"));
109        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample2-Input1_control_4"));
110    }
111
112
113    @Test
114    public void testCheckboxControlOptionsFinderBookmark() throws Exception {
115        testCheckboxControlOptionsFinder();
116        passed();
117    }
118
119    @Test
120    public void testCheckboxControlOptionsFinderNav() throws Exception {
121        navigateToLibraryDemo("Controls", "Checkbox");
122        testCheckboxControlOptionsFinder();
123        passed();
124    }
125
126    protected void testCheckboxControlKeyValuePair() throws Exception {
127        navigateToExample("Demo-CheckboxControl-Example3");
128
129        waitForElementPresentById("ST-DemoCheckboxControlExample3-Input1_control_0");
130        waitForElementPresentById("ST-DemoCheckboxControlExample3-Input1_control_1");
131        assertTextPresent("CheckboxControl with key value set as options");
132        assertTextPresent("CheckboxGroupControl");
133        assertLabelFor("ST-DemoCheckboxControlExample3-Input1_control_0", "Check 1");
134        assertLabelFor("ST-DemoCheckboxControlExample3-Input1_control_1", "Check 2");
135
136        // check that fieldset is vertical
137        WebElement we = driver.findElement(By.id("ST-DemoCheckboxControlExample3-Input1_fieldset"));
138        SeleneseTestBase.assertTrue(we.getAttribute("class").matches(".*\\buif-verticalCheckboxesFieldset\\b.*"));
139
140        // check that checkbox controls are enabled and visible but not selected
141        SeleneseTestBase.assertTrue(isVisibleById("ST-DemoCheckboxControlExample3-Input1_control_0"));
142        SeleneseTestBase.assertTrue(isVisibleById("ST-DemoCheckboxControlExample3-Input1_control_1"));
143        SeleneseTestBase.assertTrue(isEnabledById("ST-DemoCheckboxControlExample3-Input1_control_0"));
144        SeleneseTestBase.assertTrue(isEnabledById("ST-DemoCheckboxControlExample3-Input1_control_1"));
145        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample3-Input1_control_0"));
146        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample3-Input1_control_1"));
147
148        // set check mark on second checkbox control
149        checkById("ST-DemoCheckboxControlExample3-Input1_control_1");
150
151        // check that only second checkbox controls is selected
152        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample3-Input1_control_0"));
153        SeleneseTestBase.assertTrue(isCheckedById("ST-DemoCheckboxControlExample3-Input1_control_1"));
154    }
155
156
157    @Test
158    public void testCheckboxControlKeyValuePairBookmark() throws Exception {
159        testCheckboxControlOptionsFinder();
160        passed();
161    }
162
163    @Test
164    public void testCheckboxControlKeyValuePairNav() throws Exception {
165        navigateToLibraryDemo("Controls", "Checkbox");
166        testCheckboxControlKeyValuePair();
167        passed();
168    }
169
170    protected void testCheckboxControlDisabled() throws Exception {
171        navigateToExample("Demo-CheckboxControl-Example4");
172
173        waitForElementPresentById("ST-DemoCheckboxControlExample4-Input1_control");
174        assertTextPresent("CheckboxControl with disabled set to true");
175        assertLabelFor("ST-DemoCheckboxControlExample4-Input1_control", "Add me to your mailing list");
176
177        // check that checkbox controls is visible, not selected and disabled
178        SeleneseTestBase.assertTrue(isVisibleById("ST-DemoCheckboxControlExample4-Input1_control"));
179        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample4-Input1_control"));
180        SeleneseTestBase.assertFalse(isEnabledById("ST-DemoCheckboxControlExample4-Input1_control"));
181    }
182
183
184    @Test
185    public void testCheckboxControlDisabledBookmark() throws Exception {
186        testCheckboxControlDisabled();
187        passed();
188    }
189
190    @Test
191    public void testCheckboxControlDisabledNav() throws Exception {
192        navigateToLibraryDemo("Controls", "Checkbox");
193        testCheckboxControlDisabled();
194        passed();
195    }
196
197    protected void testCheckboxControlDelimiter() throws Exception {
198        navigateToExample("Demo-CheckboxControl-Example6");
199
200        waitForElementPresentById("ST-DemoCheckboxControlExample6-Input1_control_0");
201        waitForElementPresentById("ST-DemoCheckboxControlExample6-Input1_control_1");
202        assertTextPresent("HorizontalCheckboxesControl with delimiter set to ;");
203        assertLabelFor("ST-DemoCheckboxControlExample6-Input1_control_0", "Check 1");
204        assertLabelFor("ST-DemoCheckboxControlExample6-Input1_control_1", "Check 2");
205
206        // check that fieldset is horizonal
207        WebElement we = driver.findElement(By.id("ST-DemoCheckboxControlExample6-Input1_fieldset"));
208        SeleneseTestBase.assertTrue(we.getAttribute("class").matches(".*\\buif-horizontalCheckboxesFieldset\\b.*"));
209
210        // check that checkbox controls are enabled and visible but not selected
211        SeleneseTestBase.assertTrue(isVisibleById("ST-DemoCheckboxControlExample6-Input1_control_0"));
212        SeleneseTestBase.assertTrue(isVisibleById("ST-DemoCheckboxControlExample6-Input1_control_1"));
213        SeleneseTestBase.assertTrue(isEnabledById("ST-DemoCheckboxControlExample6-Input1_control_0"));
214        SeleneseTestBase.assertTrue(isEnabledById("ST-DemoCheckboxControlExample6-Input1_control_1"));
215        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample6-Input1_control_0"));
216        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample6-Input1_control_1"));
217
218        // set check mark on second checkbox control
219        checkById("ST-DemoCheckboxControlExample6-Input1_control_1");
220
221        // check that only second checkbox controls is selected
222        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample6-Input1_control_0"));
223        SeleneseTestBase.assertTrue(isCheckedById("ST-DemoCheckboxControlExample6-Input1_control_1"));
224    }
225
226    @Test
227    public void testCheckboxControlDelimiterBookmark() throws Exception {
228        testCheckboxControlDelimiter();
229        passed();
230    }
231
232    @Test
233    public void testCheckboxControlDelimiterNav() throws Exception {
234        navigateToLibraryDemo("Controls", "Checkbox");
235        testCheckboxControlDelimiter();
236        passed();
237    }
238
239    protected void testCheckboxControlDisabledOnKeyEvent() throws Exception {
240        navigateToExample("Demo-CheckboxControl-Example7");
241
242        waitForElementPresentById("ST-DemoCheckboxControlExample7-Input1_control");
243        waitForElementPresentById("ST-DemoCheckboxControlExample7-Input2_control");
244        assertTextPresent("Evaluate the disable condition on controls which disable it on each key up event");
245
246        // check that checkbox controls is visible, not selected and enabled
247        SeleneseTestBase.assertTrue(isVisibleById("ST-DemoCheckboxControlExample7-Input2_control"));
248        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample7-Input2_control"));
249        SeleneseTestBase.assertTrue(isEnabledById("ST-DemoCheckboxControlExample7-Input2_control"));
250
251        // backspace input1
252        driver.findElement(By.id("ST-DemoCheckboxControlExample7-Input1_control")).sendKeys(Keys.BACK_SPACE);
253
254        // check that checkbox controls is visible, not selected and disabled
255        SeleneseTestBase.assertTrue(isVisibleById("ST-DemoCheckboxControlExample7-Input2_control"));
256        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample7-Input2_control"));
257        SeleneseTestBase.assertFalse(isEnabledById("ST-DemoCheckboxControlExample7-Input2_control"));
258    }
259
260
261    @Test
262    public void testCheckboxControlDisabledOnKeyEventBookmark() throws Exception {
263        testCheckboxControlDisabledOnKeyEvent();
264        passed();
265    }
266
267    @Test
268    public void testCheckboxControlDisabledOnKeyEventNav() throws Exception {
269        navigateToLibraryDemo("Controls", "Checkbox");
270        testCheckboxControlDisabledOnKeyEvent();
271        passed();
272    }
273
274    protected void testCheckboxControlEnableWhenChanged() throws Exception {
275        navigateToExample("Demo-CheckboxControl-Example8");
276
277        waitForElementPresentById("ST-DemoCheckboxControlExample8-Input1_control");
278        waitForElementPresentById("ST-DemoCheckboxControlExample8-Input2_control");
279        assertTextPresent("Specifies the property names of fields that when changed, will enable this component");
280
281        // check that checkbox controls is visible, not selected and disabled
282        SeleneseTestBase.assertTrue(isVisibleById("ST-DemoCheckboxControlExample8-Input2_control"));
283        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample8-Input2_control"));
284        SeleneseTestBase.assertFalse(isEnabledById("ST-DemoCheckboxControlExample8-Input2_control"));
285
286        // backspace input1 and remove focus from input1 (by doing an arrow down on the div)
287        driver.findElement(By.id("ST-DemoCheckboxControlExample8-Input1_control")).sendKeys(Keys.BACK_SPACE);
288        driver.findElement(By.id("Demo-CheckboxControl-Example8")).sendKeys(Keys.ARROW_DOWN);
289
290        // check that checkbox controls is visible, not selected and disabled
291        SeleneseTestBase.assertTrue(isVisibleById("ST-DemoCheckboxControlExample8-Input2_control"));
292        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample8-Input2_control"));
293        SeleneseTestBase.assertFalse(isEnabledById("ST-DemoCheckboxControlExample8-Input2_control"));
294
295        // type "Hello" in input1 and remove focus from input1 (by doing an arrow down on the div)
296        driver.findElement(By.id("ST-DemoCheckboxControlExample8-Input1_control")).sendKeys("Hello");
297        driver.findElement(By.id("Demo-CheckboxControl-Example8")).sendKeys(Keys.ARROW_DOWN);
298
299        // check that checkbox controls is visible, not selected and enabled
300        SeleneseTestBase.assertTrue(isVisibleById("ST-DemoCheckboxControlExample8-Input2_control"));
301        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample8-Input2_control"));
302        SeleneseTestBase.assertTrue(isEnabledById("ST-DemoCheckboxControlExample8-Input2_control"));
303    }
304
305    @Test
306    public void testCheckboxControlEnableWhenChangedBookmark() throws Exception {
307        testCheckboxControlEnableWhenChanged();
308        passed();
309    }
310
311    @Test
312    public void testCheckboxControlEnableWhenChangedNav() throws Exception {
313        navigateToLibraryDemo("Controls", "Checkbox");
314        testCheckboxControlEnableWhenChanged();
315        passed();
316    }
317
318    protected void testCheckboxControlDisableWhenChanged() throws Exception {
319        navigateToExample("Demo-CheckboxControl-Example9");
320
321        waitForElementPresentById("ST-DemoCheckboxControlExample9-Input1_control");
322        waitForElementPresentById("ST-DemoCheckboxControlExample9-Input2_control");
323        assertTextPresent("Specifies the property names of fields that when changed, will disable this component");
324
325        // check that checkbox controls is visible, not selected and enabled
326        SeleneseTestBase.assertTrue(isVisibleById("ST-DemoCheckboxControlExample9-Input2_control"));
327        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample9-Input2_control"));
328        SeleneseTestBase.assertTrue(isEnabledById("ST-DemoCheckboxControlExample9-Input2_control"));
329
330        // backspace input1 and remove focus from input1 (by doing an arrow down on the checkbox)
331        driver.findElement(By.id("ST-DemoCheckboxControlExample9-Input1_control")).sendKeys(Keys.BACK_SPACE);
332        driver.findElement(By.id("Demo-CheckboxControl-Example9")).sendKeys(Keys.ARROW_DOWN);
333
334        // check that checkbox controls is visible, not selected and enabled
335        SeleneseTestBase.assertTrue(isVisibleById("ST-DemoCheckboxControlExample9-Input2_control"));
336        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample9-Input2_control"));
337        SeleneseTestBase.assertTrue(isEnabledById("ST-DemoCheckboxControlExample9-Input2_control"));
338
339        // type "Hello" in input1 and remove focus from input1 (by doing an arrow down on the checkbox)
340        driver.findElement(By.id("ST-DemoCheckboxControlExample9-Input1_control")).sendKeys("Hello");
341        driver.findElement(By.id("Demo-CheckboxControl-Example9")).sendKeys(Keys.ARROW_DOWN);
342
343        // check that checkbox controls is visible, not selected and disabled
344        SeleneseTestBase.assertTrue(isVisibleById("ST-DemoCheckboxControlExample9-Input2_control"));
345        SeleneseTestBase.assertFalse(isCheckedById("ST-DemoCheckboxControlExample9-Input2_control"));
346        SeleneseTestBase.assertFalse(isEnabledById("ST-DemoCheckboxControlExample9-Input2_control"));
347    }
348
349    @Test
350    public void testCheckboxControlDisableWhenChangedBookmark() throws Exception {
351        testCheckboxControlDisableWhenChanged();
352        passed();
353    }
354
355    @Test
356    public void testCheckboxControlDisableWhenChangedNav() throws Exception {
357        navigateToLibraryDemo("Controls", "Checkbox");
358        testCheckboxControlDisableWhenChanged();
359        passed();
360    }
361}