From aff94a1565071de990e10d4b5c3a4bc8457d9a3a Mon Sep 17 00:00:00 2001 From: Wilmer Arambula Date: Mon, 30 Jun 2025 08:56:42 -0400 Subject: [PATCH] test: Add verification for accessibility of protected method `beforeInsertRootNode` in subclasses of `NestedSetsBehavior`. --- tests/NestedSetsBehaviorTest.php | 43 ++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/tests/NestedSetsBehaviorTest.php b/tests/NestedSetsBehaviorTest.php index 845070d..63e6ef1 100644 --- a/tests/NestedSetsBehaviorTest.php +++ b/tests/NestedSetsBehaviorTest.php @@ -2126,4 +2126,47 @@ public function testProtectedBeforeInsertNodeRemainsAccessibleToSubclasses(): vo '\'beforeInsertNode\' should set the \'depth\' attribute correctly.', ); } + + public function testProtectedBeforeInsertRootNodeRemainsAccessibleToSubclasses(): void + { + $this->createDatabase(); + + $rootTestNode = new ExtendableMultipleTree( + [ + 'name' => 'Root Test Node', + 'tree' => 2, + ], + ); + + $rootBehavior = $rootTestNode->getBehavior('nestedSetsBehavior'); + + self::assertInstanceOf( + ExtendableNestedSetsBehavior::class, + $rootBehavior, + '\'ExtendableMultipleTree\' should use \'ExtendableNestedSetsBehavior\'.', + ); + + $rootBehavior->exposedBeforeInsertRootNode(); + + self::assertTrue( + $rootBehavior->wasMethodCalled('beforeInsertRootNode'), + '\'beforeInsertRootNode\' method should remain protected to allow subclass customization.', + ); + + self::assertEquals( + 1, + $rootTestNode->lft, + '\'beforeInsertRootNode\' should set \'left\' attribute to \'1\'.', + ); + self::assertEquals( + 2, + $rootTestNode->rgt, + '\'beforeInsertRootNode\' should set \'right\' attribute to \'2\'.', + ); + self::assertEquals( + 0, + $rootTestNode->depth, + '\'beforeInsertRootNode\' should set \'depth\' attribute to \'0\'.', + ); + } }