fix tests

This commit is contained in:
Dennis Eichhorn 2024-04-25 15:28:40 +00:00
parent 64b9f4323e
commit a877ec9bee
4 changed files with 25 additions and 24 deletions

View File

@ -14,7 +14,9 @@ declare(strict_types=1);
namespace Modules\HumanResourceTimeRecording\Controller; namespace Modules\HumanResourceTimeRecording\Controller;
use Modules\Admin\Models\AccountMapper;
use Modules\Admin\Models\NullAccount; use Modules\Admin\Models\NullAccount;
use Modules\HumanResourceManagement\Models\EmployeeMapper;
use Modules\HumanResourceTimeRecording\Models\ClockingStatus; use Modules\HumanResourceTimeRecording\Models\ClockingStatus;
use Modules\HumanResourceTimeRecording\Models\ClockingType; use Modules\HumanResourceTimeRecording\Models\ClockingType;
use Modules\HumanResourceTimeRecording\Models\PermissionCategory; use Modules\HumanResourceTimeRecording\Models\PermissionCategory;
@ -62,6 +64,18 @@ final class ApiController extends Controller
return; return;
} }
$account = EmployeeMapper::get()
->with('profile')
->where('profile/account', $request->getDataInt('account') ?? $request->header->account)
->execute();
if ($account->id === 0) {
$response->header->status = RequestStatusCode::R_400;
$this->createInvalidCreateResponse($request, $response, []);
return;
}
$session = $this->createSessionFromRequest($request); $session = $this->createSessionFromRequest($request);
$this->createModel($request->header->account, $session, SessionMapper::class, 'session', $request->getOrigin()); $this->createModel($request->header->account, $session, SessionMapper::class, 'session', $request->getOrigin());
$this->createStandardCreateResponse($request, $response, $session); $this->createStandardCreateResponse($request, $response, $session);

View File

@ -137,19 +137,19 @@ class Session implements \JsonSerializable
$busyTime = 0; $busyTime = 0;
$lastStart = $this->start; $lastStart = $this->start;
$state = 0;
foreach ($this->sessionElements as $e) { foreach ($this->sessionElements as $e) {
if ($e->status === ClockingStatus::START) { if ($state === 0
&& ($e->status === ClockingStatus::START || $e->status === ClockingStatus::CONTINUE)
) {
$lastStart = $e->datetime; $lastStart = $e->datetime;
$state = 1;
continue; } elseif ($state === 1
} && ($e->status === ClockingStatus::PAUSE || $e->status === ClockingStatus::END)
) {
if ($e->status === ClockingStatus::PAUSE || $e->status === ClockingStatus::END) {
$busyTime += $e->datetime->getTimestamp() - $lastStart->getTimestamp(); $busyTime += $e->datetime->getTimestamp() - $lastStart->getTimestamp();
} $state = 0;
if ($e->status === ClockingStatus::CONTINUE) {
$lastStart = $e->datetime;
} }
} }

View File

@ -158,19 +158,6 @@ final class ApiControllerTest extends \PHPUnit\Framework\TestCase
$request->setData('account', 9999); $request->setData('account', 9999);
$this->module->apiSessionCreate($request, $response); $this->module->apiSessionCreate($request, $response);
self::assertEquals(RequestStatusCode::R_403, $response->header->status);
}
#[\PHPUnit\Framework\Attributes\Group('module')]
public function testApiSessionElementCreateInvalidData() : void
{
$response = new HttpResponse();
$request = new HttpRequest();
$request->header->account = 1;
$request->setData('invalid', 1);
$this->module->apiSessionElementCreate($request, $response);
self::assertEquals(RequestStatusCode::R_400, $response->header->status); self::assertEquals(RequestStatusCode::R_400, $response->header->status);
} }

View File

@ -42,7 +42,7 @@ final class SessionTest extends \PHPUnit\Framework\TestCase
self::assertEquals(0, $this->session->busy); self::assertEquals(0, $this->session->busy);
self::assertEquals(0, $this->session->getBreak()); self::assertEquals(0, $this->session->getBreak());
self::assertEquals([], $this->session->sessionElements); self::assertEquals([], $this->session->sessionElements);
self::assertEquals(ClockingType::OFFICE, $this->session->type); self::assertEquals(ClockingType::NO_DATA, $this->session->type);
self::assertEquals(ClockingStatus::START, $this->session->getStatus()); self::assertEquals(ClockingStatus::START, $this->session->getStatus());
self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $this->session->start->format('Y-m-d')); self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $this->session->start->format('Y-m-d'));
self::assertNull($this->session->end); self::assertNull($this->session->end);