001/**
002 * Copyright 2004-2014 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 org.kuali.hr.lm.leave.approval;
017
018import junit.framework.Assert;
019
020import org.joda.time.DateTime;
021import org.junit.After;
022import org.junit.Before;
023import org.junit.Test;
024import org.kuali.hr.KPMEWebTestCase;
025import org.kuali.hr.util.HtmlUnitUtil;
026import org.kuali.kpme.core.FunctionalTest;
027import org.kuali.kpme.tklm.utils.TkTestConstants;
028
029import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
030import com.gargoylesoftware.htmlunit.WebClient;
031import com.gargoylesoftware.htmlunit.html.HtmlButton;
032import com.gargoylesoftware.htmlunit.html.HtmlPage;
033
034@FunctionalTest
035public class LeaveBlockDisplayWebTest extends KPMEWebTestCase {
036    private static String YEAR = "2013";
037
038        @Before
039        public void setUp() throws Exception {
040                super.setUp();
041        }
042
043        @After
044        public void tearDown() throws Exception {
045                super.tearDown();
046        }
047
048        public void updateWebClient() {
049        WebClient webClient = getWebClient();
050                webClient.setJavaScriptEnabled(true);
051                webClient.setThrowExceptionOnScriptError(true);
052                webClient.setAjaxController(new NicelyResynchronizingAjaxController());
053                webClient.waitForBackgroundJavaScript(10000);
054        }
055
056        @Test
057        public void testLeaveBlockDisplayPage() throws Exception {
058                // get the page and Login
059                HtmlPage leaveBlockDisplayPage = HtmlUnitUtil
060                                .gotoPageAndLogin(getWebClient(), TkTestConstants.Urls.LEAVE_BLOCK_DISPLAY_URL);
061                Assert.assertNotNull("Leave Request page not found" + leaveBlockDisplayPage);
062
063                updateWebClient();
064
065                // check page contains the current year
066                Assert.assertTrue("Page is not current year ",
067                                leaveBlockDisplayPage.asText().contains(YEAR));
068
069                // Check Main section
070                // depends on injection of test data for current year.
071                Assert.assertTrue("Page does not contain planned leave ",
072                                leaveBlockDisplayPage.asText().contains("Send for Approval"));
073
074                // check Days Removed in correction section
075                Assert.assertTrue("Page does not contain approved leaves ",
076                                leaveBlockDisplayPage.asText().contains("Updated by others"));
077                
078                // check Inactive Leave entries
079                Assert.assertTrue("Page does not contain approved leaves ",
080                                leaveBlockDisplayPage.asText().contains("Updated by self"));
081                
082                // check page contains Document Status column
083                Assert.assertTrue("Page does not contain Document Status ",
084                                leaveBlockDisplayPage.asText().contains("Document Status"));
085                Assert.assertTrue("Page does not contain 'FINAL' Document Status ",
086                                leaveBlockDisplayPage.asText().contains("FINAL"));
087                
088                // check page contains Planning Status column
089                Assert.assertTrue("Page does not contain Planning Status ",
090                                leaveBlockDisplayPage.asText().contains("Planning Status"));
091                
092                // Check for next year
093                HtmlButton nextButton = (HtmlButton) leaveBlockDisplayPage
094                                .getElementById("nav_lb_next");
095                leaveBlockDisplayPage = nextButton.click();
096
097                // check page contains the next year
098                Assert.assertTrue("Page does not contain next year ",
099                                leaveBlockDisplayPage.asText().contains(String.valueOf(Integer.valueOf(YEAR) + 1)));
100        }
101
102}