Skip to content

Testing ​

Hybridly provides a few resonse testing macros to reduce the boilerplate needed for the most common assertions.

Response macros ​

assertHybridProperty ​

This method asserts that the given hybrid property exists in the response and is equal to the given value. It accepts the same arguments as AssertableJson#where.

assertHybridProperties ​

This method uses an array to perform assertions. Depending on the syntax, it may assert a property presence, its value, its count, or use a callback.

php
$response->assertHybridProperties([
    'first_name', // asserts `first_name` exists
    'first_name' => fn ($name) => expect($name)->toBe('Jon'), // uses a callback to get the value and perform assertions on it
    'first_name' => 'Jon', // asserts `foo` exists and has the value `bar`
    'roles' => ['administrator', 'editor'], // asserts `roles` exists and contains the given properties
    'roles' => fn (Assertable $roles) => $roles->hasAll(['administrator', 'editor']), // same thing, using a callback and a typehinted parameter
    'roles' => 2, // asserts `roles` has 2 values
    'foo.bar' => 'value', // works for nested properties using dot notation as well
]);

assertHasHybridProperty ​

This method asserts that the given hybrid property exists in the response. It accepts the same arguments as AssertableJson#has.

assertMissingHybridProperty ​

This method asserts that the given hybrid property is missing in the response. It accepts the same arguments as AssertableJson#missing.

assertHybridView ​

This method asserts that the view component of the hybrid response is equal to the given value. Additionally, if hybridly.testing.ensure_views_exist is set to true, which it is by default, it will ensure that the view component exists.

To ensure the view component's existence, the paths defined in hybridly.testing.view_paths will be used.

assertHybridVersion ​

This method asserts that the version property of the hybrid response is equal to the given value.

assertHybridUrl ​

This method asserts that the url property of the hybrid response is equal to the given value.

assertHybridPayload ​

This method asserts that the property at the given path is equal to the given value. The path supports dot notation.

assertHybridDialog ​

This method asserts that the given dialog exists, in addition to being able to asserts the correctness of its view component, its properties and its base URL.

Usage

php
get('/users/create')
    ->assertHybridView('users.index')
    ->assertHybridUrl('http://localhost/users/create')
    ->assertHybridDialog(
        baseUrl: 'http://localhost/users',
        view: 'users.create',
        properties: [
            'teamId' => $teamId,
        ],
    );

assertHybrid ​

This method accepts a callback that gets an Hybridly\Testing\Assertable instance as a parameter.

Assertable extends Illuminate\Testing\Fluent\AssertableJson and is initialized with the hybrid response's payload.

Usage

php
use Hybridly\Testing\Assertable;

get('/')->assertHybrid(function (Assertable $hybrid) {
  // ...
});

assertNotHybrid ​

This method simply asserts that the response is not hybrid.

hdd ​

This method die and dumps the hybrid response's payload. If the response was not hybrid, it dumps the response's body instead.

It also accepts a $path parameter. If given, the hybrid property at the given path will be dumped instead.

Global functions ​

partial_headers ​

Generates headers for testing partial requests. Read more in the functions documentation.