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