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) {
     }
 }
Example #6
0
 /**
  * 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');
         }
     }
 }