diff --git a/navigation.php b/navigation.php index 31078d39..6b84f47c 100644 --- a/navigation.php +++ b/navigation.php @@ -29,6 +29,7 @@ return [ 'Jobs & Queues' => 'docs/jobs-queues', 'Event System' => 'docs/event-system', 'Tenancy Initialization' => 'docs/tenancy-initialization', + 'Application Testing' => 'docs/application-testing', 'Writing Storage Drivers' => 'docs/writing-storage-drivers', 'Development' => 'docs/development', ], diff --git a/source/docs/application-testing.md b/source/docs/application-testing.md new file mode 100644 index 00000000..9a4e2829 --- /dev/null +++ b/source/docs/application-testing.md @@ -0,0 +1,51 @@ +--- +title: Application Testing +description: Application Testing with stancl/tenancy — A Laravel multi-database tenancy package that respects your code.. +extends: _layouts.documentation +section: content +--- + +# Testing {#testing} + +To test your application with this package installed, you can create tenants in the `setUp()` method of your test case: + +```php +protected function setUp(): void +{ + parent::setUp(); + + tenant()->create('test.localhost'); + tenancy()->init('test.localhost'); +} +``` + +If you're using the database storage driver, you will also need to run the `create_tenants_table` migration: +```php +protected function setUp(): void +{ + parent::setUp(); + + $this->call('migrate', [ + '--path' => database_path('migrations'), + '--database' => 'sqlite', + ]); + + tenant()->create('test.localhost'); + tenancy()->init('test.localhost'); +} +``` + +If you're using the Redis storage driver, flush the database in `setUp()`: + +```php +protected function setUp(): void +{ + parent::setUp(); + + // make sure you're using a different connection for testing to avoid losing data + Redis::connection('tenancyTesting')->flushdb(); + + tenant()->create('test.localhost'); + tenancy()->init('test.localhost'); +} +``` \ No newline at end of file