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.earncode.service;
017
018 import java.sql.Date;
019 import java.util.List;
020 import java.util.Map;
021
022 import org.apache.log4j.Logger;
023 import org.junit.Assert;
024 import org.junit.Before;
025 import org.junit.Test;
026 import org.kuali.hr.test.KPMETestCase;
027 import org.kuali.hr.time.assignment.Assignment;
028 import org.kuali.hr.time.earncode.EarnCode;
029 import org.kuali.hr.time.service.base.TkServiceLocator;
030 import org.kuali.hr.time.test.HtmlUnitUtil;
031 import org.kuali.hr.time.test.TkTestConstants;
032 import org.kuali.hr.time.util.TKUtils;
033
034 import com.gargoylesoftware.htmlunit.html.HtmlInput;
035 import com.gargoylesoftware.htmlunit.html.HtmlPage;
036 import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
037 import com.gargoylesoftware.htmlunit.html.HtmlSelect;
038 import org.kuali.rice.kim.api.identity.principal.Principal;
039 import org.kuali.rice.kim.api.services.KimApiServiceLocator;
040
041 public class EarnCodeServiceImplTest extends KPMETestCase {
042
043
044 public static final String TEST_USER = "admin";
045 public static final Long TEST_ASSIGNMENT_JOB_NUMBER = 1L;
046 public static final Long TEST_ASSIGNMENT_JOB_NUMBER_2 = 2L;
047 public static final Long TEST_ASSIGNMENT_JOB_NUMBER_3 = 3L;
048 public static final Long TEST_ASSIGNMENT_JOB_NUMBER_4 = 4L;
049
050 @SuppressWarnings("unused")
051 private static final Logger LOG = Logger.getLogger(EarnCodeServiceImplTest.class);
052
053 EarnCodeService earnCodeService = null;
054
055
056 @Before
057 public void setUp() throws Exception {
058 super.setUp();
059 earnCodeService=TkServiceLocator.getEarnCodeService();
060 }
061
062 @Test
063 public void getEarnCodes() throws Exception {
064 Date asOfDate = TKUtils.getTimelessDate(null);
065 List<Assignment> assignments = TkServiceLocator.getAssignmentService().getAssignments(TEST_USER, asOfDate);
066 Assert.assertNotNull(assignments);
067 Assert.assertTrue("Emtpy assignment list", !assignments.isEmpty());
068
069 Assignment assignment1 = null;
070 Assignment assignment2 = null;
071 Assignment assignment3 = null;
072 Assignment assignment4 = null;
073 for (Assignment a : assignments) {
074 if (a.getJobNumber().equals(TEST_ASSIGNMENT_JOB_NUMBER)) {
075 assignment1 = a;
076 } else if (a.getJobNumber().equals(TEST_ASSIGNMENT_JOB_NUMBER_2)) {
077 assignment2 = a;
078 } else if (a.getJobNumber().equals(TEST_ASSIGNMENT_JOB_NUMBER_3)) {
079 assignment3 = a;
080 } else if (a.getJobNumber().equals(TEST_ASSIGNMENT_JOB_NUMBER_4)) {
081 assignment4 = a;
082 }
083 }
084
085 // one for each test scenario involving wildcards at least...
086 Assert.assertNotNull("Test assignment not found.", assignment1);
087 Assert.assertNotNull("Test assignment not found.", assignment2);
088 Assert.assertNotNull("Test assignment not found.", assignment3);
089 Assert.assertNotNull("Test assignment not found.", assignment4);
090
091 // Testing standard lookup.
092 List<EarnCode> earnCodes = earnCodeService.getEarnCodes(assignment1, asOfDate);
093 Assert.assertEquals("Wrong number of earn codes returned.", 7, earnCodes.size());
094
095 // Wildcard on SalGroup
096 earnCodes = earnCodeService.getEarnCodes(assignment2, asOfDate);
097 Assert.assertEquals("Wrong number of earn codes returned.", 2, earnCodes.size());
098
099 // Dual Wildcards
100 earnCodes = earnCodeService.getEarnCodes(assignment3, asOfDate);
101 Assert.assertEquals("Wrong number of earn codes returned.",1, earnCodes.size());
102 }
103
104 @Test
105 public void testEarnCodeMaintenancePage() throws Exception{
106
107 HtmlPage earnCodeLookUp = HtmlUnitUtil.gotoPageAndLogin(TkTestConstants.Urls.EARN_CODE_MAINT_URL);
108 earnCodeLookUp = HtmlUnitUtil.clickInputContainingText(earnCodeLookUp, "search");
109 Assert.assertTrue("Page contains SDR entry", earnCodeLookUp.asText().contains("SDR"));
110 HtmlPage maintPage = HtmlUnitUtil.clickAnchorContainingText(earnCodeLookUp, "edit","1");
111
112 //Sai - confirm that the error is throw by not selecting a record type
113 HtmlSelect inputText= maintPage.getHtmlElementById("document.newMaintainableObject.recordMethod");
114 inputText.setDefaultValue("H");
115
116 HtmlInput inputForDescription = HtmlUnitUtil.getInputContainingText(
117 maintPage, "* Document Description");
118 inputForDescription.setValueAttribute("Description");
119 // setFieldValue(maintPage, "document.newMaintainableObject.fractionalTimeAllowed", "99");
120 // setFieldValue(maintPage, "document.newMaintainableObject.roundingOption", "T");
121
122 HtmlPage resultantPageAfterEdit = HtmlUnitUtil
123 .clickInputContainingText(maintPage, "submit");
124 System.out.println(resultantPageAfterEdit.asText());
125
126 // assertTrue("Error message for not selecting any record type",
127 // resultantPageAfterEdit.asText().contains("For this earn code you must specify Record Hours or Record Time or Record Amount"));
128
129 //Sai - confirm that the error is thrown if more than one record type is selected
130 // checkBox = maintPage.getHtmlElementById("document.newMaintainableObject.recordTime");
131 // checkBox.setChecked(true);
132 // checkBox = maintPage.getHtmlElementById("document.newMaintainableObject.recordHours");
133 // checkBox.setChecked(true);
134
135 inputForDescription = HtmlUnitUtil.getInputContainingText(
136 maintPage, "* Document Description");
137 inputForDescription.setValueAttribute("Description");
138 resultantPageAfterEdit = HtmlUnitUtil
139 .clickInputContainingText(maintPage, "submit");
140 // assertTrue("Error message for selecting more than one record type",
141 // resultantPageAfterEdit.asText().contains("For this earn code you can only specify one of the Record types"));
142 }
143
144 }