PHP code example of jcergolj / laravel-form-request-assertions

1. Go to this page and download the library: Download jcergolj/laravel-form-request-assertions library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

jcergolj / laravel-form-request-assertions example snippets




namespace App\Http\Controllers;

use App\Http\Requests\CreatePostRequest;
use Illuminate\Http\Request;

class PostController extends Controller
{
    public function store(CreatePostRequest $request)
    {
        // ...
    }
}



use App\Http\Controllers\PostController;

Route::post('posts', [PostController::class, 'store']);



namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class CreatePostRequest extends FormRequest
{
    public function authorize()
    {
	    return $this->user()->id === 1 && $this->post->id === 1;
    }

    function rules()
    {
        return ['email' => ['



namespace Tests\Unit;

use Tests\TestCase;
use Jcergolj\FormRequestAssertions\TestableFormRequest;

class CreatePostRequestTest extends TestCase
{
    use TestableFormRequest;

    // ...
}

public function controller_has_form_request()
{
    $this->assertActionUsesFormRequest(PostController::class, 'store', CreatePostRequest::class);
}

public function controller_has_form_request()
{
    $this->post(route('users.store'));

    $this->assertContainsFormRequest(CreateUserRequest::class);
}

public function email_is_equest(CreatePostRequest::class)
        ->validate(['email' => ''])
        ->assertFails(['email' => 'validate(['password' => 'short'])
        ->assertFails(['password' => App\Rules\PasswordRule::class]); //custom password rule class
}

public function email_has_custom_rule_applied()
{
    $this->createFormRequest(CreatePostRequest::class)
        ->validate()
        ->assertHasRule('email', new CustomRule); // here we don't validate the rule, but just make sure rule is applied
}

public function test_email_is_not_il' => 'email|nullable'] */
    $this->createFormRequest(CreatePostRequest::class)
        ->validate([])
        ->assertRulesWithoutFailures(['email' => '

 /** @test */
function test_post_author_is_authorized()
{
    $author = User::factory()->make(['id' => 1]);
    $post = Post::factory()->make(['id' => 1]);

    $this->createFormRequest(CreatePostRequest::class)
        ->withParam('post', $post)
        ->actingAs($author)
        ->assertAuthorized();
}

 /** @test */
function test_transforms_email_to_lowercase_before_validation()
{
    $this->createFormRequest(CreatePostRequest::class)
        ->onPreparedData(['email' => '[email protected]'], function (array $preparedData) {
            $this->assertEquals('[email protected]', $preparedData['email']);
        });
}

   namespace Tests\Support;
   class TestFormRequest extends \Jcergolj\FormRequestAssertions\TestFormRequest
   {
     public function assertSomethingImportant()
     {
       // your assertions on `$this->request`
     }
   }
   

   namespace Tests\Support;
   trait TestableFormRequest {
     use \Jcergolj\FormRequestAssertions\TestableFormRequest;

     protected function createNewTestFormRequest(FormRequest $request): TestFormRequest
     {
       return new \Tests\Support\TestFormRequest($request);
     }
   }
   

createFormRequest(string $requestClass, $headers = [])

assertRouteUsesFormRequest(string $routeName, string $formRequest)

assertActionUsesFormRequest(string $controller, string $method, string $form_request)

validate(array $data)

by(Authenticatable $user = null)

actingAs(Authenticatable $user = null)

withParams(array $params)

withParam(string $param, $value)

assertAuthorized()

assertNotAuthorized()

assertPasses()

assertFails($expectedFailedRules = [])

assertHasMessage($message, $rule = null)

getFailedRules()