feat(presets): improve laravel preset

This commit is contained in:
Nuno Maduro
2024-06-25 22:02:23 +01:00
parent 9d02b649e2
commit 57ef989df8
2 changed files with 71 additions and 5 deletions

View File

@ -18,8 +18,6 @@ final class Base extends AbstractPreset
'debug_zval_dump', 'debug_zval_dump',
'debug_backtrace', 'debug_backtrace',
'debug_print_backtrace', 'debug_print_backtrace',
'dd',
'ddd',
'dump', 'dump',
'ray', 'ray',
'die', 'die',

View File

@ -4,6 +4,8 @@ declare(strict_types=1);
namespace Pest\ArchPresets; namespace Pest\ArchPresets;
use Throwable;
/** /**
* @internal * @internal
*/ */
@ -15,37 +17,94 @@ final class Laravel extends AbstractPreset
public function execute(): void public function execute(): void
{ {
$this->expectations[] = expect([ $this->expectations[] = expect([
'dd',
'ddd',
'env', 'env',
'exit', 'exit',
])->not->toBeUsed(); ])->not->toBeUsed();
$this->expectations[] = expect('App')
->not->toBeEnums()
->ignoring('App\Enums');
$this->expectations[] = expect('App\Enums')
->toBeEnums();
$this->expectations[] = expect('App\Exceptions')
->classes()
->toImplement('Throwable');
$this->expectations[] = expect('App')
->not->toImplement(Throwable::class)
->ignoring('App\Exceptions');
$this->expectations[] = expect('App\Http\Controllers') $this->expectations[] = expect('App\Http\Controllers')
->classes()
->toHaveSuffix('Controller'); ->toHaveSuffix('Controller');
$this->expectations[] = expect('App')
->not->toHaveSuffix('Controller')
->ignoring('App\Http\Controllers');
$this->expectations[] = expect('App\Http\Middleware') $this->expectations[] = expect('App\Http\Middleware')
->classes()
->toHaveMethod('handle'); ->toHaveMethod('handle');
$this->expectations[] = expect('App\Models') $this->expectations[] = expect('App\Models')
->classes()
->toExtend('Illuminate\Database\Eloquent\Model')
->not->toHaveSuffix('Model'); ->not->toHaveSuffix('Model');
$this->expectations[] = expect('App')
->not->toExtend('Illuminate\Database\Eloquent\Model')
->ignoring('App\Models');
$this->expectations[] = expect('App\Http\Requests') $this->expectations[] = expect('App\Http\Requests')
->classes()
->toHaveSuffix('Request') ->toHaveSuffix('Request')
->toExtend('Illuminate\Foundation\Http\FormRequest') // @phpstan-ignore-line ->toExtend('Illuminate\Foundation\Http\FormRequest') // @phpstan-ignore-line
->toHaveMethod('rules'); ->toHaveMethod('rules');
$this->expectations[] = expect('App')
->not->toExtend('Illuminate\Foundation\Http\FormRequest')
->ignoring('App\Http\Requests');
$this->expectations[] = expect('App\Console\Commands') $this->expectations[] = expect('App\Console\Commands')
->classes()
->toHaveSuffix('Command') ->toHaveSuffix('Command')
->toExtend('Illuminate\Console\Command') // @phpstan-ignore-line ->toExtend('Illuminate\Console\Command') // @phpstan-ignore-line
->toHaveMethod('handle'); ->toHaveMethod('handle');
$this->expectations[] = expect('App\Exceptions') $this->expectations[] = expect('App')
->toImplement('Throwable'); ->not->toExtend('Illuminate\Console\Command')
->ignoring('App\Console\Commands');
$this->expectations[] = expect('App\Mail') $this->expectations[] = expect('App\Mail')
->classes()
->toExtend('Illuminate\Mail\Mailable'); // @phpstan-ignore-line ->toExtend('Illuminate\Mail\Mailable'); // @phpstan-ignore-line
$this->expectations[] = expect('App')
->not->toExtend('Illuminate\Mail\Mailable')
->ignoring('App\Mail');
$this->expectations[] = expect('App\Jobs') $this->expectations[] = expect('App\Jobs')
->toHaveMethod('handle'); ->classes()
->toImplement('Illuminate\Contracts\Queue\ShouldQueue')
->toUseTraits([
'Illuminate\Bus\Queueable',
'Illuminate\Foundation\Bus\Dispatchable',
'Illuminate\Queue\InteractsWithQueue',
'Illuminate\Queue\SerializesModels',
])->toHaveMethod('handle');
$this->expectations[] = expect('App')
->not->toImplement('Illuminate\Contracts\Queue\ShouldQueue')
->not->toUseTraits([
'Illuminate\Bus\Queueable',
'Illuminate\Foundation\Bus\Dispatchable',
'Illuminate\Queue\InteractsWithQueue',
'Illuminate\Queue\SerializesModels',
])->ignoring('App\Jobs');
$this->expectations[] = expect('App\Listeners') $this->expectations[] = expect('App\Listeners')
->toHaveMethod('handle'); ->toHaveMethod('handle');
@ -53,9 +112,18 @@ final class Laravel extends AbstractPreset
$this->expectations[] = expect('App\Notifications') $this->expectations[] = expect('App\Notifications')
->toExtend('Illuminate\Notifications\Notification'); // @phpstan-ignore-line ->toExtend('Illuminate\Notifications\Notification'); // @phpstan-ignore-line
$this->expectations[] = expect('App')
->not->toExtend('Illuminate\Notifications\Notification')
->ignoring('App\Notifications');
$this->expectations[] = expect('App\Providers') // @phpstan-ignore-line $this->expectations[] = expect('App\Providers') // @phpstan-ignore-line
->toHaveSuffix('ServiceProvider') ->toHaveSuffix('ServiceProvider')
->toExtend('Illuminate\Support\ServiceProvider') // @phpstan-ignore-line ->toExtend('Illuminate\Support\ServiceProvider') // @phpstan-ignore-line
->not->toBeUsed(); ->not->toBeUsed();
$this->expectations[] = expect('App')
->not->toExtend('Illuminate\Support\ServiceProvider')
->not->toHaveSuffix('ServiceProvider')
->ignoring('App\Providers');
} }
} }