expect('Domain\\Models\\Entities') ->toImplement(Entity::class); arch('entities are immutable (disabled due to mock-final-classes conflict)') ->expect('Domain\\Models\\Entities') ->toBeReadonly() ->toBeFinal(); arch('valueObjects are immutable (disabled due to mock-final-classes conflict)') ->expect('Domain\\Models\\ValueObjects') ->toBeReadonly() ->toBeFinal(); arch('ports contains only interfaces') ->expect('Domain\\Ports') ->classes() ->toBeInterface(); arch('port Repositories extend Shared\DDD\Repository') ->expect('Domain\\Ports\\Repositories') ->toExtend(Repository::class); arch('no Application classes are used in Domain') ->expect('Domain') ->not->toUse('Application'); arch('no Infrastructure classes are used in Domain') ->expect('Domain') ->not->toUse('Infrastructure'); arch('no Illuminate classes are used in Domain') ->expect('Domain') ->not->toUse('Illuminate'); arch('no Symfony components are used in Domain') ->expect('Domain') ->not->toUse('Symfony'); });