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.timeblock.service;
017    
018    import java.text.DateFormat;
019    import java.text.SimpleDateFormat;
020    
021    import org.junit.Assert;
022    import org.junit.Test;
023    import org.kuali.hr.test.KPMETestCase;
024    import org.kuali.hr.time.service.base.TkServiceLocator;
025    import org.kuali.hr.time.timeblock.TimeBlock;
026    import org.kuali.rice.krad.util.GlobalVariables;
027    
028    public class TimeBlockServiceTest extends KPMETestCase {
029            
030            private static final DateFormat DATE_FORMAT = new SimpleDateFormat("MM/dd/yy");
031    
032            @Test
033            public void testIsTimeBlockEditableAdmin() throws Exception {
034                    TimeBlock tb = new TimeBlock();
035                    tb.setJobNumber(new Long(30));
036                    tb.setBeginDate(new java.sql.Date(DATE_FORMAT.parse("01/01/2010").getTime()));
037                    tb.setEndDate(new java.sql.Date(DATE_FORMAT.parse("01/01/2010").getTime()));
038                    
039                    GlobalVariables.getUserSession().setBackdoorUser("admin");
040                    
041                    tb.setUserPrincipalId("admin");
042                    boolean editable = TkServiceLocator.getTimeBlockService().isTimeBlockEditable(tb);
043                    Assert.assertEquals("TimeBlock created by admin should be editable by admin", true, editable);
044    
045                    tb.setUserPrincipalId("eric");
046                    editable = TkServiceLocator.getTimeBlockService().isTimeBlockEditable(tb);
047                    Assert.assertEquals("TimeBlock created by eric should be editable by admin", true, editable);
048            
049                    tb.setUserPrincipalId("eric");
050                    tb.setClockLogCreated(true);
051                    editable = TkServiceLocator.getTimeBlockService().isTimeBlockEditable(tb);
052                    Assert.assertEquals("TimeBlock created by Clock in/out should be editable by admin", true, editable);
053            }
054            
055            @Test
056            public void testIsTimeBlockEditableUser() throws Exception {
057                    TimeBlock tb = new TimeBlock();
058                    tb.setJobNumber(new Long(1));
059                    tb.setBeginDate(new java.sql.Date(DATE_FORMAT.parse("08/12/2010").getTime()));
060                    tb.setEndDate(new java.sql.Date(DATE_FORMAT.parse("08/12/2010").getTime()));
061                    
062                    GlobalVariables.getUserSession().setBackdoorUser("eric");
063                    
064                    tb.setUserPrincipalId("admin");
065                    boolean editable = TkServiceLocator.getTimeBlockService().isTimeBlockEditable(tb);
066                    Assert.assertEquals("TimeBlock created by admin should NOT be editable by eric", false, editable);
067                    
068                    tb.setUserPrincipalId("eric");
069                    tb.setClockLogCreated(true);
070                    editable = TkServiceLocator.getTimeBlockService().isTimeBlockEditable(tb);
071                    Assert.assertEquals("TimeBlock created by Clock in/out should NOT be editable by eric", false, editable);
072            }
073    
074    }