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.core.leaveplan;
017
018import junit.framework.Assert;
019
020import org.apache.log4j.Logger;
021import org.junit.Test;
022import org.kuali.hr.KPMEWebTestCase;
023import org.kuali.hr.util.HtmlUnitUtil;
024import org.kuali.kpme.core.FunctionalTest;
025import org.kuali.kpme.core.util.HrTestConstants;
026
027import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
028import com.gargoylesoftware.htmlunit.html.HtmlInput;
029import com.gargoylesoftware.htmlunit.html.HtmlPage;
030
031@FunctionalTest
032public class LeavePlanMaintTest extends KPMEWebTestCase {
033    private static final Logger LOG = Logger.getLogger(LeavePlanMaintTest.class);
034        public static final String TEST_USER = "admin";
035        
036        
037        
038        @Test
039        public void testLeavePlanMonthsSave() throws Exception {
040                
041                //get the page with planning months
042                HtmlPage leavePlan = HtmlUnitUtil.gotoPageAndLogin(getWebClient(), HrTestConstants.Urls.LEAVE_PLAN_MAINT_URL);
043                LOG.debug("Leave plan text page is : " + leavePlan.asText());
044                HtmlPage resultPage = HtmlUnitUtil.clickInputContainingText(leavePlan, "search");
045                HtmlUnitUtil.createTempFile(resultPage);
046                LOG.debug("Result page is : "+resultPage.asText());
047                Assert.assertTrue("Maintenance page contains:\n" + "Testing Leave Plan Months", resultPage.asText().contains("Testing Leave Plan Months"));
048                
049                //submit a leave plan with planning months changed
050                HtmlPage leavePlanMaintPage = HtmlUnitUtil.clickAnchorContainingText(resultPage, "edit", "5555");
051                HtmlUnitUtil.setFieldValue(leavePlanMaintPage, "document.documentHeader.documentDescription", "LeavePlan change planningMonths - test");
052                HtmlUnitUtil.setFieldValue(leavePlanMaintPage, "document.newMaintainableObject.effectiveDate", "01/01/2013");
053                HtmlInput planningMonthsText = HtmlUnitUtil.getInputContainingText(leavePlanMaintPage, "document.newMaintainableObject.planningMonths");
054                
055                // KPME- Kagata - value is between 1 and 24 now
056                planningMonthsText.setValueAttribute("999"); //max value
057                HtmlPage outputPage = HtmlUnitUtil.clickInputContainingText(leavePlanMaintPage, "submit");
058                HtmlUnitUtil.createTempFile(outputPage);
059                //assertTrue("Maintenance page text contains:\n" + "Document was successfully submitted", outputPage.asText().contains("Document was successfully submitted"));
060                //assertTrue("Maintenance page contains:\n" + "Planning Months changed to 999", outputPage.asText().contains("999"));
061                Assert.assertTrue("Maintenance page text contains:\n" + "\'Planning Months\' should be between 1 and 24", outputPage.asText().contains("\'Planning Months\' should be between 1 and 24"));
062                
063                planningMonthsText.setValueAttribute("0"); 
064                outputPage = HtmlUnitUtil.clickInputContainingText(leavePlanMaintPage, "submit");
065                HtmlUnitUtil.createTempFile(outputPage);
066                Assert.assertTrue("Maintenance page text contains:\n" + "\'Planning Months\' should be between 1 and 24", outputPage.asText().contains("\'Planning Months\' should be between 1 and 24"));
067                
068                planningMonthsText.setValueAttribute("24"); 
069                outputPage = HtmlUnitUtil.clickInputContainingText(leavePlanMaintPage, "submit");
070                HtmlUnitUtil.createTempFile(outputPage);
071                Assert.assertTrue("Maintenance page text contains:\n" + "Document was successfully submitted", outputPage.asText().contains("Document was successfully submitted"));
072                Assert.assertTrue("Maintenance page contains:\n" + "Planning Months changed to 24", outputPage.asText().contains("24"));
073                
074        }
075        
076        // KPME-1250 Kagata
077        @Test
078        public void testInactivateLeavePlan() throws Exception {
079                
080                //get the page with planning months
081                HtmlPage leavePlan = HtmlUnitUtil.gotoPageAndLogin(getWebClient(), HrTestConstants.Urls.LEAVE_PLAN_MAINT_URL);
082                HtmlPage resultPage = HtmlUnitUtil.clickInputContainingText(leavePlan, "search");
083                HtmlUnitUtil.createTempFile(resultPage);
084                Assert.assertTrue("Maintenance page contains:\n" + "Testing LP Inactive Flag", resultPage.asText().contains("Testing LP Inactive Flag"));
085                
086                HtmlPage leavePlanMaintPage = HtmlUnitUtil.clickAnchorContainingText(resultPage, "edit", "2000");
087                HtmlUnitUtil.setFieldValue(leavePlanMaintPage, "document.documentHeader.documentDescription", "LeavePlan change active flag");
088                HtmlCheckBoxInput activeCheckbox = (HtmlCheckBoxInput) HtmlUnitUtil.getInputContainingText(leavePlanMaintPage, "document.newMaintainableObject.active");
089                activeCheckbox.setChecked(false);
090                        
091                HtmlPage outputPage = HtmlUnitUtil.clickInputContainingText(leavePlanMaintPage, "submit");
092                HtmlUnitUtil.createTempFile(outputPage);
093                
094        }
095        
096        // KPME-1489 Kagata
097        @Test
098        public void testRequiredFields() throws Exception {
099                
100                //get the page with planning months
101                HtmlPage leavePlan = HtmlUnitUtil.gotoPageAndLogin(getWebClient(), HrTestConstants.Urls.LEAVE_PLAN_MAINT_URL);
102                HtmlPage resultPage = HtmlUnitUtil.clickInputContainingText(leavePlan, "search");
103                HtmlUnitUtil.createTempFile(resultPage);
104                Assert.assertTrue("Maintenance page contains:\n" + "Testing Leave Plan Months", resultPage.asText().contains("Testing Leave Plan Months"));
105                
106                HtmlPage leavePlanMaintPage = HtmlUnitUtil.clickAnchorContainingText(resultPage, "edit", "5555");
107                //submit a leave plan with planning months changed
108                HtmlUnitUtil.setFieldValue(leavePlanMaintPage, "document.documentHeader.documentDescription", "Testing required fields");
109                HtmlInput planningMonthsText = HtmlUnitUtil.getInputContainingText(leavePlanMaintPage, "document.newMaintainableObject.planningMonths");
110                HtmlInput calendarYearStartText = HtmlUnitUtil.getInputContainingText(leavePlanMaintPage, "document.newMaintainableObject.calendarYearStart");
111                
112                planningMonthsText.setValueAttribute("");
113                calendarYearStartText.setValueAttribute("");
114                HtmlPage outputPage = HtmlUnitUtil.clickInputContainingText(leavePlanMaintPage, "submit");
115                HtmlUnitUtil.createTempFile(outputPage);
116                Assert.assertTrue("Maintenance page text contains:\n" + "Planning Months (Planning Months) is a required field", outputPage.asText().contains("Planning Months (Planning Months) is a required field"));
117                Assert.assertTrue("Maintenance page text contains:\n" + "Calendar Year Start (MM/DD) (Calendar Year Start (MM/DD)) is a required field", outputPage.asText().contains("Calendar Year Start (MM/DD) (Calendar Year Start (MM/DD)) is a required field"));
118                
119                HtmlUnitUtil.setFieldValue(outputPage, "document.newMaintainableObject.effectiveDate", "");
120                HtmlPage page = HtmlUnitUtil.clickInputContainingText(outputPage, "submit");
121                Assert.assertTrue("Maintenance page text contains:\n" + "Effective Date (Effective Date) is a required field.", page.asText().contains("Effective Date (Effective Date) is a required field."));
122                Assert.assertFalse("Maintenance page text contains:\n" + "Incident Report", page.asText().contains("Incident Report "));
123                
124        }
125        
126        
127}