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     */
016    package org.kuali.hr.lm.leave.approval;
017    
018    import org.junit.After;
019    import org.junit.Assert;
020    import org.junit.Before;
021    import org.junit.Test;
022    import org.kuali.hr.KPMEWebTestCase;
023    import org.kuali.hr.util.HtmlUnitUtil;
024    import org.kuali.kpme.core.FunctionalTest;
025    import org.kuali.kpme.core.calendar.entry.CalendarEntry;
026    import org.kuali.kpme.core.service.HrServiceLocator;
027    import org.kuali.kpme.tklm.leave.calendar.LeaveCalendarDocument;
028    import org.kuali.kpme.tklm.leave.service.LmServiceLocator;
029    import org.kuali.kpme.tklm.utils.TkTestConstants;
030    
031    import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
032    import com.gargoylesoftware.htmlunit.WebClient;
033    import com.gargoylesoftware.htmlunit.html.HtmlButton;
034    import com.gargoylesoftware.htmlunit.html.HtmlPage;
035    
036    @FunctionalTest
037    public class LeaveCalendarWebTest extends KPMEWebTestCase {
038            
039            private String documentId;
040    
041            @Before
042            public void setUp() throws Exception {
043                    super.setUp();
044                    
045                    CalendarEntry firstCalendarEntry = HrServiceLocator.getCalendarEntryService().getCalendarEntry("202");
046            LeaveCalendarDocument firstLeaveCalendarDocument = LmServiceLocator.getLeaveCalendarService().openLeaveCalendarDocument("admin", firstCalendarEntry);
047            documentId = firstLeaveCalendarDocument.getDocumentId();
048            
049            CalendarEntry secondCalendarEntry = HrServiceLocator.getCalendarEntryService().getCalendarEntry("203");
050            LmServiceLocator.getLeaveCalendarService().openLeaveCalendarDocument("admin", secondCalendarEntry);
051            
052            CalendarEntry thirdCalendarEntry = HrServiceLocator.getCalendarEntryService().getCalendarEntry("204");
053            LmServiceLocator.getLeaveCalendarService().openLeaveCalendarDocument("admin", thirdCalendarEntry);
054            }
055    
056            @After
057            public void tearDown() throws Exception {
058                    super.tearDown();
059            }
060    
061        @Override
062            public void setWebClient(WebClient webClient) {
063            super.setWebClient(webClient);
064                    webClient.setAjaxController(new NicelyResynchronizingAjaxController());
065                    webClient.waitForBackgroundJavaScript(10000);
066            }
067    
068            @Test
069            public void testLeaveCalendarPage() throws Exception {
070                    // get the page and Login
071                    HtmlPage leaveCalendarPage = HtmlUnitUtil
072                                    .gotoPageAndLogin(getWebClient(), TkTestConstants.Urls.LEAVE_CALENDAR_URL+"?documentId=" + documentId, true);
073                    Assert.assertNotNull("Leave Request page not found" ,leaveCalendarPage);
074    
075                    //this.setWebClient(leaveCalendarPage.getWebClient());
076    
077                    Assert.assertTrue("Page does not have Current calendar ", leaveCalendarPage.asText().contains("March 2012"));
078    
079            // Check for next document
080            HtmlButton nextButton = (HtmlButton) leaveCalendarPage
081                    .getElementById("nav_next_lc");
082            Assert.assertNotNull(nextButton);
083            //TODO: click not working.  Not even getting to the 'execute' method in LeaveCalendarAction
084            HtmlPage page = nextButton.click();
085            Assert.assertNotNull(page);
086            
087            synchronized (page) {
088                page.wait(5000);
089            }
090            String pageText = page.asText();
091            LOG.info(pageText);
092                    // Check for previous document
093                    HtmlButton prevButton = (HtmlButton) page
094                                    .getElementById("nav_prev_lc");
095                    Assert.assertNotNull(prevButton);
096            page = prevButton.click();
097            Assert.assertNotNull(page);
098    
099            }
100    
101    }