From c73bf71e58c23ebdff2bf8da85a5356126eba6e1 Mon Sep 17 00:00:00 2001 From: Wilmer Arambula Date: Thu, 3 Jul 2025 16:53:47 -0400 Subject: [PATCH] test: Add unit test for node state after deletion with children in `NestedSetsBehavior`. --- tests/NestedSetsBehaviorTest.php | 41 ++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/tests/NestedSetsBehaviorTest.php b/tests/NestedSetsBehaviorTest.php index 719c9a3..aa3df8e 100644 --- a/tests/NestedSetsBehaviorTest.php +++ b/tests/NestedSetsBehaviorTest.php @@ -2445,6 +2445,47 @@ public function testCacheInvalidationAfterDeleteWithChildren(): void $this->verifyCacheInvalidation($behavior); } + public function testNodeStateAfterDeleteWithChildren(): void + { + $this->createDatabase(); + + $root = new Tree(['name' => 'Root']); + + $root->makeRoot(); + + $child = new Tree(['name' => 'Child']); + + $child->appendTo($root); + + $grandchild = new Tree(['name' => 'Grandchild']); + + $grandchild->appendTo($child); + + self::assertFalse( + $child->getIsNewRecord(), + 'Child node should not be marked as new record before deletion.', + ); + self::assertNotEmpty( + $child->getOldAttributes(), + 'Child node should have old attributes before deletion.', + ); + + $result = $child->deleteWithChildren(); + + self::assertNotFalse( + $result, + 'DeleteWithChildren should return the number of deleted rows.', + ); + self::assertTrue( + $child->getIsNewRecord(), + "Child node should be marked as new record after deletion ('setOldAttributes(null)' effect).", + ); + self::assertEmpty( + $child->getOldAttributes(), + 'Child node should have empty old attributes after deletion.', + ); + } + public function testManualCacheInvalidation(): void { $this->createDatabase();