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:
parent
674f4b3f9a
commit
9df78eb9c2
13 changed files with 375 additions and 25 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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')));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue