LearningLaravelYai's avatar

Test: CustomRequest + Validation

I want to write a Test, that:

1: Uses a CustomRequest class, with validation rules.

2: Write a test, that only test this classs.

3: I do not want to create a controller in this case.

4: I would prefer it to be a unit test, and not a features test.

app\Http\Requests\CustomRequest.php

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class CustomRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return false;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'name' => 'required|string|max:50',
            'email' => 'nullable|email|max:50',
            'age' => 'min:1|max:200'
        ];
    }
}

tests\Unit\RequestValidationTest.php

<?php

namespace Tests\Unit;

use Tests\TestCase;
use App\Http\Requests\CustomRequest;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Http\FormRequest;

class RequestValidationTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testExample()
    {

        $request1 = CustomRequest::create(
            'api/path/',
            'POST',
            [
                'name' => 'sdfsfsdf',
                'email' => '[email protected]',
                'age' => 33
            ]
        );

        $request1->validate(); /* This doesnt work? */
        $request1->validateResolved(); /* This doesnt work? */

/* GOAL: This is supposed to dump the  validated, but it doesn't work'*/
        dump('Validated array', $request1->validated() );
        
        $this->assertTrue(true);
    }
}

0 likes
0 replies

Please or to participate in this conversation.