mirror of
https://github.com/brufdev/many-notes.git
synced 2026-04-25 03:08:28 -05:00
Add architecture tests and code fixes
This commit is contained in:
@@ -2,6 +2,79 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
arch()->preset()->php();
|
||||
arch()->preset()->laravel();
|
||||
arch()->preset()->security();
|
||||
|
||||
arch('controllers')
|
||||
->expect('App\Http\Controllers')
|
||||
->not->toBeUsed();
|
||||
|
||||
arch('avoid mutation')
|
||||
->expect('App')
|
||||
->classes()
|
||||
->toBeReadonly()
|
||||
->ignoring([
|
||||
'App\Exceptions',
|
||||
'App\Jobs',
|
||||
'App\Livewire',
|
||||
'App\Models',
|
||||
'App\Providers',
|
||||
'App\Services',
|
||||
]);
|
||||
|
||||
arch('avoid inheritance')
|
||||
->expect('App')
|
||||
->classes()
|
||||
->toExtendNothing()
|
||||
->ignoring([
|
||||
'App\Exceptions',
|
||||
'App\Jobs',
|
||||
'App\Livewire',
|
||||
'App\Models',
|
||||
'App\Providers',
|
||||
'App\Services',
|
||||
]);
|
||||
|
||||
arch('avoid open for extension')
|
||||
->expect('App')
|
||||
->classes()
|
||||
->toBeFinal()
|
||||
->ignoring([
|
||||
'App\Livewire',
|
||||
]);
|
||||
|
||||
arch('avoid abstraction')
|
||||
->expect('App')
|
||||
->not->toBeAbstract();
|
||||
|
||||
arch('factories')
|
||||
->expect('Database\Factories')
|
||||
->toExtend(Factory::class)
|
||||
->toHaveMethod('definition')
|
||||
->toOnlyBeUsedIn([
|
||||
'App\Models',
|
||||
]);
|
||||
|
||||
arch('models')
|
||||
->expect('App\Models')
|
||||
->toHaveMethod('casts')
|
||||
->toOnlyBeUsedIn([
|
||||
'App\Actions',
|
||||
'App\Http',
|
||||
'App\Jobs',
|
||||
'App\Livewire',
|
||||
'App\Models',
|
||||
'App\Observers',
|
||||
'App\Policies',
|
||||
'App\Providers',
|
||||
'App\Services',
|
||||
'Database\Factories',
|
||||
'Database\Seeders',
|
||||
]);
|
||||
|
||||
arch('actions')
|
||||
->expect('App\Actions')
|
||||
->toHaveMethod('handle');
|
||||
|
||||
Reference in New Issue
Block a user