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