diff --git a/tests/Admin/AdminTest.php b/tests/Admin/AdminTest.php new file mode 100644 index 0000000..d30a810 --- /dev/null +++ b/tests/Admin/AdminTest.php @@ -0,0 +1,26 @@ +getId()); + self::assertEquals($id, $element->getId()); + + $elementR = SessionElementMapper::get($element->getId()); + self::assertEquals($element->getDatetime()->format('Y-m-d'), $elementR->getDatetime()->format('Y-m-d')); + self::assertEquals($element->getStatus(), $elementR->getStatus()); + self::assertEquals($element->getSession()->getEmployee(), $elementR->getSession()->getEmployee()->getId()); + } +} diff --git a/tests/Models/SessionElementTest.php b/tests/Models/SessionElementTest.php new file mode 100644 index 0000000..f4dfb97 --- /dev/null +++ b/tests/Models/SessionElementTest.php @@ -0,0 +1,42 @@ +getId()); + self::assertEquals(0, $element->getSession()); + self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $element->getDatetime()->format('Y-m-d')); + self::assertEquals(ClockingStatus::START, $element->getStatus()); + } + + public function testSetGet() : void + { + $element = new SessionElement(); + + $element->setStatus(ClockingStatus::END); + self::assertEquals(ClockingStatus::END, $element->getStatus()); + } +} diff --git a/tests/Models/SessionMapperTest.php b/tests/Models/SessionMapperTest.php new file mode 100644 index 0000000..ebe2ff5 --- /dev/null +++ b/tests/Models/SessionMapperTest.php @@ -0,0 +1,103 @@ +setStatus(ClockingStatus::START); + $session->addSessionElement($element); + + $id = SessionMapper::create($session); + self::assertGreaterThan(0, $session->getId()); + self::assertEquals($id, $session->getId()); + + $sessionR = SessionMapper::get($session->getId()); + self::assertEquals($session->getType(), $sessionR->getType()); + } + + /** + * @group volume + * @group module + * @coversNothing + */ + public function testVolume() : void + { + for ($i = 0; $i < 1000; ++$i) { + $day = \date('Y-m-d', \strtotime(' -' . ($i + 1) . ' day')); + $weekday = \date('D', \strtotime($day)); + + if ($weekday === 'Sat' || $weekday === 'Sun') { + continue; + } + + $session = new Session(1); + + $hourStart = \mt_rand(7, 9); + $minutesStart = \mt_rand(0, 59); + + $hourEnd = \mt_rand(16, 18); + $minutesEnd = \mt_rand(0, 59); + + $hourBreakStart = \mt_rand(11, 14); + $minutesBreakStart = \mt_rand(0, 59); + + $breakLength = \mt_rand(5, 90); + + // start + $dt = new \DateTime($day . ' ' . $hourStart . ':' . $minutesStart); + $element = new SessionElement($session, $dt); + $element->setStatus(ClockingStatus::START); + $session->addSessionElement($element); + + // break start + $dt = new \DateTime($day . ' ' . $hourBreakStart . ':' . $minutesBreakStart); + $element = new SessionElement($session, $dt); + $element->setStatus(ClockingStatus::PAUSE); + $session->addSessionElement($element); + + // work continue + $dt = new \DateTime($day . ' ' . ($hourBreakStart + ((int) (($minutesBreakStart + $breakLength) / 60))) . ':' . (($minutesBreakStart + $breakLength) % 60)); + $element = new SessionElement($session, $dt); + $element->setStatus(ClockingStatus::CONTINUE); + $session->addSessionElement($element); + + // end + $dt = new \DateTime($day . ' ' . $hourEnd . ':' . $minutesEnd); + $element = new SessionElement($session, $dt); + $element->setStatus(ClockingStatus::END); + $session->addSessionElement($element); + + SessionMapper::create($session); + } + } +} diff --git a/tests/Models/SessionTest.php b/tests/Models/SessionTest.php new file mode 100644 index 0000000..37cb948 --- /dev/null +++ b/tests/Models/SessionTest.php @@ -0,0 +1,52 @@ +getId()); + self::assertEquals(0, $session->getBusy()); + self::assertEquals(ClockingType::OFFICE, $session->getType()); + self::assertEquals(ClockingStatus::START, $session->getStatus()); + self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $session->getStart()->format('Y-m-d')); + self::assertNull($session->getEnd()); + } + + public function testSetGet() : void + { + $session = new Session(); + + $session->setType(ClockingType::VACATION); + self::assertEquals(ClockingType::VACATION, $session->getType()); + + $element = new SessionElement(0, new \DateTime('now')); + $element->setStatus(ClockingStatus::PAUSE); + $session->addSessionElement($element); + + self::assertEquals(ClockingStatus::PAUSE, $session->getStatus()); + } +}