expect('Presentation') ->not->toUse([ 'Infra', 'Infrastructure', 'App', ]); arch('Presentation Controllers are invokable single action controllers') ->expect('Presentation\Api\V1\Http\Controllers') ->toBeInvokable(); arch('Presentation Responses implement Presentation\Api\V1\Contracts\ApiResponse') ->expect('Presentation\Api\V1\Http\Responses') ->toImplement(ApiResponse::class); arch('Presentation FormRequests extend Illuminate\Foundation\Http\FormRequest') ->expect('Presentation\Api\V1\Http\Requests') ->toExtend('Illuminate\Foundation\Http\FormRequest'); arch('Presentation FormRequests do not contain toInput method') ->expect('Presentation\Api\V1\Http\Requests') ->not->toHaveMethod('toInput'); arch('Presentation layer uses strict types') ->expect('Presentation') ->toUseStrictTypes(); });