Files
radicall/tests/Concerns/ValidatesFormRequests.php
T

41 lines
1.4 KiB
PHP

<?php
namespace Tests\Concerns;
use App\Models\User;
use Illuminate\Routing\Redirector;
use Illuminate\Routing\Route;
use Illuminate\Validation\ValidationException;
trait ValidatesFormRequests
{
protected function formRequestErrors(string $requestClass, array $data, array $files = [], ?User $user = null, array $routeParameters = []): array
{
$request = $requestClass::create('/', 'POST', $data, [], $files);
$request->setContainer(app())->setRedirector(app(Redirector::class));
$request->setUserResolver(fn () => $user);
$route = new Route('POST', '/', []);
$route->parameters = $routeParameters;
$request->setRouteResolver(fn () => $route);
try {
$request->validateResolved();
} catch (ValidationException $e) {
return $e->errors();
}
return [];
}
protected function assertPasses(string $requestClass, array $data, array $files = [], ?User $user = null, array $routeParameters = []): void
{
$this->assertSame([], $this->formRequestErrors($requestClass, $data, $files, $user, $routeParameters));
}
protected function assertFailsOn(string $field, string $requestClass, array $data, array $files = [], ?User $user = null, array $routeParameters = []): void
{
$this->assertArrayHasKey($field, $this->formRequestErrors($requestClass, $data, $files, $user, $routeParameters));
}
}