From c8219d9c888f5a4121c14fefeebb922aa3c7b0aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20L=C3=BCcke?= Date: Fri, 2 Apr 2021 19:21:41 +0200 Subject: [PATCH] =?UTF-8?q?Tests=20f=C3=BCr=20die=20Repository=20der=20Tab?= =?UTF-8?q?le-Views=20erstellt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WorkingHoursViewRepositoryTest.php | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 api/tests/unit/Repositories/WorkingHoursViewRepositoryTest.php diff --git a/api/tests/unit/Repositories/WorkingHoursViewRepositoryTest.php b/api/tests/unit/Repositories/WorkingHoursViewRepositoryTest.php new file mode 100644 index 0000000..7ccbc67 --- /dev/null +++ b/api/tests/unit/Repositories/WorkingHoursViewRepositoryTest.php @@ -0,0 +1,108 @@ +pdoObject = new PDO('pgsql:host=psql.torsten-hettstedt.net;port=5432;dbname=testdb;user=bruce;password=mypass'); + parent::_before(); + } + + /** + * @return array[] + */ + public function listObjectProvider(): array + { + return [ + [PeriodDesignationEnum::YEARLY(), 1], + [PeriodDesignationEnum::MONTHLY(), 3], + [PeriodDesignationEnum::WEEKLY(), 13], + ]; + } + + /** + * @return array[] + */ + public function existingObjectProvider(): array + { + return [ + [PeriodDesignationEnum::YEARLY(), '2020', 61], + [PeriodDesignationEnum::MONTHLY(), '2020-02', 20], + [PeriodDesignationEnum::WEEKLY(), '2020#3', 5], + ]; + } + + /** + * @return array[] + */ + public function notExistingObjectProvider(): array + { + return [ + [PeriodDesignationEnum::YEARLY(), '2022',], + [PeriodDesignationEnum::MONTHLY(), '2020-05',], + [PeriodDesignationEnum::WEEKLY(), '2020#30',], + ]; + } + + /** + * @param PeriodDesignationEnum $period + * @param int $count_records + * + * @dataProvider listObjectProvider + */ + public function testFindAll(PeriodDesignationEnum $period, int $count_records): void + { + $repository = new WorkingHoursViewRepository($this->pdoObject, $period); + $models = $repository->findAll(); + $this->assertIsArray($models); + $this->assertContainsOnly(WorkingHoursView::class, $models); + $this->assertCount(self::RECORDS_COUNT, $models); + } + + /** + * + * @dataProvider existingObjectProvider + * + * @param PeriodDesignationEnum $period + * @param string $search + */ + public function testExistingFindByKey(PeriodDesignationEnum $period, string $search, int $workingDays): void + { + $repository = new WorkingHoursViewRepository($this->pdoObject, $period); + $model = $repository->findByKey(self::EXISTING_DATE); + $this->assertInstanceOf(WorkingHoursView::class, $model); + $this->assertEquals($workingDays, $model->getWorkingDays()); + } + + /** + * @param PeriodDesignationEnum $period + * @param string $search + * + * @dataProvider notExistingObjectProvider + * + * @throws RepositoryRecordNotFoundException + */ + public function testNotExistingFindByKey(PeriodDesignationEnum $period, string $search): void + { + $repository = new WorkingHoursViewRepository($this->pdoObject, $period); + $this->expectException(RepositoryRecordNotFoundException::class); + $repository->findByKey(self::NEW_DATE); + } +}