This package provides a set of rules to help you manage your database state when running your E2E tests using Eloquent model factories.
You can install the package via composer:
composer require --dev canvural/laravel-e2e-routes
If you wish to customize some options, you may publish the config file with
php artisan vendor:publish --provider="Vural\E2ERoutes\E2ERoutesServiceProvider"
This is the published config files contents. Here you can customize the route prefix which will be added to all the provided routes.Route names, and the namespace that all your models live in.
<?php
return [
'prefix' => 'e2e',
'name' => 'e2e-routes',
'modelNamespace' => 'App\\',
];
For obvious reasons this package does not exposes the routes in the production
environment. In other environments you can use the routes.
You can use the http://localhost/e2e/reset
route to reset your database. Under the hood this route makes a call to migrate:refresh
Artisan command. Also if you wish to seed
your database after migrating, you may call the route with seed
query string attached. http://localhost/e2e/reset?seed
This package uses your Eloquent model factories to create the data.
So, for example if you have a model called User
and the associated UserFactory
you can make a POST request to the http://localhost/e2e/user
endpoint to create a User
in your database. Also, newly created model will be returned as a response from the endpoint.
You can substitute user
in the above example with any model you want. If the given model is not found, a 404
response will be returned. Also, if the model exists but a factory for that model does not exists a 404
response will be returned.
Like the factory
method, this package also provides you an ability to overwrite models attributes. Simply add a body to your request like so:
[
'attributes' => [ 'name' => 'John Doe' ]
]
This will overwrite the name
attribute.
You can specify how many model you want to create with
[
'times' => 3
]
This will return an array containing 3 models.
If you defined some states for your factories, you can use them when you are making the request.
[
'states' => ['withAddress']
]
This will create your model with the withAddress
state. If the given state is not endpoint will return a 404
response.
[
'attributes' => [
'name' => 'John Doe',
],
'states' => ['withAddress'],
'times' => 2
]
You can also combine the options like this.
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.