tenancy-docs/docs/source/v2/application-testing.blade.md
2019-11-08 19:50:38 +01:00

1.5 KiB

title description extends section
Application Testing Application Testing.. _layouts.documentation content

Application Testing

Note: You cannot use :memory: SQLite databases or the RefreshDatabase trait due to the switching of default database.

To test your application with this package installed, you can create tenants in the setUp() method of your test case:

protected function setUp(): void
{
    parent::setUp();

    tenancy()->create('test.localhost');
    tenancy()->init('test.localhost');
}

And to delete tenants & their databases after tests:

public function tearDown(): void
{
    config([
        'tenancy.queue_database_deletion' => false,
        'tenancy.delete_database_after_tenant_deletion' => true,
    ]);
    tenancy()->all()->each->delete();

    parent::tearDown();
}

If you're using the database storage driver, you will also need to run the migrations:

protected function setUp(): void
{
    parent::setUp();

    $this->artisan('migrate:fresh');

    tenancy()->create('test.localhost');
    tenancy()->init('test.localhost');
}

If you're using the Redis storage driver, flush the database in setUp():

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');
}