mirror of
https://github.com/archtechx/tenancy.git
synced 2026-02-05 01:14:03 +00:00
Correct terminology, add test for throwing exceptions
This commit is contained in:
parent
adfddab951
commit
640ba9e7f1
1 changed files with 25 additions and 4 deletions
|
|
@ -20,6 +20,7 @@ use Stancl\Tenancy\RLS\PolicyManagers\TableRLSManager;
|
||||||
use Stancl\Tenancy\Bootstrappers\PostgresRLSBootstrapper;
|
use Stancl\Tenancy\Bootstrappers\PostgresRLSBootstrapper;
|
||||||
use Stancl\Tenancy\Database\Exceptions\RecursiveRelationshipException;
|
use Stancl\Tenancy\Database\Exceptions\RecursiveRelationshipException;
|
||||||
use function Stancl\Tenancy\Tests\pest;
|
use function Stancl\Tenancy\Tests\pest;
|
||||||
|
use Stancl\Tenancy\Exceptions\RLSCommentConstraintException;
|
||||||
|
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
TableRLSManager::$scopeByDefault = true;
|
TableRLSManager::$scopeByDefault = true;
|
||||||
|
|
@ -663,8 +664,8 @@ test('table manager ignores recursive relationship if the foreign key responsibl
|
||||||
expect(fn () => app(TableRLSManager::class)->generateTrees())->not()->toThrow(RecursiveRelationshipException::class);
|
expect(fn () => app(TableRLSManager::class)->generateTrees())->not()->toThrow(RecursiveRelationshipException::class);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('table manager can generate paths leading through non-constrained foreign keys', function() {
|
test('table manager can generate paths leading through comment constraint columns', function() {
|
||||||
// Drop extra tables
|
// Drop extra tables for generated
|
||||||
Schema::dropIfExists('reactions');
|
Schema::dropIfExists('reactions');
|
||||||
Schema::dropIfExists('comments');
|
Schema::dropIfExists('comments');
|
||||||
Schema::dropIfExists('posts');
|
Schema::dropIfExists('posts');
|
||||||
|
|
@ -672,12 +673,12 @@ test('table manager can generate paths leading through non-constrained foreign k
|
||||||
|
|
||||||
Schema::create('non_constrained_users', function (Blueprint $table) {
|
Schema::create('non_constrained_users', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->string('tenant_id')->comment('rls tenants.id'); // "fake" constraint
|
$table->string('tenant_id')->comment('rls tenants.id'); // comment constraint
|
||||||
});
|
});
|
||||||
|
|
||||||
Schema::create('non_constrained_posts', function (Blueprint $table) {
|
Schema::create('non_constrained_posts', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->foreignId('author_id')->comment('rls non_constrained_users.id'); // another "fake" constraint
|
$table->foreignId('author_id')->comment('rls non_constrained_users.id'); // comment constraint
|
||||||
});
|
});
|
||||||
|
|
||||||
/** @var TableRLSManager $manager */
|
/** @var TableRLSManager $manager */
|
||||||
|
|
@ -719,6 +720,26 @@ test('table manager can generate paths leading through non-constrained foreign k
|
||||||
expect($manager->generateTrees())->toEqual($expectedTrees);
|
expect($manager->generateTrees())->toEqual($expectedTrees);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('table manager throws an exception when comment constraint is incorrect', function(string $comment, string $exceptionMessage) {
|
||||||
|
Schema::create('non_constrained_users', function (Blueprint $table) use ($comment) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('tenant_id')->comment($comment); // Invalid comment constraint
|
||||||
|
});
|
||||||
|
|
||||||
|
/** @var TableRLSManager $manager */
|
||||||
|
$manager = app(TableRLSManager::class);
|
||||||
|
|
||||||
|
expect(fn () => $manager->generateTrees())->toThrow(
|
||||||
|
RLSCommentConstraintException::class,
|
||||||
|
$exceptionMessage
|
||||||
|
);
|
||||||
|
})->with([
|
||||||
|
['rls non_constrained_users', 'Malformed comment constraint on non_constrained_users'],
|
||||||
|
['rls non_constrained_users.foreign.id', 'Malformed comment constraint on non_constrained_users'],
|
||||||
|
['rls nonexistent-table.id', 'references non-existent table'],
|
||||||
|
['rls non_constrained_users.nonexistent-column', 'references non-existent column'],
|
||||||
|
]);
|
||||||
|
|
||||||
class Post extends Model
|
class Post extends Model
|
||||||
{
|
{
|
||||||
protected $guarded = [];
|
protected $guarded = [];
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue