-
-
Notifications
You must be signed in to change notification settings - Fork 0
chore: Add mutation
testing workflow and configuration files.
#22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #22 +/- ##
===========================================
Coverage 100.00% 100.00%
Complexity 91 91
===========================================
Files 2 2
Lines 474 474
===========================================
Hits 474 474 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
WalkthroughThis update introduces a GitHub Actions workflow for mutation testing, adds and configures the Infection mutation testing tool in Composer, updates its configuration, switches PHPUnit's schema reference to a local path, and refines a conditional check in the Changes
Sequence Diagram(s)sequenceDiagram
participant Developer
participant GitHub Actions
participant Infection Tool
participant Stryker Dashboard
Developer->>GitHub Actions: Push or PR (excluding docs/config)
GitHub Actions->>Infection Tool: Run mutation tests (via reusable workflow)
Infection Tool->>Stryker Dashboard: Report results (using API key)
Infection Tool-->>GitHub Actions: Return mutation test status
GitHub Actions-->>Developer: Display results in PR/checks
Possibly related PRs
Suggested labels
Poem
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 phpcs (3.7.2)src/NestedSetsBehavior.phpWarning: PHP Startup: Invalid date.timezone value 'UTC', using 'UTC' instead in Unknown on line 0 Fatal error: Uncaught Error: Class "Phar" not found in /usr/local/bin/phpcs:3 📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
🧰 Additional context used🧠 Learnings (1)📓 Common learnings
⏰ Context from checks skipped due to timeout of 90000ms (12)
🔇 Additional comments (1)
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (1)
composer.json (1)
18-18
: Version range misses latest Infection 0.30+
The constraint^0.27|^0.29
excludes 0.30 and future minor releases. Unless there is a known incompatibility, broadening the range keeps you current with fixes:-"infection/infection": "^0.27|^0.29", +"infection/infection": "^0.27 || ^0.29 || ^0.30",
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
.github/workflows/mutation.yml
(1 hunks)composer.json
(2 hunks)infection.json5
(1 hunks)phpunit.xml.dist
(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: terabytesoftw
PR: yii2-extensions/nested-sets-behavior#13
File: src/NestedSetsBehavior.php:145-145
Timestamp: 2025-06-29T11:22:41.839Z
Learning: The user terabytesoftw prefers to keep PRs focused and small, implementing enhancements in separate dedicated PRs rather than bundling multiple changes together.
⏰ Context from checks skipped due to timeout of 90000ms (4)
- GitHub Check: phpunit-compatibility / PHP 8.2-windows-latest
- GitHub Check: phpunit-compatibility / PHP 8.3-windows-latest
- GitHub Check: mutation / PHP 8.4-ubuntu-latest
- GitHub Check: mutation / PHP 8.4-ubuntu-latest
🔇 Additional comments (4)
phpunit.xml.dist (1)
4-4
: Local XSD path may break beforevendor/
is present – verify availability
Pointingxsi:noNamespaceSchemaLocation
tovendor/phpunit/phpunit/phpunit.xsd
improves offline reliability, but the file does not exist until dependencies are installed. Tools that parse/validate the XML (IDE, CI pre-install step, static analysers) will fail to resolve the schema. Consider one of:- xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.2/phpunit.xsd"or keep the local path but add a small README note / CI step ordering guarantee.
infection.json5 (1)
2-16
: Confirm intent after removing explicitmutators
block
infection.json5
no longer specifies anymutators
section. Infection defaults to@default=true
, so behaviour is unchanged unless you previously customised the set. If the removal was accidental, re-add the block; if intentional, no action required.composer.json (2)
45-45
: 👍 Plugin whitelisting looks correct
infection/extension-installer
is required when Infection is installed as a plugin; enabling it here prevents Composer warnings.
53-53
: 100 % MSI thresholds are brittle – pipeline will fail on first undetected mutant
Requiring--min-msi=100 --min-covered-msi=100
means any line uncovered by tests or any surviving mutant turns the build red, which is hard to sustain on an active codebase. Typical projects start at the current score and raise the bar gradually.- "mutation": "./vendor/bin/infection --threads=4 --ignore-msi-with-no-mutations --only-covered --min-msi=100 --min-covered-msi=100", + "mutation": "./vendor/bin/infection --threads=4 --ignore-msi-with-no-mutations --only-covered --min-msi=80 --min-covered-msi=85",Adjust the numbers or pass them via CI so they can evolve.
… in `BeforeInsertNode` method.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
tests/NestedSetsBehaviorTest.php (1)
1723-1779
: Consider testing actual behavior logic rather than language features.While this test correctly verifies the null coalescing operator behavior, it doesn't test any real functionality of the
NestedSetsBehavior
class. The test creates an anonymous class just to test PHP's built-in??
operator, which seems disconnected from the actual behavior logic.If this test is targeting specific mutation coverage for null coalescing usage within the actual
NestedSetsBehavior
implementation, consider:
- Testing the actual method in
NestedSetsBehavior
that uses null coalescing instead of creating an isolated test- Adding a comment explaining which specific behavior method this test is designed to cover for mutation testing
- Alternatively, if there's a specific
beforeInsertNode
method that uses null coalescing, test that method directly with realistic scenariosThis would make the test more meaningful and better integrated with the actual codebase functionality.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
tests/NestedSetsBehaviorTest.php
(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: terabytesoftw
PR: yii2-extensions/nested-sets-behavior#13
File: src/NestedSetsBehavior.php:145-145
Timestamp: 2025-06-29T11:22:41.839Z
Learning: The user terabytesoftw prefers to keep PRs focused and small, implementing enhancements in separate dedicated PRs rather than bundling multiple changes together.
⏰ Context from checks skipped due to timeout of 90000ms (17)
- GitHub Check: composer-require-checker / PHP 8.4-ubuntu-latest
- GitHub Check: phpunit / PHP 8.3-ubuntu-latest
- GitHub Check: mutation / PHP 8.4-ubuntu-latest
- GitHub Check: phpunit-compatibility / PHP 8.1-windows-latest
- GitHub Check: phpunit / PHP 8.4-ubuntu-latest
- GitHub Check: phpunit / PHP 8.2-ubuntu-latest
- GitHub Check: phpunit / PHP 8.3-windows-latest
- GitHub Check: phpunit / PHP 8.4-windows-latest
- GitHub Check: phpunit / PHP 8.2-windows-latest
- GitHub Check: phpunit / PHP 8.1-windows-latest
- GitHub Check: phpunit-compatibility / PHP 8.3-windows-latest
- GitHub Check: phpunit-compatibility / PHP 8.1-ubuntu-latest
- GitHub Check: phpunit-compatibility / PHP 8.2-windows-latest
- GitHub Check: phpunit-compatibility / PHP 8.4-windows-latest
- GitHub Check: phpunit-compatibility / PHP 8.1-windows-latest
- GitHub Check: phpunit-compatibility / PHP 8.3-windows-latest
- GitHub Check: mutation / PHP 8.4-ubuntu-latest
…ll` values and improve `left`/`right` attribute handling in `NestedSetsBehavior`.
…n in `NestedSetsBehaviorTest` class.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
tests/NestedSetsBehaviorTest.php (1)
1858-1902
: Great test for validation parameter handling with minor suggestion.This test method effectively validates the
runValidation
parameter behavior inappendTo()
using the new strict validation model. The test correctly verifies both validation enforcement and bypass scenarios.Minor improvement suggestion:
Consider using a different variable name when re-fetching the node from the database at line 1896 to improve code clarity:- $invalidNode2 = TreeWithStrictValidation::findOne($invalidNode2->id); + $persistedNode = TreeWithStrictValidation::findOne($invalidNode2->id); self::assertNotNull( - $invalidNode2, - "Node with ID '{$invalidNode2?->id}' should exist after appending to target node.", + $persistedNode, + "Node with ID '{$invalidNode2->id}' should exist after appending to target node.", );This makes it clearer that you're testing persistence by re-fetching from the database.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
tests/NestedSetsBehaviorTest.php
(2 hunks)tests/phpstan-config.php
(2 hunks)tests/support/model/TreeWithStrictValidation.php
(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- tests/phpstan-config.php
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: terabytesoftw
PR: yii2-extensions/nested-sets-behavior#13
File: src/NestedSetsBehavior.php:145-145
Timestamp: 2025-06-29T11:22:41.839Z
Learning: The user terabytesoftw prefers to keep PRs focused and small, implementing enhancements in separate dedicated PRs rather than bundling multiple changes together.
🧬 Code Graph Analysis (1)
tests/support/model/TreeWithStrictValidation.php (1)
tests/support/model/Tree.php (1)
Tree
(17-64)
🪛 PHPMD (2.15.0)
tests/NestedSetsBehaviorTest.php
1790-1790: Avoid using static access to class '\yii2\extensions\nestedsets\tests\support\model\Tree' in method 'testTransactionRollbackOnDeleteWithChildrenFailure'. (Clean Code Rules)
(StaticAccess)
1845-1845: Avoid using static access to class '\yii2\extensions\nestedsets\tests\support\model\Tree' in method 'testTransactionRollbackOnDeleteWithChildrenFailure'. (Clean Code Rules)
(StaticAccess)
1849-1849: Avoid using static access to class '\yii2\extensions\nestedsets\tests\support\model\Tree' in method 'testTransactionRollbackOnDeleteWithChildrenFailure'. (Clean Code Rules)
(StaticAccess)
1853-1853: Avoid using static access to class '\yii2\extensions\nestedsets\tests\support\model\Tree' in method 'testTransactionRollbackOnDeleteWithChildrenFailure'. (Clean Code Rules)
(StaticAccess)
1862-1862: Avoid using static access to class '\yii2\extensions\nestedsets\tests\support\model\Tree' in method 'testAppendToWithRunValidationParameterUsingStrictValidation'. (Clean Code Rules)
(StaticAccess)
1896-1896: Avoid using static access to class '\yii2\extensions\nestedsets\tests\support\model\TreeWithStrictValidation' in method 'testAppendToWithRunValidationParameterUsingStrictValidation'. (Clean Code Rules)
(StaticAccess)
⏰ Context from checks skipped due to timeout of 90000ms (14)
- GitHub Check: phpunit / PHP 8.3-windows-latest
- GitHub Check: mutation / PHP 8.4-ubuntu-latest
- GitHub Check: phpunit / PHP 8.1-windows-latest
- GitHub Check: phpunit / PHP 8.2-windows-latest
- GitHub Check: phpunit-compatibility / PHP 8.1-ubuntu-latest
- GitHub Check: phpunit / PHP 8.1-ubuntu-latest
- GitHub Check: phpunit / PHP 8.4-windows-latest
- GitHub Check: phpunit-compatibility / PHP 8.3-windows-latest
- GitHub Check: phpunit-compatibility / PHP 8.3-ubuntu-latest
- GitHub Check: phpunit-compatibility / PHP 8.4-windows-latest
- GitHub Check: phpunit-compatibility / PHP 8.1-windows-latest
- GitHub Check: phpunit-compatibility / PHP 8.2-windows-latest
- GitHub Check: phpunit / PHP 8.1-windows-latest
- GitHub Check: mutation / PHP 8.4-ubuntu-latest
🔇 Additional comments (3)
tests/support/model/TreeWithStrictValidation.php (1)
14-24
: LGTM! Well-designed test model for validation scenarios.The
TreeWithStrictValidation
class is well-implemented with comprehensive validation rules that will be useful for testing validation-related functionality. The custom error messages and multiple validation constraints (required, min length, pattern) provide good coverage for testing edge cases.tests/NestedSetsBehaviorTest.php (2)
13-13
: LGTM! Correct import addition.The import statement correctly adds the new
TreeWithStrictValidation
class for use in the test methods.
1786-1856
: Excellent test for transaction rollback verification.This test method thoroughly validates that transaction rollback works correctly when
deleteWithChildren()
fails. The test properly:
- Uses mocking to simulate internal failures
- Verifies that data integrity is maintained after exceptions
- Checks both node count and individual node existence
- Follows good testing practices with clear setup and verification steps
This adds valuable coverage for ensuring data consistency during failed operations.
…ictValidation` class.
…edSetsBehaviorTest`.
…re node name remains unchanged.
…models with behaviors for nested sets functionality.
…ute in `Tree` and `MultipleTree`.
…arity and accuracy.
…versal and add XML fixture for disorder testing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
tests/NestedSetsBehaviorTest.php
(1 hunks)tests/support/data/test-disorder.xml
(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- tests/support/data/test-disorder.xml
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: terabytesoftw
PR: yii2-extensions/nested-sets-behavior#13
File: src/NestedSetsBehavior.php:145-145
Timestamp: 2025-06-29T11:22:41.839Z
Learning: The user terabytesoftw prefers to keep PRs focused and small, implementing enhancements in separate dedicated PRs rather than bundling multiple changes together.
🧬 Code Graph Analysis (1)
tests/NestedSetsBehaviorTest.php (3)
tests/TestCase.php (3)
createDatabase
(93-127)getDb
(40-43)loadFixtureXML
(220-237)src/NestedSetsBehavior.php (1)
children
(477-502)tests/support/model/Tree.php (1)
Tree
(17-64)
🪛 PHPMD (2.15.0)
tests/NestedSetsBehaviorTest.php
2303-2303: Avoid using static access to class '\yii2\extensions\nestedsets\tests\support\model\Tree' in method 'testChildrenMethodRequiresOrderByForCorrectTreeTraversal'. (Clean Code Rules)
(StaticAccess)
🪛 GitHub Check: phpstan / PHP 8.4-ubuntu-latest
tests/NestedSetsBehaviorTest.php
[failure] 2341-2341:
Offset 2 might not exist on array<int, yii\db\ActiveRecord>.
[failure] 2332-2332:
Offset 1 might not exist on array<int, yii\db\ActiveRecord>.
[failure] 2323-2323:
Offset 0 might not exist on array<int, yii\db\ActiveRecord>.
🪛 GitHub Check: mutation / PHP 8.4-ubuntu-latest
tests/NestedSetsBehaviorTest.php
[failure] 2341-2341:
Offset 2 might not exist on array<int, yii\db\ActiveRecord>.
[failure] 2332-2332:
Offset 1 might not exist on array<int, yii\db\ActiveRecord>.
[failure] 2323-2323:
Offset 0 might not exist on array<int, yii\db\ActiveRecord>.
🪛 GitHub Actions: ecs
tests/NestedSetsBehaviorTest.php
[error] 2315-2335: PhpCsFixer detected fixable formatting issues related to MethodArgumentSpaceFixer and whitespace. Run 'vendor/bin/ecs check --fix' to apply fixes.
🔇 Additional comments (1)
tests/NestedSetsBehaviorTest.php (1)
2275-2344
: LGTM! Important test for nested sets ordering behavior.This test validates a crucial aspect of nested sets behavior - ensuring that the
children()
method returns nodes in the correct order by theirlft
attribute. The test design using a deliberately disordered XML fixture is excellent for verifying that the ORDER BY clause is working correctly.
…es and verify order by `ID`.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (2)
tests/NestedSetsQueryBehaviorTest.php (2)
78-112
: Consider the implications of switching from model methods to raw SQL.The change from using
MultipleTree::makeRoot()
to raw SQL inserts bypasses the model's logic and validation. While this approach may provide more predictable behavior for mutation testing, it could miss testing scenarios where the model'smakeRoot()
method contains important business logic.Consider adding a comment explaining why raw SQL is preferred here, or verify that
makeRoot()
doesn't contain critical logic that should be tested through this workflow.+ // Using raw SQL inserts to ensure predictable data for mutation testing + // bypassing model methods that may contain logic subject to mutation $command = $this->getDb()->createCommand();
116-116
: Test logic appears to verify ID-based ordering rather than tree traversal ordering.The expected order
['Root B', 'Root A', 'Root C']
corresponds to ID order[5, 10, 15]
, which suggests the test is verifying that roots are returned ordered by ID. However, the test name suggests it's about "OrderBy for correct tree traversal."Consider updating the test name or adding a comment to clarify what ordering behavior is being tested:
- public function testRootsMethodRequiresOrderByForCorrectTreeTraversal(): void + public function testRootsMethodReturnsRootsOrderedById(): voidOr add a clarifying comment:
+ // Verify that roots() method returns roots ordered by ID (default ordering) $expectedOrderById = ['Root B', 'Root A', 'Root C'];
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
tests/NestedSetsQueryBehaviorTest.php
(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: terabytesoftw
PR: yii2-extensions/nested-sets-behavior#13
File: src/NestedSetsBehavior.php:145-145
Timestamp: 2025-06-29T11:22:41.839Z
Learning: The user terabytesoftw prefers to keep PRs focused and small, implementing enhancements in separate dedicated PRs rather than bundling multiple changes together.
⏰ Context from checks skipped due to timeout of 90000ms (18)
- GitHub Check: phpunit-compatibility / PHP 8.3-ubuntu-latest
- GitHub Check: phpunit-compatibility / PHP 8.4-ubuntu-latest
- GitHub Check: phpunit / PHP 8.3-windows-latest
- GitHub Check: phpunit / PHP 8.2-windows-latest
- GitHub Check: phpunit / PHP 8.4-windows-latest
- GitHub Check: phpunit / PHP 8.1-windows-latest
- GitHub Check: mutation / PHP 8.4-ubuntu-latest
- GitHub Check: phpstan / PHP 8.4-ubuntu-latest
- GitHub Check: phpunit-compatibility / PHP 8.3-ubuntu-latest
- GitHub Check: phpunit-compatibility / PHP 8.1-ubuntu-latest
- GitHub Check: phpunit-compatibility / PHP 8.4-windows-latest
- GitHub Check: phpunit / PHP 8.2-ubuntu-latest
- GitHub Check: phpunit / PHP 8.3-windows-latest
- GitHub Check: phpunit / PHP 8.1-windows-latest
- GitHub Check: phpunit / PHP 8.4-windows-latest
- GitHub Check: phpstan / PHP 8.4-ubuntu-latest
- GitHub Check: composer-require-checker / PHP 8.4-ubuntu-latest
- GitHub Check: mutation / PHP 8.4-ubuntu-latest
🔇 Additional comments (2)
tests/NestedSetsQueryBehaviorTest.php (2)
118-118
: LGTM! Count assertion updated correctly.The assertion correctly reflects the change from 4 to 3 root nodes.
83-89
: Confirmed unique IDs formultiple_tree
entries
- The manual inserts use IDs 10, 5, and 15 only for the
multiple_tree
table in this test.- The fixture files loaded here for
multiple_tree
(test-roots-multiple-tree-query.php
) use IDs 23 and 45—no overlap with 5, 10, or 15.- Other occurrences of
id => 5
refer to the single-treetree
table, notmultiple_tree
.No conflicts with sequences or existing fixtures detected.
…ribute if applicable.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
src/NestedSetsQueryBehavior.php
(2 hunks)tests/NestedSetsQueryBehaviorTest.php
(2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- tests/NestedSetsQueryBehaviorTest.php
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: terabytesoftw
PR: yii2-extensions/nested-sets-behavior#13
File: src/NestedSetsBehavior.php:145-145
Timestamp: 2025-06-29T11:22:41.839Z
Learning: The user terabytesoftw prefers to keep PRs focused and small, implementing enhancements in separate dedicated PRs rather than bundling multiple changes together.
🧬 Code Graph Analysis (1)
src/NestedSetsQueryBehavior.php (1)
src/NestedSetsBehavior.php (1)
getOwner
(1396-1403)
⏰ Context from checks skipped due to timeout of 90000ms (13)
- GitHub Check: phpunit-compatibility / PHP 8.3-ubuntu-latest
- GitHub Check: phpunit-compatibility / PHP 8.1-ubuntu-latest
- GitHub Check: phpunit-compatibility / PHP 8.4-windows-latest
- GitHub Check: phpunit-compatibility / PHP 8.3-windows-latest
- GitHub Check: phpunit-compatibility / PHP 8.1-windows-latest
- GitHub Check: phpunit-compatibility / PHP 8.2-windows-latest
- GitHub Check: phpunit / PHP 8.2-ubuntu-latest
- GitHub Check: phpunit / PHP 8.1-ubuntu-latest
- GitHub Check: phpunit / PHP 8.2-windows-latest
- GitHub Check: phpunit / PHP 8.3-windows-latest
- GitHub Check: phpunit / PHP 8.1-windows-latest
- GitHub Check: mutation / PHP 8.4-ubuntu-latest
- GitHub Check: mutation / PHP 8.4-ubuntu-latest
🔇 Additional comments (2)
src/NestedSetsQueryBehavior.php (2)
89-89
: LGTM! Comment accurately reflects the new ordering behavior.The updated comment correctly describes the new ordering logic that prioritizes tree attribute (when enabled) followed by left attribute, which is consistent with the implementation below.
109-113
: Excellent consistency improvement with theleaves()
method.The ordering logic now follows the exact same pattern as the
leaves()
method (lines 67-71), which provides better consistency across the behavior. The prioritization of tree attribute over left attribute makes sense for multi-tree scenarios in nested sets.
…bute in `NestedSetsQueryBehaviorTest`.
…SetsQueryBehaviorTest`.
… when tree attribute is disabled.
…attribute is disabled.
…use strict comparison.
Summary by CodeRabbit
Chores
Bug Fixes