mirror of
https://github.com/archtechx/tenancy.git
synced 2026-02-05 02:14:03 +00:00
Add and test excluding models from discovery
This commit is contained in:
parent
a664860d63
commit
2a5683122e
2 changed files with 15 additions and 3 deletions
|
|
@ -16,6 +16,8 @@ trait DealsWithModels
|
||||||
*/
|
*/
|
||||||
public static Closure|null $modelDiscoveryOverride = null;
|
public static Closure|null $modelDiscoveryOverride = null;
|
||||||
|
|
||||||
|
public static array $modelsExcludedFromDiscovery = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Discover all models in the directories configured in 'tenancy.rls.model_directories'.
|
* Discover all models in the directories configured in 'tenancy.rls.model_directories'.
|
||||||
*/
|
*/
|
||||||
|
|
@ -41,7 +43,7 @@ trait DealsWithModels
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}, iterator_to_array($modelFiles)), fn (object|null $class) => $class instanceof Model);
|
}, iterator_to_array($modelFiles)), fn (object|null $object) => $object instanceof Model && ! in_array($object::class, static::$modelsExcludedFromDiscovery));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -249,9 +249,19 @@ test('model discovery gets the models correctly', function() {
|
||||||
// Check that the Post and ScopedComment models are found in the directory
|
// Check that the Post and ScopedComment models are found in the directory
|
||||||
$expectedModels = [Post::class, ScopedComment::class];
|
$expectedModels = [Post::class, ScopedComment::class];
|
||||||
|
|
||||||
$foundModels = array_filter(tenancy()->getModels(), fn (Model $model) => in_array($model::class, $expectedModels));
|
$foundModels = fn () => collect(tenancy()->getModels())->filter(fn (Model $model) => in_array($model::class, $expectedModels));
|
||||||
|
|
||||||
expect($foundModels)->toHaveCount(count($expectedModels));
|
expect($foundModels()->map(fn (Model $model) => $model::class)->values())
|
||||||
|
->toHaveCount(count($expectedModels))
|
||||||
|
->toContain(...$expectedModels);
|
||||||
|
|
||||||
|
$expectedModels = [Post::class];
|
||||||
|
$excludedModels = tenancy()::$modelsExcludedFromDiscovery = [ScopedComment::class];
|
||||||
|
|
||||||
|
expect($foundModels()->map(fn (Model $model) => $model::class)->values())
|
||||||
|
->toHaveCount(count($expectedModels))
|
||||||
|
->toContain(...$expectedModels)
|
||||||
|
->not()->toContain(...$excludedModels);
|
||||||
});
|
});
|
||||||
|
|
||||||
trait UsesUuidAsPrimaryKey
|
trait UsesUuidAsPrimaryKey
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue