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