motty / laravel-common
Laravel - Common classes and services
Requires
- php: >=5.5.9
- illuminate/database: ~5.1.0
- illuminate/support: ~5.1.0
- vlucas/phpdotenv: ~1.0
Requires (Dev)
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2024-11-23 19:20:24 UTC
README
Tests
This are a bunch of classes
/ traits
that try to add all the missed parts from Laravel 5.1 new testing integration suite in an attempt to make our testing life even easier
Configuration
Environment parameters
We will need to setup the following environments parameters in order to make the testing helpers work.
FACTORIES_PATH = [...]
MIGRATIONS_PATH = [...]
MODELS_NAMESPACE = [...]
We will find the following Traits
to be used in our TestCase
:
use Motty\Laravel\Common\Testing\Api; use Motty\Laravel\Common\Testing\CleanDatabase; use Motty\Laravel\Common\Testing\MigrateDatabase; use Motty\Laravel\Common\Testing\ResetModelEvents; use Motty\Laravel\Common\Testing\RelocateFactories; class ApiTestCase extends TestCase { use Api, CleanDatabase, MigrateDatabase, RelocateFactories, ResetModelEvents; ...
Traits
Api
This trait
will provide us with a bunch of methods to help us when testing APIs
// Decode as json the response from call and store it on jsonResponse object
getJson()
// Asserts that an object has a specified attributes
assertObjectHasAttributes()
CleanDatabase
Method used to clean the database, this will be a specific method in charge of restart all the autoincrement index, truncate the tables if needed and all the tasks related to prepare the database before each the test case
I was needed to seed the database for each test case independently, however I ran into a problem in where the autoincrement
value of my tables do not get restarted when rolling back
or when using a transaction
We can use Laravel trait DatabaseTransactions
to delete all our just saved records after each test case
however that won't restart the index database's table, which you could need if you need to access any of the elements that you have saved into the database previously.
Note: This just work at the moment with Postgres database, you could if you whish at a PR for other Database
MigrateDatabase
Trait used to migrate the database according to our environment parameter MIGRATIONS_PATH
/** * @beforeClass */ public static function migrateDatabase() { // migrate database according to our environment parameter MIGRATIONS_PATH Artisan::call('migrate', ['--path' => env('MIGRATIONS_PATH', 'database/migrations')]); }
RelocateFactories
Trait used to relocate Factories according to our environment parameter FACTORIES_PATH, by default Laravel use the factories that are on the path database/factories
however to override this behaviour and use our own path for the factories is no trivial.
ResetModelEvent
Trait used to reset Models' events after each test to trigger eloquent models events when testing
In order to made this trait
work we'll need to specify our models like so in our TestCase
class:
protected $models = [ 'Contact', 'User' ];