001 /**
002 * Copyright 2004-2012 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.roles.service;
017
018 import java.math.BigDecimal;
019 import java.sql.Date;
020 import java.sql.Timestamp;
021 import java.util.List;
022
023 import org.joda.time.DateTime;
024 import org.junit.Assert;
025 import org.junit.Test;
026 import org.kuali.hr.job.Job;
027 import org.kuali.hr.test.KPMETestCase;
028 import org.kuali.hr.time.position.Position;
029 import org.kuali.hr.time.roles.TkRole;
030 import org.kuali.hr.time.service.base.TkServiceLocator;
031 import org.kuali.hr.time.util.TKUtils;
032 import org.kuali.hr.time.util.TkConstants;
033 import org.kuali.rice.krad.service.KRADServiceLocator;
034
035 public class TkRoleServiceTest extends KPMETestCase {
036
037 public static final String ADMIN = "admin";
038 public static final String TEST_USER = "eric";
039 public static final Long WORK_AREA = 999L;
040
041 private String posRoleId = null;
042
043 @Test
044 public void testGetAnyWorkAreaRoles() throws Exception {
045 Date asOfDate = new Date((new DateTime(2010, 8, 25, 12, 0, 0, 0, TKUtils.getSystemDateTimeZone())).getMillis());
046 List<TkRole> roles = TkServiceLocator.getTkRoleService().getWorkAreaRoles(WORK_AREA, asOfDate);
047 Assert.assertNotNull(roles);
048 Assert.assertEquals("Incorrect number of roles.", 4, roles.size());
049 for (TkRole role : roles) {
050 Assert.assertTrue("Incorrect values.",
051 (role.getPrincipalId().equals(ADMIN) && role.getRoleName().equals(TkConstants.ROLE_TK_LOCATION_ADMIN))
052 || (role.getPrincipalId().equals(ADMIN) && role.getRoleName().equals(TkConstants.ROLE_TK_APPROVER))
053 || (role.getPrincipalId().equals(TEST_USER) && role.getRoleName().equals(TkConstants.ROLE_TK_LOCATION_ADMIN))
054 || (role.getPrincipalId().equals(TEST_USER) && role.getRoleName().equals(TkConstants.ROLE_TK_APPROVER)));
055 }
056 }
057
058 @Test
059 public void testGetApproverWorkAreaRoles() throws Exception {
060 Date asOfDate = new Date((new DateTime(2010, 8, 25, 12, 0, 0, 0, TKUtils.getSystemDateTimeZone())).getMillis());
061 List<TkRole> roles = TkServiceLocator.getTkRoleService().getWorkAreaRoles(WORK_AREA, TkConstants.ROLE_TK_APPROVER, asOfDate);
062 Assert.assertNotNull(roles);
063 Assert.assertEquals("Incorrect number of roles.", 2, roles.size());
064 for (TkRole role : roles) {
065 Assert.assertTrue("Incorrect values.", role.getPrincipalId().equals(ADMIN) || role.getPrincipalId().equals(TEST_USER));
066 }
067 }
068
069 @Test
070 public void testGetRolesForPrincipal() throws Exception {
071 Date asOfDate = new Date((new DateTime(2010, 8, 21, 12, 0, 0, 0, TKUtils.getSystemDateTimeZone())).getMillis());
072 List<TkRole> roles = TkServiceLocator.getTkRoleService().getRoles(TEST_USER, TkConstants.ROLE_TK_APPROVER, asOfDate);
073 Assert.assertNotNull(roles);
074 Assert.assertEquals("Incorrect number of roles.", 1, roles.size());
075 for (TkRole role: roles) {
076 Assert.assertTrue("Incorrect values.",
077 role.getPrincipalId().equals(TEST_USER)
078 && role.getRoleName().equals(TkConstants.ROLE_TK_APPROVER)
079 && role.getEffectiveDate().before(asOfDate));
080 }
081 }
082
083 @Test
084 public void testGetEffectiveDateRolesForPrincipal() throws Exception {
085 Date asOfDate = new Date((new DateTime(2010, 8, 1, 12, 0, 0, 0, TKUtils.getSystemDateTimeZone())).getMillis());
086 List<TkRole> roles = TkServiceLocator.getTkRoleService().getRoles(TEST_USER, asOfDate);
087 Assert.assertNotNull(roles);
088 Assert.assertEquals("Incorrect number of roles.", 2, roles.size());
089 for (TkRole role: roles) {
090 Assert.assertTrue("Incorrect values.",
091 role.getPrincipalId().equals(TEST_USER)
092 && (role.getRoleName().equals(TkConstants.ROLE_TK_LOCATION_ADMIN) || role.getRoleName().equals(TkConstants.ROLE_TK_APPROVER)
093 && role.getEffectiveDate().before(asOfDate)));
094 }
095 }
096
097 @Test
098 public void testPositionRole() throws Exception {
099 List<TkRole> lstRoles = TkServiceLocator.getTkRoleService().getRoles("earl", TKUtils.getCurrentDate());
100 Assert.assertTrue(lstRoles!=null && !lstRoles.isEmpty());
101 }
102
103 @Override
104 public void setUp() throws Exception {
105 super.setUp();
106 Position pos = new Position();
107 pos.setActive(true);
108 pos.setTimestamp(new Timestamp(System.currentTimeMillis()));
109 pos.setDescription("Advising");
110 pos.setEffectiveDate(new Date((new DateTime(2010, 8, 20, 12, 0, 0, 0, TKUtils.getSystemDateTimeZone())).getMillis()));
111 pos.setPositionNumber("123456");
112 KRADServiceLocator.getBusinessObjectService().save(pos);
113 String posNumber = pos.getPositionNumber();
114
115 //setup a job with that position
116 Job job = new Job();
117 job.setPositionNumber(posNumber);
118 job.setPrincipalId("earl");
119 job.setJobNumber(0L);
120 job.setEffectiveDate(new Date((new DateTime(2010, 8, 20, 12, 0, 0, 0, TKUtils.getSystemDateTimeZone())).getMillis()));
121 job.setDept("BL-CHEM");
122 job.setHrSalGroup("BW1");
123 job.setPayGrade("2IT");
124 job.setTimestamp(new Timestamp(System.currentTimeMillis()));
125 job.setCompRate(BigDecimal.ZERO);
126 job.setLocation("BL");
127 job.setStandardHours(BigDecimal.ZERO);
128 job.setHrPayType("BW1");
129 job.setActive(true);
130 job.setPrimaryIndicator(true);
131 job.setHrJobId("9999");
132
133 // This is causing all the unit tests to have an error - needs to be looked into later.
134 TkServiceLocator.getJobService().saveOrUpdate(job);
135
136 TkRole tkRole = new TkRole();
137 tkRole.setPrincipalId(null);
138 tkRole.setRoleName(TkConstants.ROLE_TK_APPROVER);
139 tkRole.setUserPrincipalId("admin");
140 tkRole.setWorkArea(1234L);
141 tkRole.setEffectiveDate(new Date((new DateTime(2010, 8, 20, 12, 0, 0, 0, TKUtils.getSystemDateTimeZone())).getMillis()));
142 tkRole.setTimestamp(new Timestamp(System.currentTimeMillis()));
143 tkRole.setActive(true);
144 tkRole.setPositionNumber(posNumber);
145
146 TkServiceLocator.getTkRoleService().saveOrUpdate(tkRole);
147 posRoleId = tkRole.getHrRolesId();
148 }
149
150 @Override
151 public void tearDown() throws Exception {
152 TkRole tkRole = TkServiceLocator.getTkRoleService().getRole(posRoleId);
153 KRADServiceLocator.getBusinessObjectService().delete(tkRole);
154 super.tearDown();
155 }
156 }