diff --git a/api/html/openapi.json b/api/html/openapi.json
index a45afac..c88e9c1 100644
--- a/api/html/openapi.json
+++ b/api/html/openapi.json
@@ -4,7 +4,7 @@
"title": "Zeiterfassung App",
"contact": {
"name": "Torsten Lücke",
- "url": "http://torsten-hettstedt.de",
+ "url": "https://torsten-hettstedt.de",
"email": "arbeit@torsten-hettstedt.de"
},
"license": {
@@ -188,6 +188,10 @@
"type": "string",
"pattern": "[0-5]\\d:[0-5]\\d:[0-5]\\d",
"example": "08:01:00"
+ },
+ "isHomeOffice": {
+ "description": "Wurde an diesem Tag zuhause gearbeitet?",
+ "type": "boolean"
}
}
},
@@ -217,6 +221,10 @@
"description": "Arbeitstage im Zeitraum",
"type": "integer"
},
+ "homeOfficeDays": {
+ "description": "Anzahl der Tage, an denen zuhause gearbeitet wurde.",
+ "type": "number"
+ },
"overtime": {
"description": "Überstunden im Zeitraum",
"type": "string",
diff --git a/api/tests/_support/Helper/Api.php b/api/tests/_support/Helper/Api.php
index 677c203..ec273e2 100644
--- a/api/tests/_support/Helper/Api.php
+++ b/api/tests/_support/Helper/Api.php
@@ -1,4 +1,5 @@
self::FORMAT_DATE,
- 'workingTime' => self::FORMAT_TIME,
+ 'workingDay' => self::FORMAT_DATE,
+ 'workingTime' => self::FORMAT_TIME,
+ 'isHomeOffice' => 'boolean',
];
const WORKING_HOURS_VIEW_JSON_FORMAT = [
@@ -22,6 +24,7 @@ class Api extends Module
"periodDesignation" => "string",
"totalHours" => self::FORMAT_TIME,
"workingDays" => 'integer:>0',
+ 'homeOfficeDays' => 'number:>=0',
"overtime" => self::FORMAT_TIME,
];
diff --git a/api/tests/api/WorkingHours/CreateWorkingHoursCest.php b/api/tests/api/WorkingHours/CreateWorkingHoursCest.php
index c2707bc..9305a9b 100644
--- a/api/tests/api/WorkingHours/CreateWorkingHoursCest.php
+++ b/api/tests/api/WorkingHours/CreateWorkingHoursCest.php
@@ -28,6 +28,7 @@ class CreateWorkingHoursCest
$I->sendPost('/working-hours', [
'workingDay' => '2020-04-01',
'workingTime' => '08:00:00',
+ 'isHomeOffice' => false,
]);
$I->seeResponseCodeIs(HttpCode::CREATED);
$I->canSeeHttpHeader('Access-Control-Allow-Origin', Api::TEST_ORIGIN);
@@ -44,6 +45,7 @@ class CreateWorkingHoursCest
$I->sendPost('/working-hours', [
'workingDay' => '2020-04-01',
'workingTime' => 8.0,
+ 'isHomeOffice' => false,
]);
$I->seeResponseCodeIs(HttpCode::BAD_REQUEST);
$I->canSeeHttpHeader('Access-Control-Allow-Origin', Api::TEST_ORIGIN);
@@ -60,6 +62,7 @@ class CreateWorkingHoursCest
$I->sendPost('/working-hours', [
'workingDay' => '2020-01-15',
'workingTime' => '08:00:00',
+ 'isHomeOffice' => false,
]);
$I->seeResponseCodeIs(HttpCode::CONFLICT);
$I->canSeeHttpHeader('Access-Control-Allow-Origin', Api::TEST_ORIGIN);
diff --git a/api/tests/api/WorkingHours/UpdateWorkingHoursCest.php b/api/tests/api/WorkingHours/UpdateWorkingHoursCest.php
index 176eb88..e0a6240 100644
--- a/api/tests/api/WorkingHours/UpdateWorkingHoursCest.php
+++ b/api/tests/api/WorkingHours/UpdateWorkingHoursCest.php
@@ -1,4 +1,5 @@
-haveHttpHeader('content-type', 'application/json');
$I->haveHttpHeader('Origin', Api::TEST_ORIGIN);
$I->sendPut('/working-hours/2020-01-15', [
- 'workingDay' => '2020-01-15',
- 'workingTime' => '10:00:00',
+ 'workingDay' => '2020-01-15',
+ 'workingTime' => '10:00:00',
+ 'isHomeOffice' => false,
]);
$I->seeResponseCodeIs(HttpCode::OK);
$I->canSeeHttpHeader('Access-Control-Allow-Origin', Api::TEST_ORIGIN);
@@ -43,6 +45,7 @@ class UpdateWorkingHoursCest
$I->sendPut('/working-hours/2020-04-15', [
'workingDay' => '2020-04-15',
'workingTime' => '10:00:00',
+ 'isHomeOffice' => false,
]);
$I->seeResponseCodeIs(HttpCode::NOT_FOUND);
$I->canSeeHttpHeader('Access-Control-Allow-Origin', Api::TEST_ORIGIN);
@@ -58,6 +61,7 @@ class UpdateWorkingHoursCest
$I->sendPut('/working-hours/2020-01-15', [
'workingDay' => '2020-01-15',
'workingTime' => 8.0,
+ 'isHomeOffice' => false,
]);
$I->seeResponseCodeIs(HttpCode::BAD_REQUEST);
$I->canSeeHttpHeader('Access-Control-Allow-Origin', Api::TEST_ORIGIN);
diff --git a/api/tests/unit/Controller/WorkingHoursControllerTest.php b/api/tests/unit/Controller/WorkingHoursControllerTest.php
index e6b9903..845f381 100644
--- a/api/tests/unit/Controller/WorkingHoursControllerTest.php
+++ b/api/tests/unit/Controller/WorkingHoursControllerTest.php
@@ -32,8 +32,9 @@ class WorkingHoursControllerTest extends AbstractControllerTest
parent::_before();
$this->request = $this->makeEmpty(Request::class, [
'getParsedBody' => [
- 'workingDay' => self::EXISTING_DATE,
- 'workingTime' => self::EXISTING_INTERVAL,
+ 'workingDay' => self::EXISTING_DATE,
+ 'workingTime' => self::EXISTING_INTERVAL,
+ 'isHomeOfficeDay' => true,
],
]);
}
@@ -260,6 +261,28 @@ class WorkingHoursControllerTest extends AbstractControllerTest
$this->assertNotEmpty($response->getBody()->getContents());
}
+ /**
+ * @throws ContainerExceptionInterface
+ * @throws NotDatabasesException
+ * @throws NotFoundExceptionInterface
+ * @throws Exception
+ */
+ public function testUpdateExistRecordWithoutHomeOffice(): void
+ {
+ $this->request = $this->makeEmpty(Request::class, [
+ 'getParsedBody' => [
+ 'workingDay' => self::EXISTING_DATE,
+ 'workingTime' => self::EXISTING_INTERVAL,
+ ],
+ ]);
+ $controller = new WorkingHoursController($this->container);
+ $response = $controller->update($this->request, $this->response, [
+ 'id' => self::EXISTING_DATE,
+ ]);
+ $this->assertEquals(self::FICTIONAL_STATUS_CODE, $response->getStatusCode());
+ $this->assertNotEmpty($response->getBody()->getContents());
+ }
+
/**
* @throws ContainerExceptionInterface
* @throws NotDatabasesException
@@ -302,12 +325,13 @@ class WorkingHoursControllerTest extends AbstractControllerTest
* @throws Exception
*/
#[DataProvider('invalidCreatDataProvider')]
- public function testCreatInvalidData(string $date, string $time): void
+ public function testCreatInvalidData(string $date, string $time, bool $isHomeOffice = false): void
{
$this->request = $this->makeEmpty(Request::class, [
'getParsedBody' => [
- 'workingDay' => $date,
- 'workingTime' => $time,
+ 'workingDay' => $date,
+ 'workingTime' => $time,
+ 'isHomeOfficeDay' => $isHomeOffice,
],
]);
$controller = new WorkingHoursController($this->container);
@@ -325,8 +349,29 @@ class WorkingHoursControllerTest extends AbstractControllerTest
{
$this->request = $this->makeEmpty(Request::class, [
'getParsedBody' => [
- 'workingDay' => self::NEW_DATE,
- 'workingTime' => self::NEW_INTERVAL,
+ 'workingDay' => self::NEW_DATE,
+ 'workingTime' => self::NEW_INTERVAL,
+ 'isHomeOfficeDay' => true,
+ ],
+ ]);
+ $controller = new WorkingHoursController($this->container);
+ $response = $controller->creat($this->request, $this->response, []);
+ $this->assertEquals(self::FICTIONAL_STATUS_CODE, $response->getStatusCode());
+ $this->assertNotEmpty($response->getBody()->getContents());
+ }
+
+ /**
+ * @throws ContainerExceptionInterface
+ * @throws NotDatabasesException
+ * @throws NotFoundExceptionInterface
+ * @throws Exception
+ */
+ public function testCreatNewRecordWithoutHomeOffice(): void
+ {
+ $this->request = $this->makeEmpty(Request::class, [
+ 'getParsedBody' => [
+ 'workingDay' => self::NEW_DATE,
+ 'workingTime' => self::NEW_INTERVAL,
],
]);
$controller = new WorkingHoursController($this->container);
@@ -345,8 +390,9 @@ class WorkingHoursControllerTest extends AbstractControllerTest
{
$this->request = $this->makeEmpty(Request::class, [
'getParsedBody' => [
- 'workingDay' => self::EXISTING_DATE,
- 'workingTime' => self::EXISTING_INTERVAL,
+ 'workingDay' => self::EXISTING_DATE,
+ 'workingTime' => self::EXISTING_INTERVAL,
+ 'isHomeOfficeDay' => true,
],
]);
$controller = new WorkingHoursController($this->container);
diff --git a/api/tests/unit/Models/WorkingHoursTest.php b/api/tests/unit/Models/WorkingHoursTest.php
index b1612ff..e068cc5 100644
--- a/api/tests/unit/Models/WorkingHoursTest.php
+++ b/api/tests/unit/Models/WorkingHoursTest.php
@@ -17,6 +17,7 @@ class WorkingHoursTest extends Unit
$obj = new WorkingHours();
$this->assertNull($obj->getWorkingDay());
$this->assertNull($obj->getWorkingTime());
+ $this->assertFalse($obj->isHomeOffice());
$this->expectException(Error::class);
$obj->jsonSerialize();
@@ -32,17 +33,21 @@ class WorkingHoursTest extends Unit
new DateTime('2020-11-30'),
new DateInterval("PT8H"),
[
- 'workingDay' => '2020-11-30',
- 'workingTime' => '08:00:00',
+ 'workingDay' => '2020-11-30',
+ 'workingTime' => '08:00:00',
+ 'isHomeOffice' => true,
],
+ true,
],
[
new DateTime('2021-05-03'),
new DateInterval("PT7H45M"),
[
- 'workingDay' => '2021-05-03',
- 'workingTime' => '07:45:00',
+ 'workingDay' => '2021-05-03',
+ 'workingTime' => '07:45:00',
+ 'isHomeOffice' => false,
],
+ false,
],
];
}
@@ -51,10 +56,38 @@ class WorkingHoursTest extends Unit
* @param DateTime $date
* @param DateInterval $interval
* @param array $shouldJson
+ * @param bool $isHomeOffice
*/
#[DataProvider('workingHoursProvider')]
- public function testWorkingHoursWithContent(DateTime $date, DateInterval $interval, array $shouldJson): void
+ public function testWorkingHoursWithContent(DateTime $date, DateInterval $interval, array $shouldJson, bool $isHomeOffice): void
{
+ $obj = new WorkingHours();
+ $obj->setWorkingDay($date)->setWorkingTime($interval)->setIsHomeOffice($isHomeOffice);
+
+ $this->assertNotNull($obj->getWorkingDay());
+ $this->assertInstanceOf(DateTime::class, $obj->getWorkingDay());
+ $this->assertEquals($date, $obj->getWorkingDay());
+
+ $this->assertNotNull($obj->getWorkingTime());
+ $this->assertInstanceOf(DateInterval::class, $obj->getWorkingTime());
+ $this->assertEquals($interval, $obj->getWorkingTime());
+
+ $this->assertIsBool($obj->isHomeOffice());
+ $this->assertEquals($isHomeOffice, $obj->isHomeOffice());
+
+ $json = $obj->jsonSerialize();
+ $this->assertEquals($shouldJson, $json);
+ }
+
+ /**
+ * @param DateTime $date
+ * @param DateInterval $interval
+ * @param array $shouldJson
+ */
+ #[DataProvider('workingHoursProvider')]
+ public function testWorkingHoursWithContentWithoutHomeOfficeInformation(DateTime $date, DateInterval $interval, array $shouldJson): void
+ {
+ $shouldJson['isHomeOffice'] = false;
$obj = new WorkingHours();
$obj->setWorkingDay($date)->setWorkingTime($interval);
@@ -66,6 +99,9 @@ class WorkingHoursTest extends Unit
$this->assertInstanceOf(DateInterval::class, $obj->getWorkingTime());
$this->assertEquals($interval, $obj->getWorkingTime());
+ $this->assertIsBool($obj->isHomeOffice());
+ $this->assertFalse($obj->isHomeOffice());
+
$json = $obj->jsonSerialize();
$this->assertEquals($shouldJson, $json);
}
diff --git a/api/tests/unit/Models/WorkingHoursViewTest.php b/api/tests/unit/Models/WorkingHoursViewTest.php
index ed79216..547259a 100644
--- a/api/tests/unit/Models/WorkingHoursViewTest.php
+++ b/api/tests/unit/Models/WorkingHoursViewTest.php
@@ -20,6 +20,7 @@ class WorkingHoursViewTest extends Unit
{
$date = new DateTime('2020-11-30');
$work_days = 15;
+ $home_work_days = 12;
$total_hours = new DateInterval("PT32H22M");
$overtime = new DateInterval("PT22M");
$absence_time = clone $overtime;
@@ -30,12 +31,14 @@ class WorkingHoursViewTest extends Unit
PeriodDesignationEnum::WEEKLY,
$work_days,
$total_hours,
+ $home_work_days,
$overtime,
[
'period' => '2020#49',
'periodDesignation' => 'weekly',
'workingDays' => 15,
'totalHours' => '32:22:00',
+ 'homeOfficeDays' => $home_work_days,
'overtime' => '00:22:00'
],
],
@@ -44,12 +47,14 @@ class WorkingHoursViewTest extends Unit
PeriodDesignationEnum::WEEKLY,
$work_days,
$total_hours,
+ $home_work_days,
$absence_time,
[
'period' => '2020#49',
'periodDesignation' => 'weekly',
'workingDays' => 15,
'totalHours' => '32:22:00',
+ 'homeOfficeDays' => $home_work_days,
'overtime' => '-00:22:00'
],
],
@@ -58,12 +63,14 @@ class WorkingHoursViewTest extends Unit
PeriodDesignationEnum::MONTHLY,
$work_days,
$total_hours,
+ $home_work_days,
$overtime,
[
'period' => '2020-11',
'periodDesignation' => 'monthly',
'workingDays' => 15,
'totalHours' => '32:22:00',
+ 'homeOfficeDays' => $home_work_days,
'overtime' => '00:22:00'
],
],
@@ -72,12 +79,14 @@ class WorkingHoursViewTest extends Unit
PeriodDesignationEnum::MONTHLY,
$work_days,
$total_hours,
+ $home_work_days,
$absence_time,
[
'period' => '2020-11',
'periodDesignation' => 'monthly',
'workingDays' => 15,
'totalHours' => '32:22:00',
+ 'homeOfficeDays' => $home_work_days,
'overtime' => '-00:22:00'
],
],
@@ -86,12 +95,14 @@ class WorkingHoursViewTest extends Unit
PeriodDesignationEnum::YEARLY,
$work_days,
$total_hours,
+ $home_work_days,
$overtime,
[
'period' => '2020',
'periodDesignation' => 'yearly',
'workingDays' => 15,
'totalHours' => '32:22:00',
+ 'homeOfficeDays' => $home_work_days,
'overtime' => '00:22:00'
],
],
@@ -100,12 +111,14 @@ class WorkingHoursViewTest extends Unit
PeriodDesignationEnum::YEARLY,
$work_days,
$total_hours,
+ $home_work_days,
$absence_time,
[
'period' => '2020',
'periodDesignation' => 'yearly',
'workingDays' => 15,
'totalHours' => '32:22:00',
+ 'homeOfficeDays' => $home_work_days,
'overtime' => '-00:22:00'
],
],
@@ -117,6 +130,7 @@ class WorkingHoursViewTest extends Unit
* @param PeriodDesignationEnum $periodDesignation
* @param int $workingDays
* @param DateInterval $totalHours
+ * @param int $homeWorkDays ,
* @param DateInterval $overtime
* @param array $shouldJson
*/
@@ -126,10 +140,11 @@ class WorkingHoursViewTest extends Unit
PeriodDesignationEnum $periodDesignation,
int $workingDays,
DateInterval $totalHours,
+ int $homeWorkDays,
DateInterval $overtime,
array $shouldJson
): void {
- $obj = new WorkingHoursView($period, $periodDesignation, $workingDays, $totalHours, $overtime);
+ $obj = new WorkingHoursView($period, $periodDesignation, $workingDays, $totalHours, $homeWorkDays, $overtime);
$this->assertInstanceOf(DateTimeInterface::class, $obj->getPeriod());
$this->assertEquals($period, $obj->getPeriod());
@@ -142,6 +157,9 @@ class WorkingHoursViewTest extends Unit
$this->assertInstanceOf(DateInterval::class, $obj->getTotalHours());
$this->assertEquals($totalHours, $obj->getTotalHours());
+ $this->assertIsInt($obj->getHomeOfficeDays());
+ $this->assertEquals($homeWorkDays, $obj->getHomeOfficeDays());
+
$this->assertInstanceOf(DateInterval::class, $obj->getOvertime());
$this->assertEquals($overtime, $obj->getOvertime());
diff --git a/api/tests/unit/Repositories/WorkingHoursRepositoryTest.php b/api/tests/unit/Repositories/WorkingHoursRepositoryTest.php
index 326caff..15ffcbb 100644
--- a/api/tests/unit/Repositories/WorkingHoursRepositoryTest.php
+++ b/api/tests/unit/Repositories/WorkingHoursRepositoryTest.php
@@ -157,8 +157,9 @@ class WorkingHoursRepositoryTest extends Unit
{
$repository = new WorkingHoursRepository($this->pdoObject);
$model = $this->make(WorkingHours::class, [
- 'workingDay' => new DateTime(self::NEW_DATE),
- 'workingTime' => new DateInterval(self::NEW_INTERVAL),
+ 'workingDay' => new DateTime(self::NEW_DATE),
+ 'workingTime' => new DateInterval(self::NEW_INTERVAL),
+ 'isHomeOffice' => false,
]);
$repository->insert($model);
$model = $repository->findByKey(self::NEW_DATE);
@@ -174,8 +175,9 @@ class WorkingHoursRepositoryTest extends Unit
{
$repository = new WorkingHoursRepository($this->pdoObject);
$model = $this->make(WorkingHours::class, [
- 'workingDay' => new DateTime(self::EXISTING_DATE),
- 'workingTime' => new DateInterval(self::NEW_INTERVAL),
+ 'workingDay' => new DateTime(self::EXISTING_DATE),
+ 'workingTime' => new DateInterval(self::NEW_INTERVAL),
+ 'isHomeOffice' => false,
]);
$this->expectException(RepositoryRecordAlreadyExistException::class);
$repository->insert($model);
@@ -201,8 +203,9 @@ class WorkingHoursRepositoryTest extends Unit
{
$repository = new WorkingHoursRepository($this->pdoObject);
$model = $this->make(WorkingHours::class, [
- 'workingDay' => new DateTime(self::EXISTING_DATE),
- 'workingTime' => new DateInterval(self::EXISTING_INTERVAL),
+ 'workingDay' => new DateTime(self::EXISTING_DATE),
+ 'workingTime' => new DateInterval(self::EXISTING_INTERVAL),
+ 'isHomeOffice' => false,
]);
$repository->delete($model);
$this->expectException(RepositoryRecordNotFoundException::class);
@@ -217,8 +220,9 @@ class WorkingHoursRepositoryTest extends Unit
{
$repository = new WorkingHoursRepository($this->pdoObject);
$model = $this->make(WorkingHours::class, [
- 'workingDay' => new DateTime(self::NEW_DATE),
- 'workingTime' => new DateInterval(self::NEW_INTERVAL),
+ 'workingDay' => new DateTime(self::NEW_DATE),
+ 'workingTime' => new DateInterval(self::NEW_INTERVAL),
+ 'isHomeOffice' => false,
]);
$this->expectException(RepositoryRecordNotFoundException::class);
$repository->delete($model);
@@ -244,8 +248,9 @@ class WorkingHoursRepositoryTest extends Unit
{
$repository = new WorkingHoursRepository($this->pdoObject);
$model = $this->make(WorkingHours::class, [
- 'workingDay' => new DateTime(self::EXISTING_DATE),
- 'workingTime' => new DateInterval(self::NEW_INTERVAL),
+ 'workingDay' => new DateTime(self::EXISTING_DATE),
+ 'workingTime' => new DateInterval(self::NEW_INTERVAL),
+ 'isHomeOffice' => false,
]);
$repository->update($model);
$model_db = $repository->findByKey(self::EXISTING_DATE);
@@ -259,8 +264,9 @@ class WorkingHoursRepositoryTest extends Unit
{
$repository = new WorkingHoursRepository($this->pdoObject);
$model = $this->make(WorkingHours::class, [
- 'workingDay' => new DateTime(self::NEW_DATE),
- 'workingTime' => new DateInterval(self::NEW_INTERVAL),
+ 'workingDay' => new DateTime(self::NEW_DATE),
+ 'workingTime' => new DateInterval(self::NEW_INTERVAL),
+ 'isHomeOffice' => false,
]);
$this->expectException(RepositoryRecordNotFoundException::class);
$repository->update($model);
diff --git a/api/tests/unit/Repositories/WorkingHoursViewRepositoryTest.php b/api/tests/unit/Repositories/WorkingHoursViewRepositoryTest.php
index 14ebb54..f5c13fd 100644
--- a/api/tests/unit/Repositories/WorkingHoursViewRepositoryTest.php
+++ b/api/tests/unit/Repositories/WorkingHoursViewRepositoryTest.php
@@ -6,7 +6,8 @@ use Codeception\Attribute\DataProvider;
use Codeception\Test\Unit;
use DateTime;
use DateTimeZone;
-use PDO;use TorstenHettstedt\TimekeepingApi\Models\WorkingHoursView;
+use PDO;
+use TorstenHettstedt\TimekeepingApi\Models\WorkingHoursView;
use TorstenHettstedt\TimekeepingApi\Repositories\RepositoryRecordNotFoundException;
use TorstenHettstedt\TimekeepingApi\Repositories\WorkingHoursWeeklyViewRepository;
use TorstenHettstedt\TimekeepingApi\Repositories\WorkingHoursMonthlyViewRepository;
@@ -14,12 +15,14 @@ use TorstenHettstedt\TimekeepingApi\Repositories\WorkingHoursYearlyViewRepositor
class WorkingHoursViewRepositoryTest extends Unit
{
- protected PDO $pdoObject;
+ protected PDO $pdoObject;
protected function _before(): void
{
/** @noinspection SpellCheckingInspection */
- $this->pdoObject = new PDO('pgsql:host=psql.torsten-hettstedt.net;port=5432;dbname=testdb;user=bruce;password=mypass');
+ $this->pdoObject = new PDO(
+ 'pgsql:host=psql.torsten-hettstedt.net;port=5432;dbname=testdb;user=bruce;password=mypass'
+ );
parent::_before();
}
@@ -29,7 +32,7 @@ class WorkingHoursViewRepositoryTest extends Unit
public function listObjectProvider(): array
{
return [
- [WorkingHoursYearlyViewRepository::class, 1],
+ [WorkingHoursYearlyViewRepository::class, 1],
[WorkingHoursMonthlyViewRepository::class, 3],
[WorkingHoursWeeklyViewRepository::class, 13],
];
@@ -41,9 +44,27 @@ class WorkingHoursViewRepositoryTest extends Unit
public function existingObjectProvider(): array
{
return [
- [WorkingHoursYearlyViewRepository::class, '2020', 61, date_create('2020-01-01', new DateTimeZone('UCT'))],
- [WorkingHoursMonthlyViewRepository::class, '2020 February', 20, date_create('2020-02-01', new DateTimeZone('UCT'))],
- [WorkingHoursWeeklyViewRepository::class, '2020#03', 5, date_create('2020-01-13', new DateTimeZone('UCT'))],
+ [
+ WorkingHoursYearlyViewRepository::class,
+ '2020',
+ 61,
+ date_create('2020-01-01', new DateTimeZone('UCT')),
+ 3,
+ ],
+ [
+ WorkingHoursMonthlyViewRepository::class,
+ '2020 February',
+ 20,
+ date_create('2020-02-01', new DateTimeZone('UCT')),
+ 1,
+ ],
+ [
+ WorkingHoursWeeklyViewRepository::class,
+ '2020#03',
+ 5,
+ date_create('2020-01-13', new DateTimeZone('UCT')),
+ 0,
+ ],
];
}
@@ -53,9 +74,9 @@ class WorkingHoursViewRepositoryTest extends Unit
public function notExistingObjectProvider(): array
{
return [
- [WorkingHoursYearlyViewRepository::class, '2022',],
+ [WorkingHoursYearlyViewRepository::class, '2022',],
[WorkingHoursMonthlyViewRepository::class, '2020 May',],
- [WorkingHoursWeeklyViewRepository::class, '2020#30',],
+ [WorkingHoursWeeklyViewRepository::class, '2020#30',],
];
}
@@ -70,13 +91,19 @@ class WorkingHoursViewRepositoryTest extends Unit
}
#[DataProvider(('existingObjectProvider'))]
- public function testExistingFindByKey(string $periodClass, string $search, int $workingDays, DateTime $period): void
- {
+ public function testExistingFindByKey(
+ string $periodClass,
+ string $search,
+ int $workingDays,
+ DateTime $period,
+ int $homeOfficeDays
+ ): void {
$repository = new $periodClass($this->pdoObject);
$model = $repository->findByKey($search);
$this->assertInstanceOf(WorkingHoursView::class, $model);
$this->assertEquals($workingDays, $model->getWorkingDays());
$this->assertEquals($period->format('Ymd'), $model->getPeriod()->format('Ymd'));
+ $this->assertEquals($homeOfficeDays, $model->getHomeOfficeDays());
}
#[DataProvider(('notExistingObjectProvider'))]