mirror of
https://github.com/archtechx/tenancy.git
synced 2026-02-05 08:44:04 +00:00
wip
This commit is contained in:
commit
c38dd1bb9a
8 changed files with 196 additions and 53 deletions
|
|
@ -76,7 +76,7 @@ class CommandsTest extends TestCase
|
|||
}
|
||||
|
||||
/** @test */
|
||||
public function database_connection_is_switched_to_default_after_migrating_or_seeding_or_rolling_back()
|
||||
public function database_connection_is_switched_to_default()
|
||||
{
|
||||
$originalDBName = DB::connection()->getDatabaseName();
|
||||
|
||||
|
|
@ -88,13 +88,29 @@ class CommandsTest extends TestCase
|
|||
|
||||
Artisan::call('tenants:rollback');
|
||||
$this->assertSame($originalDBName, DB::connection()->getDatabaseName());
|
||||
|
||||
$this->run_commands_works();
|
||||
$this->assertSame($originalDBName, DB::connection()->getDatabaseName());
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function database_connection_is_switched_to_default_after_migrating_or_seeding_or_rolling_back_when_tenancy_has_been_initialized()
|
||||
public function database_connection_is_switched_to_default_when_tenancy_has_been_initialized()
|
||||
{
|
||||
tenancy()->init('localhost');
|
||||
|
||||
$this->database_connection_is_switched_to_default_after_migrating_or_seeding_or_rolling_back();
|
||||
$this->database_connection_is_switched_to_default();
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function run_commands_works()
|
||||
{
|
||||
$uuid = tenant()->create('run.localhost')['uuid'];
|
||||
|
||||
Artisan::call('tenants:migrate', ['--tenants' => $uuid]);
|
||||
|
||||
$this->artisan("tenants:run foo --tenants=$uuid --argument='a=foo' --option='b=bar' --option='c=xyz'")
|
||||
->expectsOutput("User's name is Test command")
|
||||
->expectsOutput('foo')
|
||||
->expectsOutput('xyz');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
17
tests/Etc/ConsoleKernel.php
Normal file
17
tests/Etc/ConsoleKernel.php
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<?php
|
||||
|
||||
namespace Stancl\Tenancy\Tests\Etc;
|
||||
|
||||
use Orchestra\Testbench\Console\Kernel;
|
||||
|
||||
class ConsoleKernel extends Kernel
|
||||
{
|
||||
/**
|
||||
* The Artisan commands provided by your application.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $commands = [
|
||||
ExampleCommand::class,
|
||||
];
|
||||
}
|
||||
39
tests/Etc/ExampleCommand.php
Normal file
39
tests/Etc/ExampleCommand.php
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
<?php
|
||||
|
||||
namespace Stancl\Tenancy\Tests\Etc;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
class ExampleCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'foo {a} {--b=} {--c=}';
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
User::create([
|
||||
'id' => 999,
|
||||
'name' => 'Test command',
|
||||
'email' => 'test@command.com',
|
||||
'password' => bcrypt('password'),
|
||||
]);
|
||||
|
||||
$this->line("User's name is " . User::find(999)->name);
|
||||
$this->line($this->argument('a'));
|
||||
$this->line($this->option('c'));
|
||||
}
|
||||
}
|
||||
|
||||
class User extends \Illuminate\Database\Eloquent\Model
|
||||
{
|
||||
protected $guarded = [];
|
||||
}
|
||||
|
|
@ -26,7 +26,7 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase
|
|||
Artisan::call('migrate:fresh', [
|
||||
'--path' => __DIR__ . '/../src/assets/migrations'
|
||||
]);
|
||||
dd(Artisan::output());
|
||||
// dd(Artisan::output());
|
||||
// $this->loadLaravelMigrations();
|
||||
// $this->loadMigrationsFrom(__DIR__ . '/../src/assets/migrations');
|
||||
|
||||
|
|
@ -62,7 +62,6 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase
|
|||
}
|
||||
|
||||
$app['config']->set([
|
||||
'database.redis.client' => 'phpredis',
|
||||
'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'),
|
||||
'database.redis.options.prefix' => 'foo',
|
||||
|
|
@ -88,33 +87,22 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase
|
|||
'public',
|
||||
's3',
|
||||
],
|
||||
'tenancy.redis.tenancy' => true,
|
||||
'tenancy.redis.tenancy' => env('TENANCY_TEST_REDIS_TENANCY', true),
|
||||
'database.redis.client' => env('TENANCY_TEST_REDIS_CLIENT', 'phpredis'),
|
||||
'tenancy.redis.prefixed_connections' => ['default'],
|
||||
'tenancy.migrations_directory' => database_path('../migrations'),
|
||||
]);
|
||||
|
||||
switch ((string) env('STANCL_TENANCY_TEST_VARIANT', '1')) {
|
||||
case '3':
|
||||
$app['config']->set([
|
||||
'tenancy.redis.tenancy' => true,
|
||||
'database.redis.client' => 'phpredis',
|
||||
'tenancy.storage_driver' => DatabaseStorageDriver::class,
|
||||
]);
|
||||
tenancy()->setStorageDriver(DatabaseStorageDriver::class);
|
||||
|
||||
break;
|
||||
case '2':
|
||||
$app['config']->set([
|
||||
'tenancy.redis.tenancy' => false,
|
||||
'database.redis.client' => 'predis',
|
||||
]);
|
||||
break;
|
||||
default:
|
||||
$app['config']->set([
|
||||
'tenancy.redis.tenancy' => true,
|
||||
'database.redis.client' => 'phpredis',
|
||||
]);
|
||||
if (env('TENANCY_TEST_STORAGE_DRIVER', 'redis') === 'db') {
|
||||
$app['config']->set([
|
||||
'tenancy.redis.tenancy' => true,
|
||||
'database.redis.client' => 'phpredis',
|
||||
'tenancy.storage_driver' => DatabaseStorageDriver::class,
|
||||
]);
|
||||
|
||||
tenancy()->setStorageDriver(DatabaseStorageDriver::class);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected function getPackageProviders($app)
|
||||
|
|
@ -141,6 +129,17 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase
|
|||
$app->singleton('Illuminate\Contracts\Http\Kernel', Etc\HttpKernel::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve application Console Kernel implementation.
|
||||
*
|
||||
* @param \Illuminate\Foundation\Application $app
|
||||
* @return void
|
||||
*/
|
||||
protected function resolveApplicationConsoleKernel($app)
|
||||
{
|
||||
$app->singleton('Illuminate\Contracts\Console\Kernel', Etc\ConsoleKernel::class);
|
||||
}
|
||||
|
||||
public function randomString(int $length = 10)
|
||||
{
|
||||
return substr(str_shuffle(str_repeat($x = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($length / strlen($x)))), 1, $length);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue