001 /**
002 * Copyright 2004-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 org.kuali.hr.time.util;
017
018 import org.junit.After;
019 import org.junit.Before;
020 import org.junit.Ignore;
021 import org.junit.Test;
022 import org.kuali.kpme.core.FunctionalTest;
023
024 import com.thoughtworks.selenium.DefaultSelenium;
025 import com.thoughtworks.selenium.SeleneseTestCase;
026
027 @Ignore
028 @FunctionalTest
029 public class UICalendarTest extends SeleneseTestCase {
030 @Before
031 public void setUp() throws Exception {
032 selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://ci.kpme.kuali.org:9080/");
033 // selenium = new DefaultSelenium("localhost", 4444, "*firefox /Applications/Firefox.app/Contents/MacOS/firefox-bin", "http://ci.kpme.kuali.org:9080/");
034 // set speed to 1 sec between each action. this is mainly for the ajax call to get the earn code.
035 selenium.setSpeed("1000");
036 try {
037 selenium.start();
038 } catch (Exception e) {
039
040 }
041 }
042
043 /**
044 * Test adding and deleting a timeblock
045 *
046 * @throws Exception
047 */
048 @Test
049 public void testAddAndDeleteTimeBlock() throws Exception {
050 openPageAndLogin("/tk-dev/TimeDetail.do");
051 selenium.waitForPageToLoad("5000");
052 selenium.click("id=day_9");
053 selenium.select("id=assignment", "value=1_1234_1");
054 selenium.type("id=beginTimeField", "08:00 AM");
055 selenium.type("id=endTimeField", "05:00 PM");
056 selenium.click("//button[@type='button']");
057 selenium.waitForPageToLoad("5000");
058 selenium.click("class=event-delete");
059 selenium.waitForPageToLoad("3000");
060 verifyFalse(selenium.isTextPresent("08:00 AM"));
061 verifyFalse(selenium.isTextPresent("05:00 PM"));
062 }
063
064 /**
065 * This is to test that the entry fields for time / hours / amount should be correspondent with the selected earn code
066 *
067 * @throws Exception
068 */
069 @Test
070 public void testTestEarnCodeSwitch() throws Exception {
071 openPageAndLogin("/tk-dev/TimeDetail.do");
072 selenium.click("id=day_10");
073 selenium.select("id=assignment", "label=work area description : $0.00 Rcd 1 TEST-DEPT");
074 // verify the time entry fields are presented when the earn code type is "TIME"
075 verifyTrue(selenium.isTextPresent("exact:In:"));
076 verifyTrue(selenium.isTextPresent("exact:Out:"));
077 verifyTrue(selenium.isTextPresent("RGH : REGULAR"));
078 // verify the time entry fields are presented when the earn code type is "HOURS"
079 selenium.select("id=earnCode", "label=SCK : SICK");
080 verifyTrue(selenium.isTextPresent("exact:Hours:"));
081 // verify the time entry fields are presented when the earn code type is "AMOUNT"
082 selenium.select("id=earnCode", "label=TIP : Tips");
083 verifyTrue(selenium.isTextPresent("exact:Amount:"));
084 }
085
086 /**
087 * Test clocking in and out
088 *
089 * @throws Exception
090 */
091 @Test
092 public void testTestClockInAndOut() throws Exception {
093 openPageAndLogin("/tk-dev/Clock.do");
094 selenium.waitForPageToLoad("3000");
095 selenium.select("id=assignment", "label=work area description : $0.00 Rcd 1 TEST-DEPT");
096 // clock in
097 selenium.click("id=clock-button");
098 selenium.waitForPageToLoad("3000");
099 // verify the clock out button is presented
100 verifyEquals("Clock Out", selenium.getValue("id=clock-button"));
101 // clock out
102 selenium.click("id=clock-button");
103 // go to the time detail page and make sure clocking in/out is successful
104 selenium.click("link=Time Detail");
105 selenium.waitForPageToLoad("3000");
106 verifyTrue(selenium.isTextPresent("exact:RGN: REGULAR"));
107 }
108
109 @After
110 public void tearDown() throws Exception {
111 selenium.stop();
112 }
113
114 private void openPageAndLogin(String pageLink) {
115 selenium.open(pageLink);
116 selenium.type("__login_user", "admin");
117 selenium.click("//input[@name='login']");
118 selenium.waitForPageToLoad("2000");
119 }
120 }
121
122