ldc-mesbr-app/tests/Architecture/SharedTest.php
2026-09-15 18:12:03 +02:00

47 lines
1.3 KiB
PHP

<?php
declare(strict_types=1);
use Shared\DDD\Models\Entity;
use Shared\DDD\Ports\Repository;
describe('shared coding rules', function (): void {
arch('entities implements Entity')
->expect('Shared\\Domain\\Models\\Entities')
->toImplement(Entity::class);
arch('entities are immutable (disabled due to mock-final-classes conflict)')
->expect('Shared\\Entities')
->toBeReadonly()
->toBeFinal();
arch('valueObjects are immutable (disabled due to mock-final-classes conflict)')
->expect('Shared\\Models\\ValueObjects')
->toBeReadonly()
->toBeFinal();
arch('ports contains only interfaces')
->expect('Shared\\Ports')
->classes()
->toBeInterface();
arch('port Repositories extend Shared\DDD\Repository')
->expect('Shared\\Ports\\Repositories')
->toExtend(Repository::class);
arch('no Application classes are used in Shared')
->expect('Shared')
->not->toUse('Application');
arch('no Infrastructure classes are used in Shared')
->expect('Shared')
->not->toUse('Infrastructure');
arch('no Illuminate classes are used in Shared')
->expect('Shared')
->not->toUse('Illuminate');
arch('no Symfony components are used in Shared')
->expect('Shared')
->not->toUse('Symfony');
});