expect('Application\Usecase') ->toUseStrictTypes(); }); describe('Naming Conventions in Domain', function (): void { arch('Port Directories have Directory suffix') ->expect('Domain\Ports\Directories') ->toHaveSuffix('Directory'); arch('Port Repositories have Repository suffix') ->expect('Domain\Ports\Repositories') ->toHaveSuffix('Repository'); }); describe('Naming Conventions in Presentation', function (): void { arch('Controllers have Controller suffix') ->expect('Presentation\Api\V1\Http\Controllers') ->toHaveSuffix('Controller'); arch('Requests have Request suffix') ->expect('Presentation\Api\V1\Http\Requests') ->toHaveSuffix('Request'); arch('Responses have Response suffix') ->expect('Presentation\Api\V1\Http\Responses') ->toHaveSuffix('Response'); }); describe('Naming Conventions in Infra', function (): void { arch('Infra service providers have Provider suffix') ->expect('Infra\Providers') ->toHaveSuffix('Provider'); arch('Infra directory adapters have Directory suffix') ->expect('Infra\Adapters\Directories') ->toHaveSuffix('Directory'); arch('Infra repository adapters have Repository suffix') ->expect('Infra\Adapters\Repositories') ->toHaveSuffix('Repository'); });