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.detail.web;
017
018 import java.math.BigDecimal;
019 import java.sql.Timestamp;
020 import java.util.ArrayList;
021 import java.util.Collection;
022 import java.util.Iterator;
023 import java.util.List;
024
025 import org.junit.Assert;
026 import org.junit.Test;
027 import org.kuali.hr.test.KPMETestCase;
028 import org.kuali.hr.time.graceperiod.rule.GracePeriodRule;
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.timeblock.TimeBlock;
033 import org.kuali.hr.time.timeblock.TimeHourDetail;
034 import org.kuali.hr.time.timesheet.TimesheetDocument;
035 import org.kuali.hr.time.workflow.TimesheetDocumentHeader;
036 import org.kuali.rice.krad.service.KRADServiceLocator;
037
038 import com.gargoylesoftware.htmlunit.html.HtmlPage;
039
040 public class ActualTimeInquiryWebTest extends KPMETestCase {
041 private String documentId;
042 private TimeBlock timeBlock;
043
044 @Override
045 public void setUp() throws Exception {
046 super.setUp();
047
048 //create current timeshee
049
050
051 }
052
053 @Test
054 public void testActualTimeInquiry() throws Exception {
055 String baseUrl = TkTestConstants.Urls.TIME_DETAIL_URL;
056 HtmlPage page = HtmlUnitUtil.gotoPageAndLogin(getWebClient(), baseUrl);
057 Assert.assertNotNull(page);
058 Assert.assertTrue("Clock Page contains Actual Time Inquiry Button", page.asText().contains("Actual Time Inquiry"));
059
060 String atiUrl = baseUrl + "?methodToCall=actualTimeInquiry";
061 HtmlPage testPage1 = HtmlUnitUtil.gotoPageAndLogin(getWebClient(), atiUrl);
062 Assert.assertNotNull(testPage1);
063 Assert.assertTrue("Actual Time Inquiry page contains close Button", testPage1.asText().contains("Close"));
064 Assert.assertTrue("Actual Time Inquiry page contains No value found message", testPage1.asText().contains("No values match this search."));
065
066 this.createTB();
067 this.changeGracePeriodRule();
068 atiUrl = baseUrl + "?methodToCall=actualTimeInquiry&documentId=" + documentId;
069 HtmlPage testPage2 = HtmlUnitUtil.gotoPageAndLogin(getWebClient(), atiUrl);
070 Assert.assertTrue("Actual Time Inquiry page contains One item retrived message", testPage2.asText().contains("One item retrieved."));
071 }
072
073 public void createTB() {
074 timeBlock = new TimeBlock();
075 timeBlock.setUserPrincipalId("admin");
076 timeBlock.setPrincipalId("admin");
077 timeBlock.setJobNumber(2L);
078 timeBlock.setWorkArea(1234L);
079 timeBlock.setTask(1L);
080 timeBlock.setEarnCode("RGN");
081 Timestamp beginTimestamp = new Timestamp(System.currentTimeMillis());
082 timeBlock.setBeginTimestamp(beginTimestamp);
083 Timestamp endTimestamp = new Timestamp(System.currentTimeMillis());
084 timeBlock.setEndTimestamp(endTimestamp);
085 TimeHourDetail timeHourDetail = new TimeHourDetail();
086 timeHourDetail.setEarnCode("RGN");
087 timeHourDetail.setHours(new BigDecimal(2.0));
088 timeBlock.getTimeHourDetails().add(timeHourDetail);
089 timeBlock.setHours(new BigDecimal(2.0));
090 timeBlock.setClockLogCreated(Boolean.TRUE);
091 List<TimeBlock> tbList = new ArrayList<TimeBlock>();
092 documentId = this.maxDocumentId().toString();
093 timeBlock.setDocumentId(documentId);
094 tbList.add(timeBlock);
095 TkServiceLocator.getTimeBlockService().saveTimeBlocks(tbList);
096
097 TimesheetDocument td = TkServiceLocator.getTimesheetService().getTimesheetDocument(documentId.toString());
098 td.setTimeBlocks(tbList);
099 }
100
101 public void changeGracePeriodRule() {
102 GracePeriodRule gracePeriodRule = TkServiceLocator.getGracePeriodService().getGracePeriodRule(timeBlock.getBeginDate());
103 gracePeriodRule.setHourFactor(new BigDecimal("1"));
104 KRADServiceLocator.getBusinessObjectService().save(gracePeriodRule);
105 }
106
107
108 public Long maxDocumentId() {
109 Collection aCol = KRADServiceLocator.getBusinessObjectService().findAll(TimesheetDocumentHeader.class);
110 Long maxId = new Long(-1);
111 Iterator<TimesheetDocumentHeader> itr = aCol.iterator();
112 while (itr.hasNext()) {
113 TimesheetDocumentHeader tdh = itr.next();
114 Long temp = new Long(tdh.getDocumentId());
115 if(temp > maxId) {
116 maxId = temp;
117 }
118 }
119 return maxId;
120 }
121 }