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.travel.krad.test;
018    
019    import com.thoughtworks.selenium.*;
020    import org.junit.After;
021    import org.junit.Before;
022    import org.junit.Test;
023    import java.util.regex.Pattern;
024    
025    import static junit.framework.Assert.assertTrue;
026    import static junit.framework.Assert.fail;
027    /**
028     * test that dirty fields check happens for all pages in a view
029     *
030     * @author Kuali Rice Team (rice.collab@kuali.org)
031     */
032    public class DirtyFieldsCheckIT {
033        private DefaultSelenium selenium;
034    
035        @Before
036            public void setUp() throws Exception {
037                    selenium = new DefaultSelenium("localhost", 4444, "*chrome", System.getProperty("remote.public.url"));
038                    selenium.start();
039            }
040    
041            @Test
042            public void testDirtyFieldsCheck() throws Exception {
043                    selenium.open("/kr-dev/portal.do");
044                    selenium.type("name=__login_user", "admin");
045                    selenium.click("css=input[type=\"submit\"]");
046                    selenium.waitForPageToLoad("30000");
047                    selenium.click("link=KRAD");
048                    selenium.waitForPageToLoad("30000");
049                    selenium.click("link=Uif Components (Kitchen Sink)");
050                    selenium.waitForPageToLoad("30000");
051                    selenium.selectFrame("iframeportlet");
052            Thread.sleep(3000);
053                    selenium.focus("id=u73_control");
054                    selenium.type("id=u73_control", "test 1");
055                    selenium.focus("id=u103_control");
056                    selenium.type("id=u103_control", "test 2");
057                    // 'Other Fields' navigation link
058                    selenium.click("id=u967");
059            assertTrue(selenium.getConfirmation().matches("^Form has unsaved data\\. Do you want to leave anyway[\\s\\S]$"));
060            Thread.sleep(3000);
061            for (int second = 0;; second++) {
062                if (second >= 60) fail("timeout");
063                try { if (selenium.isElementPresent("id=u51_control")) break; } catch (Exception e) {}
064                Thread.sleep(1000);
065            }
066            selenium.focus("id=u51_control");
067                    selenium.type("id=u51_control", "here");
068            selenium.focus("id=u81_control");
069                    selenium.type("id=u81_control", "there");
070                    // 'Validation' navigation link
071                    selenium.click("id=u970");
072            assertTrue(selenium.getConfirmation().matches("^Form has unsaved data\\. Do you want to leave anyway[\\s\\S]$"));
073            Thread.sleep(3000);
074            for (int second = 0;; second++) {
075                if (second >= 60) fail("timeout");
076                try { if (selenium.isElementPresent("id=u114_control")) break; } catch (Exception e) {}
077                Thread.sleep(1000);
078            }
079            selenium.focus("id=u114_control");
080                    selenium.type("id=u114_control", "this");
081            selenium.focus("id=u144_control");
082                    selenium.type("id=u144_control", "that");
083                    // 'Validation - Regex' navigation link
084                    selenium.click("id=u973");
085            assertTrue(selenium.getConfirmation().matches("^Form has unsaved data\\. Do you want to leave anyway[\\s\\S]$"));
086            Thread.sleep(2000);
087            for (int second = 0;; second++) {
088                if (second >= 60) fail("timeout");
089                try { if (selenium.isElementPresent("id=u44_control")) break; } catch (Exception e) {}
090                Thread.sleep(1000);
091            }
092            selenium.focus("id=u44_control");
093                    selenium.type("id=u44_control", "1");
094            selenium.focus("id=u74_control");
095                    selenium.type("id=u74_control", "2");
096            // 'Progressive Disclosure' navigation link
097                    selenium.click("id=u976");
098                    assertTrue(selenium.getConfirmation().matches("^Form has unsaved data\\. Do you want to leave anyway[\\s\\S]$"));
099            }
100    
101            @After
102            public void tearDown() throws Exception {
103                    selenium.stop();
104            }
105    }