Пример #1
0
 /**
  * Tests validateTimeEvent method.
  */
 public function testValidateTimeEvent()
 {
     $timeController = new TimeController();
     $timesheet1 = $this->_getTimesheet(11, 10, 10, '2007-05-14', '2007-05-20', 0);
     // Test time event within timesheet period
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(true, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Test time event out side timesheet period
     $timeEvent = $this->_getTimeEvent(2, 10, 10, 10, '2007-05-13 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent(3, 10, 10, 10, '2007-05-21 00:10', '2007-05-21 03:10', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent(4, 10, 10, 10, '2007-05-13 23:30', '2007-05-14 04:30', '2007-07-07', 5 * 3600, "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent(5, 10, 10, 10, '2007-05-20 23:30', '2007-05-21 04:30', '2007-07-07', 5 * 3600, "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent(5, 10, 10, 10, '2007-05-21 07:30', '2007-05-21 04:30', '2007-07-07', 5 * 3600, "desc");
     $this->assertSame(TimeController::ZeroOrNegativeIntervalSpecified_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Test invalid timesheet periods
     $timesheet2 = $this->_getTimesheet(11, 10, 10, '2007-05-14', '', 0);
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::INVALID_TIMESHEET_PERIOD_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet2));
     $timesheet2 = $this->_getTimesheet(11, 10, 10, '', '2007-05-14', 0);
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::INVALID_TIMESHEET_PERIOD_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet2));
     $timesheet2 = $this->_getTimesheet(11, 10, 10, '2007-05-15', '2007-05-14', 0);
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::INVALID_TIMESHEET_PERIOD_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet2));
     // Empty project Id
     $timeEvent = $this->_getTimeEvent(1, null, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::ProjectNotSpecified_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Empty activity Id
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc", "");
     $this->assertSame(TimeController::ActivityNotSpecified_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // invalid start time
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-15-13 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::InvalidStartTime_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Invalid end time
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', 'xyz', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::InvalidEndTime_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // reported date not given
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '', 3 * 3600, "desc");
     $this->assertSame(TimeController::ReportedDateNotSpecified_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // invalid reported date
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '929-19-191', 3 * 3600, "desc");
     $this->assertSame(TimeController::InvalidReportedDate_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Empty duration allowed
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', "", "desc");
     $this->assertSame(true, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // 0 duration allowed for event with id
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', "0", "desc");
     $this->assertSame(true, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Invalid duration values
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', "-1", "desc");
     $this->assertSame(TimeController::InvalidDuration_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // 0 duration not allowed for new entry (without event id)
     $timeEvent = $this->_getTimeEvent("", 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', "0", "desc");
     $this->assertSame(TimeController::InvalidDuration_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Reported date and duration given
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '', '', '2007-05-14', 3 * 3600, "desc");
     $this->assertSame(true, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Reported date outside period
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '', '', '2007-05-13', 3 * 3600, "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '', '', '2007-05-21', 3 * 3600, "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '', '', '2007-05-20', 25 * 3600, "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // zero duration + reported date
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '', '', '2007-05-20', 0, "desc");
     $this->assertSame(TimeController::NoValidDurationOrInterval_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Reported date on period end date
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '', '', '2007-05-20', 10 * 3600, "desc");
     $this->assertSame(true, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Only start time given
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '', '2007-05-20', "", "desc");
     $this->assertSame(true, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // start time outside timesheet period
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-13 23:00', '', '2007-05-20', "", "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-21 12:00', '', '2007-05-20', "", "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // start time and end time given
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 13:00', '2007-05-20', "", "desc");
     $this->assertSame("", $timeEvent->getDuration());
     $this->assertSame(true, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // check duration is set
     $this->assertSame(3600, $timeEvent->getDuration());
     // start time == end time
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 13:10', '2007-05-14 13:10', '2007-05-20', "", "desc");
     $this->assertSame(TimeController::ZeroOrNegativeIntervalSpecified_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // start time == end time and duration == 0
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 13:10', '2007-05-14 13:10', '2007-05-20', "", "desc");
     $this->assertSame(TimeController::ZeroOrNegativeIntervalSpecified_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // start time > end time
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 13:11', '2007-05-14 13:10', '2007-05-20', "", "desc");
     $this->assertSame(TimeController::ZeroOrNegativeIntervalSpecified_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // start time outside timesheet period
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-13 13:11', '2007-05-13 13:30', '2007-05-20', "", "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // end time outside timesheet period
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-13 21:11', '2007-05-21 13:30', '2007-05-20', "", "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // start time and duration given
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(true, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // end time set
     $this->assertSame("2007-05-14 15:00", $timeEvent->getEndTime());
     // start outside period
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-13 12:00', '', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // End time outside period
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-12 22:00', '', '2007-07-07', 5 * 3600, "desc");
     $this->assertSame(TimeController::EVENT_OUTSIDE_PERIOD_FAILURE, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // Start time and zero duration not allowed
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 22:00', '', '2007-07-07', 0, "desc");
     $this->assertSame(TimeController::NoValidDurationOrInterval_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // start, end and duration allowed for events with id
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(true, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // start, end and duration not allowed for new events
     $timeEvent = $this->_getTimeEvent("", 10, 10, 10, '2007-05-14 12:00', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::NotAllowedToSpecifyDurationAndInterval_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // End time and duration not allowed
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '', '2007-05-14 15:00', '2007-07-07', 3 * 3600, "desc");
     $this->assertSame(TimeController::NoValidDurationOrInterval_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // End time only not allowed
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '', '2007-05-14 15:00', '2007-07-07', "", "desc");
     $this->assertSame(TimeController::NoValidDurationOrInterval_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, null, '2007-05-14 15:00', '2007-07-07', null, "desc");
     $this->assertSame(TimeController::NoValidDurationOrInterval_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     // just reported date not allowed
     $timeEvent = $this->_getTimeEvent(1, 10, 10, 10, '', '', '2007-07-07', "", "desc");
     $this->assertSame(TimeController::NoValidDurationOrInterval_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent("", 10, 10, 10, '', '', '2007-07-07', "", "desc");
     $this->assertSame(TimeController::NoValidDurationOrInterval_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
     $timeEvent = $this->_getTimeEvent("", 10, 10, 10, null, null, '2007-07-07', null, "desc");
     $this->assertSame(TimeController::NoValidDurationOrInterval_ERROR, $timeController->validateTimeEvent($timeEvent, $timesheet1));
 }