Die Unterschiede zwischen den einzelnen Perioden-Repository ist größer als gedacht. Deshalb hat jede Periode seine eigene Klasse bekommen.
This commit is contained in:
@@ -4,10 +4,11 @@ namespace TorstenHettstedt\TimekeepingApi\Tests\Unit\Repositories;
|
||||
|
||||
use Codeception\Test\Unit;
|
||||
use PDO;
|
||||
use TorstenHettstedt\TimekeepingApi\Models\PeriodDesignationEnum;
|
||||
use TorstenHettstedt\TimekeepingApi\Models\WorkingHoursView;
|
||||
use TorstenHettstedt\TimekeepingApi\Repositories\RepositoryRecordNotFoundException;
|
||||
use TorstenHettstedt\TimekeepingApi\Repositories\WorkingHoursViewRepository;
|
||||
use TorstenHettstedt\TimekeepingApi\Repositories\WorkingHoursWeeklyViewRepository;
|
||||
use TorstenHettstedt\TimekeepingApi\Repositories\WorkingHoursMonthlyViewRepository;
|
||||
use TorstenHettstedt\TimekeepingApi\Repositories\WorkingHoursYearlyViewRepository;
|
||||
|
||||
class WorkingHoursViewRepositoryTest extends Unit
|
||||
{
|
||||
@@ -31,9 +32,9 @@ class WorkingHoursViewRepositoryTest extends Unit
|
||||
public function listObjectProvider(): array
|
||||
{
|
||||
return [
|
||||
[PeriodDesignationEnum::YEARLY(), 1],
|
||||
[PeriodDesignationEnum::MONTHLY(), 3],
|
||||
[PeriodDesignationEnum::WEEKLY(), 13],
|
||||
[WorkingHoursYearlyViewRepository::class, 1],
|
||||
[WorkingHoursMonthlyViewRepository::class, 3],
|
||||
[WorkingHoursWeeklyViewRepository::class, 13],
|
||||
];
|
||||
}
|
||||
|
||||
@@ -43,9 +44,9 @@ class WorkingHoursViewRepositoryTest extends Unit
|
||||
public function existingObjectProvider(): array
|
||||
{
|
||||
return [
|
||||
[PeriodDesignationEnum::YEARLY(), '2020', 61],
|
||||
[PeriodDesignationEnum::MONTHLY(), '2020-02', 20],
|
||||
[PeriodDesignationEnum::WEEKLY(), '2020#3', 5],
|
||||
[WorkingHoursYearlyViewRepository::class, '2020', 61],
|
||||
[WorkingHoursMonthlyViewRepository::class, '2020 February', 20],
|
||||
[WorkingHoursWeeklyViewRepository::class, '2020#03', 5],
|
||||
];
|
||||
}
|
||||
|
||||
@@ -55,54 +56,54 @@ class WorkingHoursViewRepositoryTest extends Unit
|
||||
public function notExistingObjectProvider(): array
|
||||
{
|
||||
return [
|
||||
[PeriodDesignationEnum::YEARLY(), '2022',],
|
||||
[PeriodDesignationEnum::MONTHLY(), '2020-05',],
|
||||
[PeriodDesignationEnum::WEEKLY(), '2020#30',],
|
||||
[WorkingHoursYearlyViewRepository::class, '2022',],
|
||||
[WorkingHoursMonthlyViewRepository::class, '2020 May',],
|
||||
[WorkingHoursWeeklyViewRepository::class, '2020#30',],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param PeriodDesignationEnum $period
|
||||
* @param int $count_records
|
||||
* @param string $period_class
|
||||
* @param int $count_records
|
||||
*
|
||||
* @dataProvider listObjectProvider
|
||||
*/
|
||||
public function testFindAll(PeriodDesignationEnum $period, int $count_records): void
|
||||
public function testFindAll(string $period_class, int $count_records): void
|
||||
{
|
||||
$repository = new WorkingHoursViewRepository($this->pdoObject, $period);
|
||||
$repository = new $period_class($this->pdoObject);
|
||||
$models = $repository->findAll();
|
||||
$this->assertIsArray($models);
|
||||
$this->assertContainsOnly(WorkingHoursView::class, $models);
|
||||
$this->assertCount(self::RECORDS_COUNT, $models);
|
||||
$this->assertCount($count_records, $models);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @dataProvider existingObjectProvider
|
||||
*
|
||||
* @param PeriodDesignationEnum $period
|
||||
* @param string $search
|
||||
* @param string $period_class
|
||||
* @param string $search
|
||||
* @param int $workingDays
|
||||
*/
|
||||
public function testExistingFindByKey(PeriodDesignationEnum $period, string $search, int $workingDays): void
|
||||
public function testExistingFindByKey(string $period_class, string $search, int $workingDays): void
|
||||
{
|
||||
$repository = new WorkingHoursViewRepository($this->pdoObject, $period);
|
||||
$model = $repository->findByKey(self::EXISTING_DATE);
|
||||
$repository = new $period_class($this->pdoObject);
|
||||
$model = $repository->findByKey($search);
|
||||
$this->assertInstanceOf(WorkingHoursView::class, $model);
|
||||
$this->assertEquals($workingDays, $model->getWorkingDays());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param PeriodDesignationEnum $period
|
||||
* @param string $search
|
||||
* @param string $period_class
|
||||
* @param string $search
|
||||
*
|
||||
* @dataProvider notExistingObjectProvider
|
||||
*
|
||||
* @throws RepositoryRecordNotFoundException
|
||||
*/
|
||||
public function testNotExistingFindByKey(PeriodDesignationEnum $period, string $search): void
|
||||
public function testNotExistingFindByKey(string $period_class, string $search): void
|
||||
{
|
||||
$repository = new WorkingHoursViewRepository($this->pdoObject, $period);
|
||||
$repository = new $period_class($this->pdoObject);
|
||||
$this->expectException(RepositoryRecordNotFoundException::class);
|
||||
$repository->findByKey(self::NEW_DATE);
|
||||
$repository->findByKey($search);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user