ldc-mesbr-app/tests/Architecture/ApplicationTest.php
2026-09-08 16:33:54 +02:00

31 lines
1 KiB
PHP

<?php
declare(strict_types=1);
describe('application coding rules', function (): void {
arch('no Domain Entities are used in Controllers')
->expect('Application\\Http\\Controllers')
->not->toUse('Domain\\Models\\Entities');
arch('no Domain Entities are used in Policies')
->expect('Application\\Policies')
->not->toUse('Domain\\Models\\Entities');
arch('app Repositories implement Application\Contracts\Repository')
->expect('Application\\Repositories')
->toImplement('Application\\Contracts\\Repository');
arch('app Directories implement Application\Contracts\Directory')
->expect('Application\\Directories')
->toImplement('Application\\Contracts\\Directory');
arch('app DTOs are final readonly classes')
->expect('Application\\Dto')
->classes()
->toBeFinal()
->toBeReadonly();
arch('no debug calls in production code')
->expect(['dd', 'dump', 'die', 'var_dump', 'sleep'])
->not->toBeUsed();
});