1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2025-12-12 12:54:05 +00:00

[1.7.0] Add DB storage driver (#82)

This commit is contained in:
Samuel Štancl 2019-08-16 14:36:49 +02:00 committed by GitHub
parent 674f4b3f9a
commit 9df78eb9c2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 375 additions and 25 deletions

View file

@ -210,6 +210,7 @@ class Kernel extends HttpKernel
->expectsQuestion('Do you want to publish the default database migration?', 'yes');
$this->assertFileExists(base_path('routes/tenant.php'));
$this->assertFileExists(base_path('config/tenancy.php'));
$this->assertFileExists(database_path('migrations/2019_08_08_000000_create_tenants_table.php'));
$this->assertSame("<?php
namespace App\Http;

View file

@ -2,6 +2,9 @@
namespace Stancl\Tenancy\Tests;
use Stancl\Tenancy\StorageDrivers\RedisStorageDriver;
use Stancl\Tenancy\StorageDrivers\DatabaseStorageDriver;
class TenantStorageTest extends TestCase
{
/** @test */
@ -111,4 +114,30 @@ class TenantStorageTest extends TestCase
$this->assertSame($value, tenancy()->put($value));
}
/** @test */
public function correct_storage_driver_is_used()
{
if (config('tenancy.storage_driver') == DatabaseStorageDriver::class) {
$this->assertSame('DatabaseStorageDriver', class_basename(tenancy()->storage));
} elseif (config('tenancy.storage_driver') == RedisStorageDriver::class) {
$this->assertSame('RedisStorageDriver', class_basename(tenancy()->storage));
}
}
/** @test */
public function data_is_stored_with_correct_data_types()
{
tenancy()->put('someBool', false);
$this->assertSame('boolean', gettype(tenancy()->get('someBool')));
tenancy()->put('someInt', 5);
$this->assertSame('integer', gettype(tenancy()->get('someInt')));
tenancy()->put('someDouble', 11.40);
$this->assertSame('double', gettype(tenancy()->get('someDouble')));
tenancy()->put('string', 'foo');
$this->assertSame('string', gettype(tenancy()->get('string')));
}
}

View file

@ -3,19 +3,14 @@
namespace Stancl\Tenancy\Tests;
use Illuminate\Support\Facades\Redis;
use Stancl\Tenancy\StorageDrivers\RedisStorageDriver;
use Stancl\Tenancy\StorageDrivers\DatabaseStorageDriver;
abstract class TestCase extends \Orchestra\Testbench\TestCase
{
public $autoCreateTenant = true;
public $autoInitTenancy = true;
private function checkRequirements(): void
{
parent::checkRequirements();
dd($this->getAnnotations());
}
/**
* Setup the test environment.
*
@ -28,6 +23,12 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase
Redis::connection('tenancy')->flushdb();
Redis::connection('cache')->flushdb();
$this->loadMigrationsFrom([
'--path' => realpath(__DIR__ . '/../assets/migrations'),
'--database' => 'central',
]);
config(['database.default' => 'sqlite']); // fix issue caused by loadMigrationsFrom
if ($this->autoCreateTenant) {
$this->createTenant();
}
@ -37,6 +38,13 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase
}
}
protected function tearDown(): void
{
// config(['database.default' => 'central']);
parent::tearDown();
}
public function createTenant($domain = 'localhost')
{
tenant()->create($domain);
@ -59,6 +67,8 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase
\Dotenv\Dotenv::create(__DIR__ . '/..')->load();
}
fclose(fopen(database_path('central.sqlite'), 'w'));
$app['config']->set([
'database.redis.cache.host' => env('TENANCY_TEST_REDIS_HOST', '127.0.0.1'),
'database.redis.default.host' => env('TENANCY_TEST_REDIS_HOST', '127.0.0.1'),
@ -72,6 +82,10 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase
'database' => env('TENANCY_TEST_REDIS_DB', 14),
'prefix' => 'abc', // todo unrelated to tenancy, but this doesn't seem to have an effect? try to replicate in a fresh laravel installation
],
'database.connections.central' => [
'driver' => 'sqlite',
'database' => database_path('central.sqlite'),
],
'tenancy.database' => [
'based_on' => 'sqlite',
'prefix' => 'tenant',
@ -90,11 +104,27 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase
'tenancy.redis.prefixed_connections' => ['default'],
'tenancy.migrations_directory' => database_path('../migrations'),
]);
if (env('TENANCY_TEST_STORAGE_DRIVER', 'redis') === 'redis') {
$app['config']->set([
'tenancy.storage_driver' => RedisStorageDriver::class,
]);
tenancy()->storage = $app->make(RedisStorageDriver::class);
} elseif (env('TENANCY_TEST_STORAGE_DRIVER', 'redis') === 'db') {
$app['config']->set([
'tenancy.storage_driver' => DatabaseStorageDriver::class,
]);
tenancy()->storage = $app->make(DatabaseStorageDriver::class);
}
}
protected function getPackageProviders($app)
{
return [\Stancl\Tenancy\TenancyServiceProvider::class];
return [
\Stancl\Tenancy\TenancyServiceProvider::class,
];
}
protected function getPackageAliases($app)