sven / laravel-collection-testing-helpers
Convenience methods on your Laravel collections for testing
Requires
- php: ^8.0
- illuminate/collections: ^8.0
- phpunit/phpunit: ^9.0
README
Laravel Collection Testing Helpers
This package adds several convenience methods to your Laravel collections to make assertions against them more fluent and readable.
Installation
You'll have to follow a couple of simple steps to install this package.
Downloading
Via composer:
$ composer require sven/laravel-collection-testing-helpers --dev
Or add the package to your development dependencies in composer.json
and run
composer update
on the command line to download the package:
{ "require-dev": { "sven/laravel-collection-testing-helpers": "^1.0" } }
Usage
To use this package in your tests, you must first call the \Sven\LaravelCollectionTestingHelpers\Helpers::enable()
method where you want to use the assertions. You may then use the methods directly on your collections:
<?php use Sven\LaravelCollectionTestingHelpers\Helpers; use Illuminate\Foundation\Testing\TestCase; class ExampleTest extends TestCase { public function test_collections() { Helpers::enable(); collect(['apple', 'pear', 'banana']) ->assertContains('apple') ->assertNotContains('orange'); } public function test_callable_filtering() { Helpers::enable(); collect(['apple', 'pear', 'banana']) ->assertContains(fn ($fruit) => $fruit === 'pear') ->assertNotContains(fn ($fruit) => $fruit === 'kiwi'); } public function test_keyed_collections() { Helpers::enable(); collect([['name' => 'apple'], ['name' => 'pear'], ['name' => 'banana']]) ->assertContains('name', 'apple') ->assertNotContains('name', 'grape'); } }
Credits
Big thanks to @eduarguz for his original work on this
in the now-abandoned sven/laravel-testing-utils
package.
Contributing
All contributions (pull requests, issues and feature requests) are welcome. Make sure to read through the CONTRIBUTING.md first, though. See the contributors page for all contributors.
License
sven/laravel-collection-testing-helpers
is licensed under the MIT License (MIT).
Please see the license file for more information.