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'))]