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.shiftdiff.rule;
017    
018    import java.math.BigDecimal;
019    import java.sql.Date;
020    import java.util.Calendar;
021    
022    import org.junit.Assert;
023    import org.junit.Test;
024    import org.kuali.hr.test.KPMETestCase;
025    import org.kuali.hr.time.test.HtmlUnitUtil;
026    import org.kuali.hr.time.test.TkTestConstants;
027    import org.kuali.rice.krad.service.KRADServiceLocator;
028    
029    import com.gargoylesoftware.htmlunit.html.HtmlElement;
030    import com.gargoylesoftware.htmlunit.html.HtmlForm;
031    import com.gargoylesoftware.htmlunit.html.HtmlInput;
032    import com.gargoylesoftware.htmlunit.html.HtmlPage;
033    
034    public class ShiftDifferentialRuleMaintTest extends KPMETestCase{
035            private static final String TEST_CODE="_T";
036                    
037            private static final BigDecimal TEST_NO=new BigDecimal(2);
038            private static String shiftDifferentialRuleId;
039    
040            
041            
042            @Test
043            public void testShiftDifferentialRuleMaint() throws Exception {  
044                    HtmlPage shiftDifferentialRuleLookup = HtmlUnitUtil.gotoPageAndLogin(TkTestConstants.Urls.SHIFT_DIFFERENTIAL_RULE_MAINT_URL);
045                    shiftDifferentialRuleLookup = HtmlUnitUtil.clickInputContainingText(shiftDifferentialRuleLookup, "search");
046                    Assert.assertTrue("Page contains test ShiftDifferentialRule", shiftDifferentialRuleLookup.asText().contains(TEST_CODE.toString()));
047                    HtmlPage maintPage = HtmlUnitUtil.clickAnchorContainingText(shiftDifferentialRuleLookup, "edit",shiftDifferentialRuleId.toString());
048                    Assert.assertTrue("Maintenance Page contains test ShiftDifferentialRule",maintPage.asText().contains(TEST_CODE));        
049            }
050            
051            @Test
052            public void testRequiredFields() throws Exception {
053                    String baseUrl = TkTestConstants.Urls.SHIFT_DIFFERENTIAL_RULE_MAINT_NEW_URL;
054                    HtmlPage page = HtmlUnitUtil.gotoPageAndLogin(baseUrl);
055                    Assert.assertNotNull(page);
056             
057                    HtmlForm form = page.getFormByName("KualiForm");
058                    Assert.assertNotNull("Search form was missing from page.", form);
059                    
060                    HtmlInput  input  = HtmlUnitUtil.getInputContainingText(form, "methodToCall.route");
061                    Assert.assertNotNull("Could not locate submit button", input);
062                    
063                    HtmlElement element = page.getElementByName("methodToCall.route");
064                    page = element.click();
065                    // the following fields should have default values
066                    String errorMessage = "Min. Hours (Min. Hours) is a required field.";
067                    Assert.assertFalse("page text contains:\n" + errorMessage, page.asText().contains(errorMessage));
068                errorMessage = "Begin Time (00:00 AM) (Begin Time) is a required field.";
069                Assert.assertFalse("page text contains:\n" + errorMessage, page.asText().contains(errorMessage));
070                errorMessage = "End Time (00:00 AM) (End Time) is a required field.";
071                Assert.assertFalse("page text contains:\n" + errorMessage, page.asText().contains(errorMessage));
072                errorMessage = "Max. Gap Minutes (Max. Gap Minutes) is a required field.";
073                Assert.assertFalse("page text contains:\n" + errorMessage, page.asText().contains(errorMessage));
074                    
075                //remove the default values
076                    setFieldValue(page, "document.newMaintainableObject.minHours", "");
077                    setFieldValue(page, "document.newMaintainableObject.beginTime", "");
078                    setFieldValue(page, "document.newMaintainableObject.endTime", "");
079                    setFieldValue(page, "document.newMaintainableObject.maxGap", "");
080                    element = page.getElementByName("methodToCall.route");
081                    HtmlPage nextPage = element.click();
082                    errorMessage = "Effective Date (Effective Date) is a required field.";
083                    Assert.assertTrue("page text does not contain:\n" + errorMessage, nextPage.asText().contains(errorMessage));
084                errorMessage = "Location (Location) is a required field.";
085                Assert.assertTrue("page text does not contain:\n" + errorMessage, nextPage.asText().contains(errorMessage));
086                errorMessage = "Sal. Group (Sal. Group) is a required field.";
087                Assert.assertTrue("page text does not contain:\n" + errorMessage, nextPage.asText().contains(errorMessage));
088                errorMessage = "Pay Grade (Pay Grade) is a required field.";
089                Assert.assertTrue("page text does not contain:\n" + errorMessage, nextPage.asText().contains(errorMessage));
090                errorMessage = "Earn Code (Earn Code) is a required field.";
091                Assert.assertTrue("page text does not contain:\n" + errorMessage, nextPage.asText().contains(errorMessage));
092                errorMessage = "From Earn Group (From Earn Group) is a required field.";
093                Assert.assertTrue("page text does not contain:\n" + errorMessage, nextPage.asText().contains(errorMessage));
094                errorMessage = "Begin Time (00:00 AM) (Begin Time) is a required field.";
095                Assert.assertTrue("page text does not contain:\n" + errorMessage, nextPage.asText().contains(errorMessage));
096                errorMessage = "End Time (00:00 AM) (End Time) is a required field.";
097                Assert.assertTrue("page text does not contain:\n" + errorMessage, nextPage.asText().contains(errorMessage));
098                errorMessage = "Max. Gap Minutes (Max. Gap Minutes) is a required field.";
099                Assert.assertTrue("page text does not contain:\n" + errorMessage, nextPage.asText().contains(errorMessage));
100                errorMessage = "Pay Calendar Group (Pay Calendar Group) is a required field.";
101                Assert.assertTrue("page text does not contain:\n" + errorMessage, nextPage.asText().contains(errorMessage));
102                errorMessage = "Min. Hours (Min. Hours) is a required field.";
103                Assert.assertTrue("page text does not contain:\n" + errorMessage, nextPage.asText().contains(errorMessage));
104            }
105    
106    
107            @Override
108            public void setUp() throws Exception {
109                    super.setUp();
110            Calendar yesterday = Calendar.getInstance();
111            yesterday.add(Calendar.DATE, -1);
112            Date testDate = new Date(yesterday.getTimeInMillis());
113                    ShiftDifferentialRule shiftDifferentialRule = new ShiftDifferentialRule();
114                    shiftDifferentialRule.setActive(true);
115                    //shiftDifferentialRule.setBeginTime(TEST_TIME);
116                    shiftDifferentialRule.setEarnCode(TEST_CODE);
117                    shiftDifferentialRule.setEffectiveDate(testDate);
118                    //shiftDifferentialRule.setEndTime(TEST_TIME);
119                    shiftDifferentialRule.setLocation(TEST_CODE);
120                    shiftDifferentialRule.setMaxGap(new BigDecimal(2));
121                    shiftDifferentialRule.setMinHours(TEST_NO);
122                    shiftDifferentialRule.setPayGrade(TEST_CODE);   
123                    shiftDifferentialRule.setPyCalendarGroup("BW-CAL");
124                    shiftDifferentialRule.setSunday(true);  
125                    shiftDifferentialRule.setMonday(true);
126                    shiftDifferentialRule.setTuesday(true);
127                    shiftDifferentialRule.setWednesday(true);
128                    shiftDifferentialRule.setThursday(true);
129                    shiftDifferentialRule.setFriday(true);
130                    shiftDifferentialRule.setSaturday(true);
131                    shiftDifferentialRule.setPyCalendarGroup("TEST");
132                    
133                    ShiftDifferentialRule rule = KRADServiceLocator.getBusinessObjectService().save(shiftDifferentialRule);
134                    shiftDifferentialRuleId = rule.getTkShiftDiffRuleId();
135            }
136    
137            @Override
138            public void tearDown() throws Exception {                               
139                    ShiftDifferentialRule shiftDifferentialRuleObj = KRADServiceLocator.getBusinessObjectService().findBySinglePrimaryKey(ShiftDifferentialRule.class, shiftDifferentialRuleId);             
140                    KRADServiceLocator.getBusinessObjectService().delete(shiftDifferentialRuleObj);
141                    super.tearDown();
142            }
143    }
144