mirror of
https://github.com/archtechx/tenancy.git
synced 2026-06-21 03:04:04 +00:00
expand includeInPending logic
This commit is contained in:
parent
5ab14fdd5c
commit
b7bd439a9d
3 changed files with 18 additions and 8 deletions
|
|
@ -20,8 +20,12 @@ class MigrateDatabase implements ShouldQueue
|
||||||
/**
|
/**
|
||||||
* Should pending tenants be included while migrating,
|
* Should pending tenants be included while migrating,
|
||||||
* regardless of the tenancy.pending.include_in_queries config value.
|
* regardless of the tenancy.pending.include_in_queries config value.
|
||||||
|
*
|
||||||
|
* If false, pending tenants will be specifically excluded.
|
||||||
|
*
|
||||||
|
* If null, default to tenancy.pending.include_in_queries config.
|
||||||
*/
|
*/
|
||||||
public static bool $includePending = true;
|
public static ?bool $includePending = true;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
protected TenantWithDatabase&Model $tenant,
|
protected TenantWithDatabase&Model $tenant,
|
||||||
|
|
@ -31,7 +35,7 @@ class MigrateDatabase implements ShouldQueue
|
||||||
{
|
{
|
||||||
Artisan::call('tenants:migrate', [
|
Artisan::call('tenants:migrate', [
|
||||||
'--tenants' => [$this->tenant->getTenantKey()],
|
'--tenants' => [$this->tenant->getTenantKey()],
|
||||||
'--with-pending' => static::$includePending,
|
'--with-pending' => static::$includePending ?? config('tenancy.pending.include_in_queries'),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,12 @@ class SeedDatabase implements ShouldQueue
|
||||||
/**
|
/**
|
||||||
* Should pending tenants be included while seeding,
|
* Should pending tenants be included while seeding,
|
||||||
* regardless of the tenancy.pending.include_in_queries config value.
|
* regardless of the tenancy.pending.include_in_queries config value.
|
||||||
|
*
|
||||||
|
* If false, pending tenants will be specifically excluded.
|
||||||
|
*
|
||||||
|
* If null, default to tenancy.pending.include_in_queries config.
|
||||||
*/
|
*/
|
||||||
public static bool $includePending = true;
|
public static ?bool $includePending = true;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
protected TenantWithDatabase&Model $tenant,
|
protected TenantWithDatabase&Model $tenant,
|
||||||
|
|
@ -31,7 +35,7 @@ class SeedDatabase implements ShouldQueue
|
||||||
{
|
{
|
||||||
Artisan::call('tenants:seed', [
|
Artisan::call('tenants:seed', [
|
||||||
'--tenants' => [$this->tenant->getTenantKey()],
|
'--tenants' => [$this->tenant->getTenantKey()],
|
||||||
'--with-pending' => static::$includePending,
|
'--with-pending' => static::$includePending ?? config('tenancy.pending.include_in_queries'),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -268,7 +268,7 @@ test('pending tenants can have default attributes for non-nullable columns', fun
|
||||||
expect($fn)->toThrow(QueryException::class);
|
expect($fn)->toThrow(QueryException::class);
|
||||||
})->with([true, false]);
|
})->with([true, false]);
|
||||||
|
|
||||||
test('pending tenant databases can be migrated using a job unless configured otherwise', function (bool $includeInQueries, bool $migrateWithPending) {
|
test('pending tenant databases can be migrated using a job unless configured otherwise', function (bool $includeInQueries, ?bool $migrateWithPending) {
|
||||||
config([
|
config([
|
||||||
'tenancy.bootstrappers' => [DatabaseTenancyBootstrapper::class],
|
'tenancy.bootstrappers' => [DatabaseTenancyBootstrapper::class],
|
||||||
'tenancy.pending.include_in_queries' => $includeInQueries,
|
'tenancy.pending.include_in_queries' => $includeInQueries,
|
||||||
|
|
@ -293,16 +293,17 @@ test('pending tenant databases can be migrated using a job unless configured oth
|
||||||
|
|
||||||
// MigrateDatabase includes/excludes pending tenants based on its $includePending property,
|
// MigrateDatabase includes/excludes pending tenants based on its $includePending property,
|
||||||
// regardless of the tenancy.pending.include_in_queries config.
|
// regardless of the tenancy.pending.include_in_queries config.
|
||||||
expect(Schema::hasTable('users'))->toBe($migrateWithPending);
|
expect(Schema::hasTable('users'))->toBe($migrateWithPending ?? $includeInQueries);
|
||||||
})->with([
|
})->with([
|
||||||
'include pending in queries' => [true],
|
'include pending in queries' => [true],
|
||||||
'exclude pending from queries' => [false],
|
'exclude pending from queries' => [false],
|
||||||
])->with([
|
])->with([
|
||||||
'migrate with pending' => [true],
|
'migrate with pending' => [true],
|
||||||
'migrate without pending' => [false],
|
'migrate without pending' => [false],
|
||||||
|
'default to config' => [null],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
test('pending tenant databases can be seeded using a job unless configured otherwise', function ($includeInQueries, $seedWithPending) {
|
test('pending tenant databases can be seeded using a job unless configured otherwise', function (bool $includeInQueries, ?bool $seedWithPending) {
|
||||||
config([
|
config([
|
||||||
'tenancy.bootstrappers' => [DatabaseTenancyBootstrapper::class],
|
'tenancy.bootstrappers' => [DatabaseTenancyBootstrapper::class],
|
||||||
'tenancy.pending.include_in_queries' => $includeInQueries,
|
'tenancy.pending.include_in_queries' => $includeInQueries,
|
||||||
|
|
@ -328,13 +329,14 @@ test('pending tenant databases can be seeded using a job unless configured other
|
||||||
|
|
||||||
// SeedDatabase includes/excludes pending tenants based on its $includePending property,
|
// SeedDatabase includes/excludes pending tenants based on its $includePending property,
|
||||||
// regardless of the tenancy.pending.include_in_queries config.
|
// regardless of the tenancy.pending.include_in_queries config.
|
||||||
expect(User::where('email', 'seeded@user')->exists())->toBe($seedWithPending);
|
expect(User::where('email', 'seeded@user')->exists())->toBe($seedWithPending ?? $includeInQueries);
|
||||||
})->with([
|
})->with([
|
||||||
'include pending in queries' => [true],
|
'include pending in queries' => [true],
|
||||||
'exclude pending from queries' => [false],
|
'exclude pending from queries' => [false],
|
||||||
])->with([
|
])->with([
|
||||||
'seed with pending' => [true],
|
'seed with pending' => [true],
|
||||||
'seed without pending' => [false],
|
'seed without pending' => [false],
|
||||||
|
'default to config' => [null],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
test('jobs that run before tenants get fully created recognize pending tenants', function () {
|
test('jobs that run before tenants get fully created recognize pending tenants', function () {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue