add tests

This commit is contained in:
Dennis Eichhorn 2020-03-14 14:15:03 +01:00
parent f32340303e
commit b17058c20d
5 changed files with 262 additions and 0 deletions

26
tests/Admin/AdminTest.php Normal file
View File

@ -0,0 +1,26 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\HumanResourceTimeRecording\Admin;
/**
* @internal
*/
class AdminTest extends \PHPUnit\Framework\TestCase
{
protected const MODULE_NAME = 'HumanResourceTimeRecording';
protected const URI_LOAD = '';
use \Modules\tests\ModuleTestTrait;
}

View File

@ -0,0 +1,39 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\HumanResourceTimeRecording\Models;
use Modules\HumanResourceTimeRecording\Models\Session;
use Modules\HumanResourceTimeRecording\Models\SessionElement;
use Modules\HumanResourceTimeRecording\Models\SessionElementMapper;
/**
* @internal
*/
class SessionElementMapperTest extends \PHPUnit\Framework\TestCase
{
public function testCRUD() : void
{
$element = new SessionElement(new Session(1), new \DateTime('now'));
$id = SessionElementMapper::create($element);
self::assertGreaterThan(0, $element->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());
}
}

View File

@ -0,0 +1,42 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\HumanResourceTimeRecording\Models;
use Modules\HumanResourceTimeRecording\Models\ClockingStatus;
use Modules\HumanResourceTimeRecording\Models\SessionElement;
/**
* @internal
*/
class SessionElementTest extends \PHPUnit\Framework\TestCase
{
public function testDefault() : void
{
$element = new SessionElement();
self::assertEquals(0, $element->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());
}
}

View File

@ -0,0 +1,103 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\HumanResourceTimeRecording\Models;
use Modules\HumanResourceTimeRecording\Models\ClockingStatus;
use Modules\HumanResourceTimeRecording\Models\Session;
use Modules\HumanResourceTimeRecording\Models\SessionElement;
use Modules\HumanResourceTimeRecording\Models\SessionMapper;
/**
* @internal
*/
class SessionMapperTest extends \PHPUnit\Framework\TestCase
{
/**
* @covers Modules\HumanResourceTimeRecording\Models\SessionMapper
* @group module
*/
public function testCRUD() : void
{
$session = new Session(1);
$dt = new \DateTime(\date('Y-m-d', \strtotime('now')) . ' 7:55:34');
$element = new SessionElement($session, $dt);
$element->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);
}
}
}

View File

@ -0,0 +1,52 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\tests\HumanResourceTimeRecording\Models;
use Modules\HumanResourceTimeRecording\Models\ClockingStatus;
use Modules\HumanResourceTimeRecording\Models\ClockingType;
use Modules\HumanResourceTimeRecording\Models\Session;
use Modules\HumanResourceTimeRecording\Models\SessionElement;
/**
* @internal
*/
class SessionTest extends \PHPUnit\Framework\TestCase
{
public function testDefault() : void
{
$session = new Session();
self::assertEquals(0, $session->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());
}
}