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); } }