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(getWebClient(), TkTestConstants.Urls.SHIFT_DIFFERENTIAL_RULE_MAINT_URL);
045 shiftDifferentialRuleLookup = HtmlUnitUtil.clickInputContainingText(shiftDifferentialRuleLookup, "search");
046 Assert.assertTrue("Page contains test Shift Differential Rule", 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(getWebClient(), 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 = "Salary Group (Salary 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