View Javadoc
1   /**
2    * Copyright 2004-2014 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.hr.lm.permission.service;
17  
18  import org.joda.time.LocalDate;
19  import org.junit.After;
20  import org.junit.Assert;
21  import org.junit.Before;
22  import org.junit.Test;
23  import org.kuali.hr.KPMEWebTestCase;
24  import org.kuali.kpme.core.FunctionalTest;
25  import org.kuali.kpme.core.api.principal.PrincipalHRAttributes;
26  import org.kuali.kpme.core.calendar.CalendarBo;
27  import org.kuali.kpme.core.principal.PrincipalHRAttributesBo;
28  import org.kuali.kpme.core.service.HrServiceLocator;
29  import org.kuali.kpme.tklm.api.leave.block.LeaveBlock;
30  import org.kuali.kpme.tklm.leave.service.LmServiceLocator;
31  import org.kuali.rice.krad.service.KRADServiceLocator;
32  import org.kuali.rice.krad.service.KRADServiceLocatorWeb;
33  
34  @FunctionalTest
35  public class LMPermissionServiceTest extends KPMEWebTestCase {
36  	
37  	@Before
38  	public void setUp() throws Exception{
39  		super.setUp();
40  		// change taget person to a non-admin
41  	    //HrContext.setTargetPrincipalId("eric");
42  	    PrincipalHRAttributesBo phra = PrincipalHRAttributesBo.from(HrServiceLocator.getPrincipalHRAttributeService().getPrincipalHRAttributes("2"));
43  	    phra.setLeaveCalendar("BWS-LM");
44  	    phra.setLeaveCalObj(CalendarBo.from(HrServiceLocator.getCalendarService().getCalendarByGroup("BWS-LM")));
45  	    KRADServiceLocatorWeb.getLegacyDataAdapter().save(phra);
46  	}
47  
48  	@After
49  	public void tearDown() throws Exception {
50  		super.tearDown();
51  	    //HrContext.setTargetPrincipalId("admin");
52  	    PrincipalHRAttributesBo phra = PrincipalHRAttributesBo.from(HrServiceLocator.getPrincipalHRAttributeService().getPrincipalHRAttributes("2"));
53  	    phra.setLeaveCalendar(null);
54  	    phra.setLeaveCalObj(null);
55  	    KRADServiceLocatorWeb.getLegacyDataAdapter().save(phra);
56  	}
57  	
58  	@Test
59  	// added this brand new test for kpme-2109 so this test does not cover all existing scenarios,
60  	// only system scheduled time off usage leave blocks that can be banked or transferred
61  	public void testCanDeleteLeaveBlockForSSTOUsageLB() {
62  		// leave block 6000 is a bankable ssto usage block that is on current leave calendar, 
63  		// ssto 2000's unused time is "B"
64  		LeaveBlock.Builder lb = LeaveBlock.Builder.create(LmServiceLocator.getLeaveBlockService().getLeaveBlock("6000"));
65  		lb.setLeaveDateTime(LocalDate.now().toDateTimeAtStartOfDay());
66  		boolean deleteFlag = LmServiceLocator.getLMPermissionService().canDeleteLeaveBlock("eric", lb.build());
67  		Assert.assertTrue("Leave Block 6000 should be deletable", deleteFlag);
68  		
69  		// leave block 6001 is a ssto usage block that can be transferred, ssto 2001's unused time is "T"
70          lb = LeaveBlock.Builder.create(LmServiceLocator.getLeaveBlockService().getLeaveBlock("6001"));
71  		lb.setLeaveDateTime(LocalDate.now().toDateTimeAtStartOfDay());
72  		deleteFlag = LmServiceLocator.getLMPermissionService().canDeleteLeaveBlock("eric", lb.build());
73  		Assert.assertTrue("Leave Block 6001 should be deletable", deleteFlag);
74  		
75  		// leave block 6002 is a ssto usage block that is not on current leave calendar
76          lb = LeaveBlock.Builder.create(LmServiceLocator.getLeaveBlockService().getLeaveBlock("6002"));
77  		deleteFlag = LmServiceLocator.getLMPermissionService().canDeleteLeaveBlock("eric", lb.build());
78  		Assert.assertFalse("Leave Block 6002 should NOT be deletable", deleteFlag);
79  		
80  		// leave block 6003 is a ssto accrual block, not a usage, it's leave amount is 8
81          lb = LeaveBlock.Builder.create(LmServiceLocator.getLeaveBlockService().getLeaveBlock("6003"));
82          lb.setLeaveDateTime(LocalDate.now().toDateTimeAtStartOfDay());
83  		deleteFlag = LmServiceLocator.getLMPermissionService().canDeleteLeaveBlock("eric", lb.build());
84  		Assert.assertFalse("Leave Block 6003 should NOT be deletable", deleteFlag);
85  		
86  		
87  	}
88  }