All Projects → dillingham → nova-assertions

dillingham / nova-assertions

Licence: MIT license
Laravel Nova assertions for your tests

Programming Languages

PHP
23972 projects - #3 most used programming language

Projects that are alternatives of or similar to nova-assertions

nova-system-resources
Display the system usage in Laravel-Nova
Stars: ✭ 30 (-60.53%)
Mutual labels:  laravel-nova
nova-grouped-field
Combine multiple Nova fields as one field output
Stars: ✭ 43 (-43.42%)
Mutual labels:  laravel-nova
nova-errors
Display all form errors in a modal at the top of the page.
Stars: ✭ 16 (-78.95%)
Mutual labels:  laravel-nova
laravel-nova-order-nestedset-field
Laravel Nova field that make your resources orderable
Stars: ✭ 21 (-72.37%)
Mutual labels:  laravel-nova
nova-url-field
A URL input and link field for Laravel Nova
Stars: ✭ 96 (+26.32%)
Mutual labels:  laravel-nova
laravel-nova-visual-composer
Visual Composer for Laravel Nova
Stars: ✭ 15 (-80.26%)
Mutual labels:  laravel-nova
nova-qrcode-field
A Laravel Nova field to generate QR Code
Stars: ✭ 28 (-63.16%)
Mutual labels:  laravel-nova
nova-list-card
Add a variety of resource lists to Nova dashboards
Stars: ✭ 39 (-48.68%)
Mutual labels:  laravel-nova
nova-inspire
The best way to connect with your customers is by reaching out and inspiring them. ~ Me
Stars: ✭ 14 (-81.58%)
Mutual labels:  laravel-nova
Lang
List of 78 languages for Laravel Framework 4, 5, 6, 7 and 8, Laravel Jetstream , Laravel Fortify, Laravel Breeze, Laravel Cashier, Laravel Nova and Laravel Spark.
Stars: ✭ 6,285 (+8169.74%)
Mutual labels:  laravel-nova
nova-html
This field allows you display custom HTML in Laravel Nova, be it a link, an image or any other piece of proper html.
Stars: ✭ 13 (-82.89%)
Mutual labels:  laravel-nova
select-auto-complete
An auto-completing Laravel Nova search field
Stars: ✭ 34 (-55.26%)
Mutual labels:  laravel-nova
nova-settings
A tool for editing settings on your project using akaunting/setting package on Laravel Nova
Stars: ✭ 18 (-76.32%)
Mutual labels:  laravel-nova
nova-sluggable
Slug field for Laravel Nova
Stars: ✭ 40 (-47.37%)
Mutual labels:  laravel-nova
nova-rating-field
A Star rating field to use in your Laravel Nova apps.
Stars: ✭ 42 (-44.74%)
Mutual labels:  laravel-nova
nova-blogify-tool
Create a simple blog in a few seconds. Powered by Laravel Nova.
Stars: ✭ 20 (-73.68%)
Mutual labels:  laravel-nova
nova-translatable
Nova Field for spatie/laravel-translatable package.
Stars: ✭ 84 (+10.53%)
Mutual labels:  laravel-nova
nova-conditional-fields
WIP: Conditionally display fields based on another field's value
Stars: ✭ 38 (-50%)
Mutual labels:  laravel-nova
nova-gridder
Customize Nova Resource Details using Tailwind Grid System and more
Stars: ✭ 18 (-76.32%)
Mutual labels:  laravel-nova
nova-hidden-field
A Laravel Nova Hidden field.
Stars: ✭ 32 (-57.89%)
Mutual labels:  laravel-nova

Nova Assertions

Latest Version on Github Total Downloads Twitter Follow

Nova requests & assertions for Laravel tests - View examples

testing tdd laravel nova

Assert: Policies | Cards | Actions | Filters | Lenses | Resources | Fields | Relations


Installation

composer require dillingham/nova-assertions --dev

Enable by adding the NovaAssertions to a test

use NovaTesting\NovaAssertions;

class UserTest extends TestCase
{
    use NovaAssertions;
}

Authentication

Log in a user that has access to Nova

$this->be(factory(User::class)->create());

Nova Requests

Request using a resource's uriKey to perform assertions:

$response = $this->novaIndex('users');

$response = $this->novaDetail('users', $user->id);

$response = $this->novaCreate('users');

$response = $this->novaEdit('users', $user->id);

$response = $this->novaLens('users', Lens::class);

Request Filters

You may also pass filters & their values to indexes & lenses

$response = $this->novaIndex('users', [
    StatusFilter::class => 'active'
]);
$response = $this->novaLens('users', Lens::class, [
    StatusFilter::class => 'active'
]);

Assert Http

You can call http response methods as usual:

$response->assertOk();

Assert Resources

$response->assertResourceCount(3);
$response->assertResources(function($resources) {
    return $resources->count() > 0;
});

Assert Cards

$response->assertCardCount(5);
$response->assertCardsInclude(Card::class);
$response->assertCardsExclude(Card::class);
$response->assertCards(function($cards) {
    return $cards->count() > 0;
});

Assert Actions

$response->assertActionCount(5);
$response->assertActionsInclude(Action::class);
$response->assertActionsExclude(Action::class);
$response->assertActions(function($actions) {
    return $actions->count() > 0;
});

Assert Filters

$response->assertFilterCount(5);
$response->assertFiltersInclude(Filter::class);
$response->assertFiltersExclude(Filter::class);
$response->assertFilters(function($filters) {
    return $filters->count() > 0;
});

Assert Lenses

$response->assertLensCount(5);
$response->assertLensesInclude(Lens::class);
$response->assertLensesExclude(Lens::class);
$response->assertLenses(function($lenses) {
    return $lenses->count() > 0;
});

Assert Fields

$response->assertFieldCount(5);

Assert a specific field exists

$response->assertFieldsInclude('id');

Assert a specific field contains a value

$response->assertFieldsInclude('id', $user->id);

Assert multiple fields exist

$response->assertFieldsInclude(['id', 'email']);

Assert multiple fields with specific values exist

$response->assertFieldsInclude(['id' => 1, 'email' => 'example']);

Assert multiple values for one field exist

$response->assertFieldsInclude('id', $users->pluck('id'));

Make assertions against a collection of fields

$response->assertFields(function($fields) {
    return $fields->count() > 0;
});

Also exclude works in all of these scenarios

$response->assertFieldsExclude(['id' => 1, 'email' => 'example']);

Assert Relations

// App\Nova\Post
// BelongsTo::make('Category'),
$response = $this->novaCreate('posts');

$response->assertRelation('categories', function($categories) {
    //
});
// App\Nova\Category
// HasMany::make('Posts'),
$response = $this->novaDetail('categories');

$response->assertRelation('posts', function($posts) {
    //
});

Assert Policies

Assert Nova's use of policies & the authed user:

$response->assertCanView();

$response->assertCanCreate();

$response->assertCanUpdate();

$response->assertCanDelete();

$response->assertCanForceDelete();

$response->assertCanRestore();

Also can assert cannot for each:

$response->assertCannotView();

Author

Hi 👋, Im Brian Dillingham, creator of this Nova package and others

Hope you find it useful. Feel free to reach out with feedback.

Follow me on twitter: @im_brian_d

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].