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;
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\PermissionCategory;
@ -62,6 +64,18 @@ final class ApiController extends Controller
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);
$this->createModel($request->header->account, $session, SessionMapper::class, 'session', $request->getOrigin());
$this->createStandardCreateResponse($request, $response, $session);

View File

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

View File

@ -158,19 +158,6 @@ final class ApiControllerTest extends \PHPUnit\Framework\TestCase
$request->setData('account', 9999);
$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);
}

View File

@ -42,7 +42,7 @@ final class SessionTest extends \PHPUnit\Framework\TestCase
self::assertEquals(0, $this->session->busy);
self::assertEquals(0, $this->session->getBreak());
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((new \DateTime('now'))->format('Y-m-d'), $this->session->start->format('Y-m-d'));
self::assertNull($this->session->end);