Test fixes
Some checks failed
Image optimization / general_image_workflow (push) Has been cancelled
CI / general_module_workflow_php (push) Has been cancelled
CI / general_module_workflow_js (push) Has been cancelled

This commit is contained in:
Dennis Eichhorn 2024-05-16 02:14:54 +00:00
parent 1e0a52edad
commit 4822b1f20c
11 changed files with 42 additions and 50 deletions

View File

@ -72,11 +72,11 @@ final class ApiClockingTypeController extends Controller
*/
private function createClockingTypeFromRequest(RequestAbstract $request) : ClockingType
{
$clockingType = new ClockingType($request->getDataString('name') ?? '');
$clockingType->isWork = $request->getDataBool('is_work') ?? false;
$clockingType = new ClockingType($request->getDataString('name') ?? '');
$clockingType->isWork = $request->getDataBool('is_work') ?? false;
$clockingType->customFutureTimeAllowed = $request->getDataBool('custom_future_time_allowed') ?? false;
$clockingType->customPastTimeAllowed = $request->getDataBool('custom_past_time_allowed') ?? false;
$clockingType->correctionAllowed = $request->getDataBool('correction_allowed') ?? false;
$clockingType->customPastTimeAllowed = $request->getDataBool('custom_past_time_allowed') ?? false;
$clockingType->correctionAllowed = $request->getDataBool('correction_allowed') ?? false;
$clockingType->setL11n(
$request->getDataString('title') ?? '',
ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? ISO639x1Enum::_EN
@ -207,7 +207,7 @@ final class ApiClockingTypeController extends Controller
* Method to update ClockingType from request.
*
* @param RequestAbstract $request Request
* @param ClockingType $new Model to modify
* @param ClockingType $new Model to modify
*
* @return ClockingType
*

View File

@ -14,11 +14,9 @@ declare(strict_types=1);
namespace Modules\HumanResourceTimeRecording\Controller;
use Modules\Admin\Models\AccountMapper;
use Modules\Admin\Models\NullAccount;
use Modules\HumanResourceManagement\Models\EmployeeMapper;
use Modules\HumanResourceTimeRecording\Models\ClockingStatus;
use Modules\HumanResourceTimeRecording\Models\ClockingType;
use Modules\HumanResourceTimeRecording\Models\NullClockingType;
use Modules\HumanResourceTimeRecording\Models\PermissionCategory;
use Modules\HumanResourceTimeRecording\Models\Session;

View File

@ -1,5 +0,0 @@
# Structure
## ER
![ER](Modules/HumanResourceTimeRecording/Docs/Dev/img/er.png)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

View File

@ -14,7 +14,6 @@ declare(strict_types=1);
namespace Modules\HumanResourceTimeRecording\Models;
use Modules\Media\Models\Collection;
use phpOMS\Localization\BaseStringL11n;
use phpOMS\Localization\ISO639x1Enum;

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.2
*
* @package Modules\HumanResourceTimerecording\Models
* @package Modules\HumanResourceTimeRecording\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,7 +12,7 @@
*/
declare(strict_types=1);
namespace Modules\HumanResourceTimerecording\Models;
namespace Modules\HumanResourceTimeRecording\Models;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11n;
@ -20,7 +20,7 @@ use phpOMS\Localization\BaseStringL11n;
/**
* Clocking type l11n mapper class.
*
* @package Modules\HumanResourceTimerecording\Models
* @package Modules\HumanResourceTimeRecording\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0

View File

@ -36,12 +36,12 @@ final class ClockingTypeMapper extends DataMapperFactory
* @since 1.0.0
*/
public const COLUMNS = [
'hr_timerecording_type_id' => ['name' => 'hr_timerecording_type_id', 'type' => 'int', 'internal' => 'id'],
'hr_timerecording_type_name' => ['name' => 'hr_timerecording_type_name', 'type' => 'string', 'internal' => 'name'],
'hr_timerecording_type_custom_future' => ['name' => 'hr_timerecording_type_custom_future', 'type' => 'bool', 'internal' => 'customFutureTimeAllowed'],
'hr_timerecording_type_custom_past' => ['name' => 'hr_timerecording_type_custom_past', 'type' => 'bool', 'internal' => 'customPastTimeAllowed'],
'hr_timerecording_type_correction' => ['name' => 'hr_timerecording_type_correction', 'type' => 'bool', 'internal' => 'correctionAllowed'],
'hr_timerecording_type_work' => ['name' => 'hr_timerecording_type_work', 'type' => 'bool', 'internal' => 'isWork'],
'hr_timerecording_type_id' => ['name' => 'hr_timerecording_type_id', 'type' => 'int', 'internal' => 'id'],
'hr_timerecording_type_name' => ['name' => 'hr_timerecording_type_name', 'type' => 'string', 'internal' => 'name'],
'hr_timerecording_type_custom_future' => ['name' => 'hr_timerecording_type_custom_future', 'type' => 'bool', 'internal' => 'customFutureTimeAllowed'],
'hr_timerecording_type_custom_past' => ['name' => 'hr_timerecording_type_custom_past', 'type' => 'bool', 'internal' => 'customPastTimeAllowed'],
'hr_timerecording_type_correction' => ['name' => 'hr_timerecording_type_correction', 'type' => 'bool', 'internal' => 'correctionAllowed'],
'hr_timerecording_type_work' => ['name' => 'hr_timerecording_type_work', 'type' => 'bool', 'internal' => 'isWork'],
];
/**

View File

@ -66,7 +66,7 @@ class Session implements \JsonSerializable
/**
* Session type.
*
* @var int
* @var ClockingType
* @since 1.0.0
*/
public ClockingType $type;
@ -154,7 +154,7 @@ class Session implements \JsonSerializable
&& ($e->status === ClockingStatus::PAUSE || $e->status === ClockingStatus::END)
) {
$busyTime += $e->datetime->getTimestamp() - $lastStart->getTimestamp();
$state = 0;
$state = 0;
}
}

View File

@ -12,7 +12,7 @@
},
"creator": {
"name": "Jingga",
"website": "jingga.app"
"website": "https://jingga.app"
},
"directory": "HumanResourceTimeRecording",
"dependencies": {

View File

@ -31,9 +31,9 @@ final class SessionMapperTest extends \PHPUnit\Framework\TestCase
{
$session = new Session(new NullAccount(1));
$dt = new \DateTime(\date('Y-m-d', \strtotime('now')) . ' 7:55:34');
$element = new SessionElement($session, $dt);
$element->status = ClockingStatus::START;
$dt = new \DateTime(\date('Y-m-d', \strtotime('now')) . ' 7:55:34');
$element = new SessionElement($session, $dt);
$element->status = ClockingStatus::START;
$session->sessionElements[] = $element;
$id = SessionMapper::create()->execute($session);

View File

@ -51,16 +51,16 @@ final class SessionTest extends \PHPUnit\Framework\TestCase
#[\PHPUnit\Framework\Attributes\Group('module')]
public function testStatusInputOutput() : void
{
$element = new SessionElement(null, new \DateTime('2021-10-05'));
$element->status = ClockingStatus::START;
$element = new SessionElement(null, new \DateTime('2021-10-05'));
$element->status = ClockingStatus::START;
$this->session->sessionElements[] = $element;
$element = new SessionElement(null, new \DateTime('2021-10-06'));
$element->status = ClockingStatus::PAUSE;
$element = new SessionElement(null, new \DateTime('2021-10-06'));
$element->status = ClockingStatus::PAUSE;
$this->session->sessionElements[] = $element;
$element = new SessionElement(null, new \DateTime('2021-10-07'));
$element->status = ClockingStatus::CONTINUE;
$element = new SessionElement(null, new \DateTime('2021-10-07'));
$element->status = ClockingStatus::CONTINUE;
$this->session->sessionElements[] = $element;
$this->session->recalculate();
@ -71,38 +71,38 @@ final class SessionTest extends \PHPUnit\Framework\TestCase
#[\PHPUnit\Framework\Attributes\Group('module')]
public function testBusyBreakInputOutput() : void
{
$element = new SessionElement(null, new \DateTime('2021-10-05 02:00:00'));
$element->status = ClockingStatus::START;
$element = new SessionElement(null, new \DateTime('2021-10-05 02:00:00'));
$element->status = ClockingStatus::START;
$this->session->sessionElements[] = $element;
// this is ignored because the session is already started
$element = new SessionElement(null, new \DateTime('2021-10-05 03:00:00'));
$element->status = ClockingStatus::START;
$element = new SessionElement(null, new \DateTime('2021-10-05 03:00:00'));
$element->status = ClockingStatus::START;
$this->session->sessionElements[] = $element;
$element = new SessionElement(null, new \DateTime('2021-10-05 04:00:00'));
$element->status = ClockingStatus::PAUSE;
$element = new SessionElement(null, new \DateTime('2021-10-05 04:00:00'));
$element->status = ClockingStatus::PAUSE;
$this->session->sessionElements[] = $element;
$element = new SessionElement(null, new \DateTime('2021-10-05 04:30:00'));
$element->status = ClockingStatus::CONTINUE;
$element = new SessionElement(null, new \DateTime('2021-10-05 04:30:00'));
$element->status = ClockingStatus::CONTINUE;
$this->session->sessionElements[] = $element;
$element = new SessionElement(null, new \DateTime('2021-10-05 07:00:00'));
$element->status = ClockingStatus::PAUSE;
$element = new SessionElement(null, new \DateTime('2021-10-05 07:00:00'));
$element->status = ClockingStatus::PAUSE;
$this->session->sessionElements[] = $element;
$element = new SessionElement(null, new \DateTime('2021-10-05 08:30:00'));
$element->status = ClockingStatus::CONTINUE;
$element = new SessionElement(null, new \DateTime('2021-10-05 08:30:00'));
$element->status = ClockingStatus::CONTINUE;
$this->session->sessionElements[] = $element;
$element = new SessionElement(null, new \DateTime('2021-10-05 11:00:00'));
$element->status = ClockingStatus::END;
$element = new SessionElement(null, new \DateTime('2021-10-05 11:00:00'));
$element->status = ClockingStatus::END;
$this->session->sessionElements[] = $element;
// this is ignored because the session is already stopped
$element = new SessionElement(null, new \DateTime('2021-10-05 11:30:00'));
$element->status = ClockingStatus::END;
$element = new SessionElement(null, new \DateTime('2021-10-05 11:30:00'));
$element->status = ClockingStatus::END;
$this->session->sessionElements[] = $element;
$this->session->recalculate();