001    /*
002     * Copyright 2006-2012 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    
017    package edu.samplu.krad.validationmessagesview;
018    
019    import com.thoughtworks.selenium.Selenium;
020    import junit.framework.Assert;
021    import org.openqa.selenium.firefox.FirefoxDriver;
022    import org.openqa.selenium.WebDriver;
023    import org.openqa.selenium.WebDriverBackedSelenium;
024    import org.junit.After;
025    import org.junit.Before;
026    import org.junit.Test;
027    
028    public class ServerInfoIT{
029        private Selenium selenium;
030    
031        @Before
032        public void setUp() throws Exception {
033            WebDriver driver = new FirefoxDriver();
034            selenium = new WebDriverBackedSelenium(driver,
035                    "http://localhost:8080/kr-dev/kr-krad/uicomponents?viewId=Demo-ValidationLayout&methodToCall=start");
036    
037            // Login
038            selenium.open(
039                    "http://localhost:8080/kr-dev/kr-krad/uicomponents?viewId=Demo-ValidationLayout&methodToCall=start");
040            Assert.assertEquals("Login", selenium.getTitle());
041            selenium.type("__login_user", "admin");
042            selenium.click("//input[@value='Login']");
043            selenium.waitForPageToLoad("30000");
044        }
045    
046            @Test
047            public void testServerInfoIT() throws Exception {
048                    selenium.click("//button[contains(.,'Get Info Messages')]");
049                    selenium.waitForPageToLoad("30000");
050                    Assert.assertTrue(selenium.isVisible("css=div[data-messagesfor=\"Demo-ValidationLayout-SectionsPage\"]"));
051                    Assert.assertTrue(selenium.isElementPresent("css=div[data-messagesfor=\"Demo-ValidationLayout-SectionsPage\"] .uif-infoMessageItem"));
052                    Assert.assertTrue(selenium.isVisible("css=div[data-messagesfor=\"Demo-ValidationLayout-Section1\"]"));
053                    Assert.assertTrue(selenium.isElementPresent("css=div[data-messagesfor=\"Demo-ValidationLayout-Section1\"] .uif-infoMessageItem"));
054                    Assert.assertTrue(selenium.isElementPresent("css=div[data-role=\"InputField\"] img[alt=\"Information\"]"));
055                    selenium.mouseOver("//a[contains(.,'Field 1')]");
056                    Assert.assertTrue(selenium.isElementPresent("css=.uif-infoHighlight"));
057                    selenium.click("//a[contains(.,'Field 1')]");
058                    for (int second = 0;; second++) {
059                            if (second >= 60) Assert.fail("timeout");
060                            try { if (selenium.isVisible("css=.jquerybubblepopup-innerHtml")) break; } catch (Exception e) {}
061                            Thread.sleep(1000);
062                    }
063    
064                    Assert.assertTrue(selenium.isVisible("css=.jquerybubblepopup-innerHtml > .uif-serverMessageItems"));
065                    Assert.assertTrue(selenium.isVisible("css=.jquerybubblepopup-innerHtml > .uif-serverMessageItems .uif-infoMessageItem-field"));
066                    selenium.type("name=field1", "");
067                    selenium.fireEvent("name=field1", "blur");
068                    selenium.fireEvent("name=field1", "focus");
069                    for (int second = 0;; second++) {
070                            if (second >= 60) Assert.fail("timeout");
071                            try { if (selenium.isVisible("css=.jquerybubblepopup-innerHtml")) break; } catch (Exception e) {}
072                            Thread.sleep(1000);
073                    }
074    
075                    Assert.assertTrue(selenium.isVisible("css=.jquerybubblepopup-innerHtml > .uif-serverMessageItems .uif-infoMessageItem-field"));
076                    for (int second = 0;; second++) {
077                            if (second >= 60) Assert.fail("timeout");
078                            try { if (selenium.isVisible("css=.jquerybubblepopup-innerHtml > .uif-clientMessageItems")) break; } catch (Exception e) {}
079                            Thread.sleep(1000);
080                    }
081    
082                    Assert.assertTrue(selenium.isVisible("css=.jquerybubblepopup-innerHtml > .uif-clientMessageItems  .uif-errorMessageItem-field"));
083                    selenium.type("name=field1", "b");
084                    selenium.keyDown("name=field1", "b");
085                    selenium.keyUp("name=field1", "b");
086            selenium.typeKeys("name=field1", "\b\b\b");
087                    for (int second = 0;; second++) {
088                            if (second >= 60) Assert.fail("timeout");
089                            try { if (!selenium.isElementPresent("css=.jquerybubblepopup-innerHtml > .uif-clientMessageItems")) break; } catch (Exception e) {}
090                            Thread.sleep(1000);
091                    }
092    
093                    Assert.assertTrue(selenium.isVisible("css=.jquerybubblepopup-innerHtml > .uif-serverMessageItems .uif-infoMessageItem-field"));
094                    Assert.assertFalse(selenium.isElementPresent("css=.jquerybubblepopup-innerHtml > .uif-clientMessageItems"));
095                    selenium.type("name=field1", "");
096                    selenium.fireEvent("name=field1", "focus");
097                    selenium.fireEvent("name=field1", "blur");
098                    Assert.assertTrue(selenium.isElementPresent("css=.uif-hasError"));
099                    Assert.assertTrue(selenium.isElementPresent("css=img[src*=\"error.png\"]"));
100            }
101    
102            @After
103            public void tearDown() throws Exception {
104                    selenium.stop();
105            }
106    }