Downloads
Stars
Version
This package contains some nifty helpers and assertions that are made with Laravel in mind. The majority of functions are found in other packages, tutorials or repositories and credit is given for each function.
Via Composer
$ composer require jeroen-g/testassist
All helpers are designed as traits and organised in components focused on browser, console and filesystem tests. If you want to have all helpers, simply use the general Assistants that will include all others for you.
use JeroenG\TestAssist\Assistants;
class MyTest {
use Assistants;
// ...
}
use JeroenG\TestAssist\Assistants
This function accepts two parameters, the first is the classname that needs to get called, the second is a callback during which the class should be called. And example would be an event listener:
public function test_this()
{
$this->assertIsCalled(UserHasSignedUp::class, function() {
User::create([....]);
});
}
use JeroenG\TestAssist\Browser\ClearCookiesBetweenTests
Using this trait will make sure that between each test the user is logged out and all (session) cookies are deleted.
The best way to use this is to alter your TestCase's tearDown()
:
use JeroenG\TestAssist\Browser\ClearCookiesBetweenTests;
protected function tearDown()
{
parent::tearDown();
$this->clearCookies();
}
use JeroenG\TestAssist\Console\OutputAssertions
Contains two functions: seeInConsoleOutput($text)
and 'doNotSeeInConsoleOutput($text)` to check whether or not the (un)expected text appears in the console output.
use JeroenG\TestAssist\Console\ExceptionHandling
Use disableExceptionHandling()
to get the entire stacktrace instead of a error 500
-like message. Use withExceptionHandling()
to reactivate Laravel's error rendering.
use JeroenG\TestAssist\Database\FabricateModels
Containts two functions as shortcuts to Laravel's factory method to create/make model instances. The shortest use would be as follows:
$member = $this->create(User::class);
$member = $this->make(User::class);
use JeroenG\TestAssist\Database\DataAssertions
Containts two methods to assert if an Eloquent model is inserted into the database (technically an alias for assertDatabaseHas()
) or to assert that its row is updated or deleted.
$this->assertCreated('users', $member);
$this->assertUpdated('users', $member);
$this->assertDeleted('users', $member);
use JeroenG\TestAssist\Database\SQLiteRegex
Add the function below to your SetUpBeforeClass
to give SQLite the ability to use REGEXP
statements.
More information here and credits should go here.
$this->AddRegexToSQLite();
use JeroenG\TestAssist\Database\SeedDatabase
Runs your DatabaseSeeder
class if you use the trait. In your testcase's setUp
method you should run this:
// At the top of your class:
use JeroenG\TestAssist\Assistants;
// in setUp():
$this->runSeeder();
If you do not use the whole set of assistants (see top of usage section), place the following code in your setUp()
method to run it only once:
// If Concerns\SeedDatabase is used, go seed the database, but only once per class.
if (isset(static::$seedDatabase) && static::$seedDatabase != false) {
$this->seedDatabase();
static::$seedDatabase = false;
}
use JeroenG\TestAssist\Filesystem\ManageFilesystem
As the moment this trait has only the function removeDir($path)
to nuke the directory and everything inside of it.
use JeroenG\TestAssist\Filesystem\FileAssertions
There are several assertions present to work with the (non)existence of files and directories.
function test_filesystem() {
$this->assertFileExistsOnDisk($filename); // Optionally pass the storage disk (defualt: local)
$this->assertFileNotExistsOnDisk($filename);
$this->assertFileExistsInZip($zipPath, $filename);
$this->assertFileDoesntExistsInZip($zipPath, $filename);
}
The underlying functions such as pathExists()
are of course also available for use.
Please see the changelog for more information on what has changed recently.
Please see contributing.md for details and a todolist.
EUPL-1.1. Please see the license file for more information.