protected function setUp() { TestDataService::truncateSpecificTables(array('Employee', 'Leave', 'LeaveRequest', 'LeaveType', 'EmployeeLeaveEntitlement', 'LeavePeriod')); // Save leave type $leaveTypeData = sfYaml::load(sfConfig::get('sf_plugins_dir') . '/orangehrmCoreLeavePlugin/test/fixtures/leaveType.yml'); $leaveTypeDao = new LeaveTypeDao(); $leaveType = new LeaveType(); $leaveType->setLeaveTypeName($leaveTypeData['leaveType']['LT_001']['name']); // $leaveType->setLeaveRules($leaveTypeData['leaveType']['LT_001']['rule']); $leaveTypeDao->saveLeaveType($leaveType); $this->leaveType = $leaveType; $this->leaveTypeId = $leaveType->getLeaveTypeId(); // Save leave Period $leavePeriodData = sfYaml::load(sfConfig::get('sf_plugins_dir') . '/orangehrmCoreLeavePlugin/test/fixtures/leavePeriod.yml'); $leavePeriodService = new LeavePeriodService(); $leavePeriodService->setLeavePeriodDao(new LeavePeriodDao()); $leavePeriod = new LeavePeriod(); $leavePeriod->setStartDate($leavePeriodData['leavePeriod']['1']['startDate']); $leavePeriod->setEndDate($leavePeriodData['leavePeriod']['1']['endDate']); $leavePeriodService->saveLeavePeriod($leavePeriod); $this->leavePeriod = $leavePeriod; $this->leavePeriodId = $leavePeriod->getLeavePeriodId(); // Save Employee $employeeservice = new EmployeeService(); $this->employee = new Employee(); $employeeservice->saveEmployee($this->employee); $this->empNumber = $this->employee->getEmpNumber(); // save leave quota $this->leaveEntitlement = sfYaml::load(sfConfig::get('sf_plugins_dir') . '/orangehrmCoreLeavePlugin/test/fixtures/leaveEntitlement.yml'); $this->leaveEntitlementDao = new LeaveEntitlementDao(); }
public function testSaveLeavePeriodWithNoId() { TestDataService::truncateTables(array('LeavePeriod')); $leavePeriod = new LeavePeriod(); $leavePeriod->setStartDate("2010-01-31"); $leavePeriod->setEndDate("2011-01-31"); $this->assertTrue($this->leavePeriodDao->saveLeavePeriod($leavePeriod)); $savedLeavePeriod = TestDataService::fetchObject('LeavePeriod', 1); $this->assertEquals($leavePeriod->getLeavePeriodId(), $savedLeavePeriod->getLeavePeriodId()); $this->assertEquals($leavePeriod->getStartDate(), $savedLeavePeriod->getStartDate()); $this->assertEquals($leavePeriod->getEndDate(), $savedLeavePeriod->getEndDate()); }
public function testReadLeavePeriod() { //mocking LeavePeriodDao $lastLeavePeriod = new LeavePeriod(); $lastLeavePeriod->setStartDate("2010-01-01"); $lastLeavePeriod->setEndDate("2010-12-31"); $lastLeavePeriod->setLeavePeriodId(1); $leavePeriodDao = $this->getMock('LeavePeriodDao', array('readLeavePeriod')); $leavePeriodDao->expects($this->once())->method('readLeavePeriod')->will($this->returnValue($lastLeavePeriod)); $this->leavePeriodService->setLeavePeriodDao($leavePeriodDao); $retrievedLeavePeriod = $this->leavePeriodService->readLeavePeriod(1); $this->assertTrue($retrievedLeavePeriod instanceof LeavePeriod); }
public function xtestIsEmployeeHavingLeaveBalanceErrorCases() { $empId = 1; $leaveTypeId = "LT001"; $leaveRequest = ""; $leavePeriodId = 11; $dateApplied = '2010-09-11'; $applyDays = 2; $leaveRequest = new LeaveRequest(); $leaveRequest->setDateApplied($dateApplied); $leaveRequest->setLeavePeriodId($leavePeriodId); $entitledDays = 5; $availableLeave = 3; $leaveEntitlement = new EmployeeLeaveEntitlement(); $leaveEntitlement->setLeaveBroughtForward(2); $leaveBalance = 0; $currentLeavePeriod = new LeavePeriod(); $currentLeavePeriod->setStartDate('2010-01-01'); $currentLeavePeriod->setEndDate('2010-12-31'); $nextLeavePeriod = new LeavePeriod(); $nextLeavePeriod->setStartDate('2011-01-01'); $nextLeavePeriod->setEndDate('2011-12-31'); $leaveEntitlementService = $this->getMock('OldLeaveEntitlementService', array('getEmployeeLeaveEntitlementDays', 'readEmployeeLeaveEntitlement', 'getLeaveBalance')); $leaveEntitlementService->expects($this->any())->method('getEmployeeLeaveEntitlementDays')->with($empId, $leaveTypeId, $leavePeriodId)->will($this->returnValue($entitledDays)); $leaveEntitlementService->expects($this->any())->method('readEmployeeLeaveEntitlement')->with($empId, $leaveTypeId, $leavePeriodId)->will($this->returnValue($leaveEntitlement)); $leaveEntitlementService->expects($this->any())->method('getLeaveBalance')->will($this->returnValue($leaveBalance)); $this->leaveRequestService->setLeaveEntitlementService($leaveEntitlementService); $leaveRequestDao = $this->getMock('LeaveRequestDao', array('getNumOfAvaliableLeave')); $leaveRequestDao->expects($this->any())->method('getNumOfAvaliableLeave')->with($empId, $leaveTypeId)->will($this->returnValue($availableLeave)); $this->leaveRequestService->setLeaveRequestDao($leaveRequestDao); $leavePeriodService = $this->getMock('LeavePeriodService', array('getLeavePeriod', 'createNextLeavePeriod', 'getCurrentLeavePeriod')); $leavePeriodService->expects($this->any())->method('getLeavePeriod')->with(strtotime($leaveRequest->getDateApplied()))->will($this->returnValue($currentLeavePeriod)); $leavePeriodService->expects($this->any())->method('createNextLeavePeriod')->with(date('Y-m-d', strtotime('2010-09-13')))->will($this->returnValue($nextLeavePeriod)); $leavePeriodService->expects($this->any())->method('getCurrentLeavePeriod')->will($this->returnValue($currentLeavePeriod)); $this->leaveRequestService->setLeavePeriodService($leavePeriodService); // Trigger leave balance exceeded try { $retVal = $this->leaveRequestService->isEmployeeHavingLeaveBalance($empId, $leaveTypeId, $leaveRequest, $applyDays); $this->fail("Exception expected"); } catch (LeaveServiceException $e) { // expected - check code thrown in LeaveRequestService } }
/** * This test checks for the success scenario in case if an employee assigned a leave */ public function testAssignLeaveFailsOnHolidays() { // Set post parameters $parameters = array('txtFromDate' => '2010-11-23', 'txtToDate' => '2010-11-24', 'txtEmpID' => '0001', 'txtLeaveType' => 'LT001'); $request = $this->context->request; $request->setPostParameters($parameters); // Set request to POST method $request->setMethod(sfRequest::POST); //mocking LeaveRequestService $leaveRequestService = $this->getMock('LeaveRequestService', array('getOverlappingLeave')); $leaveTypes = TestDataService::loadObjectList('LeaveType', $this->fixture, 'LeaveTypes'); $leaveRequestService->expects($this->once())->method('getOverlappingLeave')->will($this->returnValue(array())); //mocking LeaveTypeService $leaveTypeService = $this->getMock('LeaveTypeService', array('readLeaveType', 'getLeaveTypeList')); $leaveTypeService->expects($this->once())->method('readLeaveType')->will($this->returnValue($leaveTypes[0])); $leaveTypeService->expects($this->once())->method('getLeaveTypeList')->will($this->returnValue($leaveTypes)); //mocking leave period service $leavePeriod = new LeavePeriod(); $leavePeriod->setStartDate("2010-01-01"); $leavePeriod->setEndDate("2010-12-31"); $leavePeriod->setLeavePeriodId(2); $leavePeriodService = $this->getMock('LeavePeriodService', array('isWithinNextLeavePeriod', 'createNextLeavePeriod')); $leavePeriodService->expects($this->once())->method('isWithinNextLeavePeriod')->will($this->returnValue(true)); $leavePeriodService->expects($this->once())->method('createNextLeavePeriod')->will($this->returnValue($leavePeriod)); $assignLeaveAction = new assignLeaveAction($this->context, "leave", "execute"); $assignLeaveAction->setLeaveRequestService($leaveRequestService); $assignLeaveAction->setLeaveTypeService($leaveTypeService); $assignLeaveAction->setLeavePeriodService($leavePeriodService); //mocking the form $form = $this->getMock('AssignLeaveForm', array('isValid', 'createLeaveObjectListForAppliedRange')); $form->expects($this->once())->method('isValid')->will($this->returnValue(true)); $leaves = TestDataService::loadObjectList('Leave', $this->fixture, 'Leave'); //making all leaves to holidays foreach ($leaves as $k => $obj) { $leaves[$k]->setLeaveStatus(Leave::LEAVE_STATUS_LEAVE_HOLIDAY); } $form->expects($this->once())->method('createLeaveObjectListForAppliedRange')->will($this->returnValue($leaves)); $assignLeaveAction->setForm($form); try { $assignLeaveAction->execute($request); $this->assertTrue(isset($assignLeaveAction->templateMessage['SUCCESS'])); } catch (Exception $e) { } }
/** * Creates the next leave period * * @return LeavePeriod Newly create leave period object */ public function createNextLeavePeriod($date = null) { $lastLeavePeriod = $this->getLeavePeriodDao()->findLastLeavePeriod($date); if (!is_null($lastLeavePeriod)) { $newLeavePeriod = $this->getNextLeavePeriodByCurrentEndDate($lastLeavePeriod->getEndDate()); if (!empty($newLeavePeriod)) { return $newLeavePeriod; } else { $lastEndDateTimestamp = strtotime($lastLeavePeriod->getEndDate()); $dateInNextLeavePeriodTimestamp = strtotime('+1 day', $lastEndDateTimestamp); $dateInNextLeavePeriod = date('Y-m-d', $dateInNextLeavePeriodTimestamp); $leavePeriodDataHolder = $this->_getPopulatedLeavePeriodDataHolder(); $leavePeriodDataHolder->setCurrentDate($dateInNextLeavePeriod); $nextStartDate = $this->generateStartDate($leavePeriodDataHolder); $leavePeriodDataHolder->setLeavePeriodStartDate($nextStartDate); $nextEndDate = $this->generateEndDate($leavePeriodDataHolder); $newLeavePeriod = new LeavePeriod(); $newLeavePeriod->setStartDate($nextStartDate); $newLeavePeriod->setEndDate($nextEndDate); try { $this->getLeavePeriodDao()->saveLeavePeriod($newLeavePeriod); } catch (Exception $e) { // TODO: Warn } return $newLeavePeriod; } } return null; }
public function execute($request) { if (!Auth::instance()->hasRole(Auth::ADMIN_ROLE)) { $this->forward('leave', 'showLeavePeriodNotDefinedWarning'); } $this->setForm(new LeavePeriodForm(array(), array(), true)); $this->isLeavePeriodDefined = OrangeConfig::getInstance()->getAppConfValue(ConfigService::KEY_LEAVE_PERIOD_DEFINED); $this->currentLeavePeriod = $this->getLeavePeriodService()->getCurrentLeavePeriod(); if ($this->isLeavePeriodDefined) { $endDateElements = explode(' ', $this->currentLeavePeriod->getEndDateFormatted('F d')); $endDate = __($endDateElements[0]) . ' ' . $endDateElements[1]; $nextPeriodStartDateTimestamp = strtotime('+1 day', strtotime($this->currentLeavePeriod->getEndDate())); $startMonthValue = (int) date('m', $nextPeriodStartDateTimestamp); $startDateValue = (int) date('d', $nextPeriodStartDateTimestamp); } else { $endDate = '-'; $startMonthValue = 0; $startDateValue = 0; } $this->endDate = $endDate; $this->startMonthValue = $startMonthValue; $this->startDateValue = $startDateValue; if ($this->getUser()->hasFlash('templateMessage')) { list($this->messageType, $this->message) = $this->getUser()->getFlash('templateMessage'); } // this section is for saving leave period if ($request->isMethod('post')) { $leavePeriodService = $this->getLeavePeriodService(); $this->form->bind($request->getParameter($this->form->getName())); if ($this->form->isValid()) { $this->_setLeapYearLeavePeriodDetails($this->form); $leavePeriodDataHolder = $this->_getPopulatedLeavePeriodDataHolder(); $fullStartDate = $leavePeriodService->generateStartDate($leavePeriodDataHolder); $leavePeriodDataHolder->setLeavePeriodStartDate($fullStartDate); $fullEndDate = $leavePeriodService->generateEndDate($leavePeriodDataHolder); $currentLeavePeriod = $leavePeriodService->getCurrentLeavePeriod(); $this->getUser()->setFlash('templateMessage', array('success', __(TopLevelMessages::SAVE_SUCCESS))); if (!is_null($currentLeavePeriod)) { $leavePeriodService->adjustCurrentLeavePeriod($fullEndDate); } else { $leavePeriod = new LeavePeriod(); $leavePeriod->setStartDate($fullStartDate); $leavePeriod->setEndDate($fullEndDate); $leavePeriodService->saveLeavePeriod($leavePeriod); } $this->redirect('leave/defineLeavePeriod'); } } }