ldc-arcadia-api/tests/Architecture/InfraTest.php

34 lines
1 KiB
PHP
Raw Permalink Normal View History

<?php
declare(strict_types=1);
namespace Tests\Architecture;
use Illuminate\Database\Eloquent\Model;
describe('Infra Architecture Rules', function (): void {
arch('Infra does not depend on App namespace')
->expect('Infra')
->not->toUse('App');
arch('Infra Eloquent Database Models extend Eloquent Model')
->expect('Infra\Database\Models')
->toExtend(Model::class);
arch('Infra Eloquent Database Models are final')
->expect('Infra\Database\Models')
->toBeFinal();
arch('Infra adapters implement Domain Ports')
->expect('Infra\Adapters\Directories\EloquentEmployeeDirectory')
->toImplement('Domain\Ports\Directories\EmployeeDirectory');
arch('Infra EloquentEmployeeRepository implements Domain EmployeeRepository port')
->expect('Infra\Adapters\Repositories\EloquentEmployeeRepository')
->toImplement('Domain\Ports\Repositories\EmployeeRepository');
arch('Infra layer uses strict types')
->expect('Infra')
->toUseStrictTypes();
});