expect('Application') ->not->toUse([ 'Presentation', 'Infra', 'Infrastructure', 'App', ]); arch('Application layer does not depend on Illuminate framework') ->expect('Application') ->not->toUse('Illuminate'); arch('Application layer uses strict types') ->expect('Application') ->toUseStrictTypes(); arch('Application Usecase classes are final and readonly') ->expect('Application\Usecase') ->toBeReadonly() ->toBeFinal(); arch('Application layer must not contain Presenters') ->expect('Application') ->classes() ->not->toHaveSuffix('Presenter'); arch('Application layer must not contain Views') ->expect('Application') ->classes() ->not->toHaveSuffix('View'); });