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