diff --git a/tests/mssql/CacheManagementTest.php b/tests/mssql/CacheManagementTest.php index 804feb0..22678d6 100644 --- a/tests/mssql/CacheManagementTest.php +++ b/tests/mssql/CacheManagementTest.php @@ -6,12 +6,39 @@ use PHPUnit\Framework\Attributes\Group; use yii2\extensions\nestedsets\tests\base\AbstractCacheManagement; +use yii2\extensions\nestedsets\tests\support\MSSQLConnection; +/** + * Test suite for cache invalidation in nested sets tree behaviors using SQL Server. + * + * Verifies correct cache management, invalidation, and memoization for nested sets tree structures in SQL Server + * environments, covering node insertions, updates, deletions, and structural changes for both single and multiple tree + * models. + * + * Inherits integration and unit tests from {@see AbstractCacheManagement} to ensure cache lifecycle correctness, + * including depth, left, and right attribute handling, and supports both manual and automatic cache invalidation + * scenarios. + * + * Key features. + * - Ensures compatibility and correctness of cache logic on the SQL Server platform. + * - Full coverage of cache population, invalidation, and memoization for nested sets behaviors. + * - SQL Server-specific configuration for database connection and credentials. + * + * @see AbstractCacheManagement for test logic and scenarios. + * + * @copyright Copyright (C) 2023 Terabytesoftw. + * @license https://opensource.org/license/bsd-3-clause BSD 3-Clause License. + */ #[Group('mssql')] final class CacheManagementTest extends AbstractCacheManagement { - protected string $driverName = 'sqlsrv'; - protected string|null $dsn = 'sqlsrv:Server=127.0.0.1,1433;Database=yiitest;Encrypt=no'; - protected string $password = 'YourStrong!Passw0rd'; - protected string $username = 'SA'; + protected function setUp(): void + { + $this->driverName = MSSQLConnection::DRIVER_NAME->value; + $this->dsn = MSSQLConnection::DSN->value; + $this->password = MSSQLConnection::PASSWORD->value; + $this->username = MSSQLConnection::USERNAME->value; + + parent::setUp(); + } } diff --git a/tests/mssql/ExceptionHandlingTest.php b/tests/mssql/ExceptionHandlingTest.php index 7c35ba3..1959560 100644 --- a/tests/mssql/ExceptionHandlingTest.php +++ b/tests/mssql/ExceptionHandlingTest.php @@ -6,12 +6,39 @@ use PHPUnit\Framework\Attributes\Group; use yii2\extensions\nestedsets\tests\base\AbstractExceptionHandling; +use yii2\extensions\nestedsets\tests\support\MSSQLConnection; +/** + * Test suite for exception handling in nested sets tree behaviors using SQL Server. + * + * Verifies correct exception throwing and error messages for invalid node operations and edge cases in nested sets tree + * structures on SQL Server, covering both single and multiple tree models. + * + * Inherits unit tests from {@see AbstractExceptionHandling} to ensure robustness of the nested sets behavior by + * simulating invalid operations such as appending, inserting, deleting, and making root nodes under unsupported + * conditions. + * + * Key features. + * - Ensures error handling consistency for unsupported operations on SQL Server. + * - Full coverage for invalid append, insert, delete, and makeRoot operations. + * - Support for both single-tree and multi-tree models. + * - Tests for exception messages and types in various edge cases. + * + * @see AbstractExceptionHandling for test logic and scenarios. + * + * @copyright Copyright (C) 2023 Terabytesoftw. + * @license https://opensource.org/license/bsd-3-clause BSD 3-Clause License. + */ #[Group('mssql')] final class ExceptionHandlingTest extends AbstractExceptionHandling { - protected string $driverName = 'sqlsrv'; - protected string|null $dsn = 'sqlsrv:Server=127.0.0.1,1433;Database=yiitest;Encrypt=no'; - protected string $password = 'YourStrong!Passw0rd'; - protected string $username = 'SA'; + protected function setUp(): void + { + $this->driverName = MSSQLConnection::DRIVER_NAME->value; + $this->dsn = MSSQLConnection::DSN->value; + $this->password = MSSQLConnection::PASSWORD->value; + $this->username = MSSQLConnection::USERNAME->value; + + parent::setUp(); + } } diff --git a/tests/mssql/ExtensibilityTest.php b/tests/mssql/ExtensibilityTest.php index 25b010c..19a05c1 100644 --- a/tests/mssql/ExtensibilityTest.php +++ b/tests/mssql/ExtensibilityTest.php @@ -6,12 +6,39 @@ use PHPUnit\Framework\Attributes\Group; use yii2\extensions\nestedsets\tests\base\AbstractExtensibility; +use yii2\extensions\nestedsets\tests\support\MSSQLConnection; +/** + * Test suite for extensibility in nested sets tree behaviors using SQL Server. + * + * Verifies that protected methods in the nested sets behavior remain accessible and customizable for subclassing + * scenarios on SQL Server, ensuring extensibility for advanced use cases in both single-tree and multi-tree models. + * + * Inherits unit tests from {@see AbstractExtensibility} to validate the exposure and correct execution of key internal + * methods, supporting framework extension and advanced customization in descendant classes. + * + * Key features. + * - Ensures protected methods are accessible for subclass extension. + * - Supports both single-tree and multi-tree model scenarios. + * - Tests before-insert and move operations for extensibility. + * - Validates extensibility for root and non-root node operations. + * - Verifies correct attribute assignment by protected methods. + * + * @see AbstractExtensibility for test logic and scenarios. + * + * @copyright Copyright (C) 2023 Terabytesoftw. + * @license https://opensource.org/license/bsd-3-clause BSD 3-Clause License. + */ #[Group('mssql')] final class ExtensibilityTest extends AbstractExtensibility { - protected string $driverName = 'sqlsrv'; - protected string|null $dsn = 'sqlsrv:Server=127.0.0.1,1433;Database=yiitest;Encrypt=no'; - protected string $password = 'YourStrong!Passw0rd'; - protected string $username = 'SA'; + protected function setUp(): void + { + $this->driverName = MSSQLConnection::DRIVER_NAME->value; + $this->dsn = MSSQLConnection::DSN->value; + $this->password = MSSQLConnection::PASSWORD->value; + $this->username = MSSQLConnection::USERNAME->value; + + parent::setUp(); + } } diff --git a/tests/mssql/NodeAppendTest.php b/tests/mssql/NodeAppendTest.php index fad8db8..43b2a2f 100644 --- a/tests/mssql/NodeAppendTest.php +++ b/tests/mssql/NodeAppendTest.php @@ -6,12 +6,42 @@ use PHPUnit\Framework\Attributes\Group; use yii2\extensions\nestedsets\tests\base\AbstractNodeAppend; +use yii2\extensions\nestedsets\tests\support\MSSQLConnection; +/** + * Test suite for node append and root promotion in nested sets tree behaviors using SQL Server. + * + * Provides comprehensive unit and integration tests for appending nodes and promoting nodes to root in nested sets tree + * structures on SQL Server, ensuring correct tree structure, attribute updates, and validation logic for both + * single-tree and multi-tree models. + * + * Inherits tests from {@see AbstractNodeAppend} to validate node append operations, strict validation scenarios, root + * promotion, and XML dataset matching after structural changes, covering edge cases such as validation bypass, + * attribute refresh requirements, and cross-tree operations. + * + * Key features. + * - Covers both {@see Tree} and {@see MultipleTree} model scenarios. + * - Cross-tree append operations for multi-tree models. + * - Ensures correct left, right, depth, and tree attribute updates for SQL Server. + * - Root promotion and attribute refresh verification. + * - Validation of strict and non-strict append operations. + * - XML dataset matching after structural changes. + * + * @see AbstractNodeAppend for test logic and scenarios. + * + * @copyright Copyright (C) 2023 Terabytesoftw. + * @license https://opensource.org/license/bsd-3-clause BSD 3-Clause License. + */ #[Group('mssql')] final class NodeAppendTest extends AbstractNodeAppend { - protected string $driverName = 'sqlsrv'; - protected string|null $dsn = 'sqlsrv:Server=127.0.0.1,1433;Database=yiitest;Encrypt=no'; - protected string $password = 'YourStrong!Passw0rd'; - protected string $username = 'SA'; + protected function setUp(): void + { + $this->driverName = MSSQLConnection::DRIVER_NAME->value; + $this->dsn = MSSQLConnection::DSN->value; + $this->password = MSSQLConnection::PASSWORD->value; + $this->username = MSSQLConnection::USERNAME->value; + + parent::setUp(); + } } diff --git a/tests/mssql/NodeDeleteTest.php b/tests/mssql/NodeDeleteTest.php index 9586a8e..b8f7b92 100644 --- a/tests/mssql/NodeDeleteTest.php +++ b/tests/mssql/NodeDeleteTest.php @@ -6,12 +6,43 @@ use PHPUnit\Framework\Attributes\Group; use yii2\extensions\nestedsets\tests\base\AbstractNodeDelete; +use yii2\extensions\nestedsets\tests\support\MSSQLConnection; +/** + * Test suite for node deletion in nested sets tree behaviors using SQL Server. + * + * Provides comprehensive unit tests for node and subtree deletion operations in nested sets tree structures on SQL + * Server, ensuring correct state transitions, affected row counts, and data integrity after deletions for both + * single-tree and multi-tree models. + * + * Inherits tests from {@see AbstractNodeDelete} to validate node deletion, subtree removals, abort scenarios, + * transactional behavior, and update operations on node attributes, covering edge cases and XML dataset consistency + * after deletions. + * + * Key features. + * - Covers update operations and affected row count for node attribute changes. + * - Ensures correct affected row counts for node and subtree deletions in both {@see Tree} and {@see MultipleTree} + * models. + * - SQL Server-specific configuration for database connection and credentials. + * - Tests aborting deletions via `beforeDelete()` and transactional behavior. + * - Validates XML dataset consistency after deletions. + * - Verifies node state transitions after `deleteWithChildren()` (new record status, old attributes). + * + * @see AbstractNodeDelete for test logic and scenarios. + * + * @copyright Copyright (C) 2023 Terabytesoftw. + * @license https://opensource.org/license/bsd-3-clause BSD 3-Clause License. + */ #[Group('mssql')] final class NodeDeleteTest extends AbstractNodeDelete { - protected string $driverName = 'sqlsrv'; - protected string|null $dsn = 'sqlsrv:Server=127.0.0.1,1433;Database=yiitest;Encrypt=no'; - protected string $password = 'YourStrong!Passw0rd'; - protected string $username = 'SA'; + protected function setUp(): void + { + $this->driverName = MSSQLConnection::DRIVER_NAME->value; + $this->dsn = MSSQLConnection::DSN->value; + $this->password = MSSQLConnection::PASSWORD->value; + $this->username = MSSQLConnection::USERNAME->value; + + parent::setUp(); + } } diff --git a/tests/mssql/NodeInsertTest.php b/tests/mssql/NodeInsertTest.php index 3cf7399..fc3c064 100644 --- a/tests/mssql/NodeInsertTest.php +++ b/tests/mssql/NodeInsertTest.php @@ -6,12 +6,41 @@ use PHPUnit\Framework\Attributes\Group; use yii2\extensions\nestedsets\tests\base\AbstractNodeInsert; +use yii2\extensions\nestedsets\tests\support\MSSQLConnection; +/** + * Test suite for node insertion in nested sets tree behaviors using SQL Server. + * + * Provides comprehensive unit tests for node insertion operations in nested sets tree structures on SQL Server, + * ensuring correct behavior for inserting nodes before and after targets, with and without validation, and across both + * single-tree and multi-tree models. + * + * Inherits tests from {@see AbstractNodeInsert} to validate insertion logic, strict validation scenarios, cross-tree + * insertions, and XML dataset matching after structural changes, covering edge cases such as validation bypass, + * attribute refresh requirements, and multi-tree operations. + * + * Key features. + * - Covers both {@see Tree} and {@see MultipleTree} model scenarios. + * - Edge case handling for strict validation and cross-tree insertions. + * - Ensures correct left, right, depth, and tree attribute updates for SQL Server. + * - Validation of strict and non-strict insert operations. + * - XML dataset matching after structural changes. + * + * @see AbstractNodeInsert for test logic and scenarios. + * + * @copyright Copyright (C) 2023 Terabytesoftw. + * @license https://opensource.org/license/bsd-3-clause BSD 3-Clause License. + */ #[Group('mssql')] final class NodeInsertTest extends AbstractNodeInsert { - protected string $driverName = 'sqlsrv'; - protected string|null $dsn = 'sqlsrv:Server=127.0.0.1,1433;Database=yiitest;Encrypt=no'; - protected string $password = 'YourStrong!Passw0rd'; - protected string $username = 'SA'; + protected function setUp(): void + { + $this->driverName = MSSQLConnection::DRIVER_NAME->value; + $this->dsn = MSSQLConnection::DSN->value; + $this->password = MSSQLConnection::PASSWORD->value; + $this->username = MSSQLConnection::USERNAME->value; + + parent::setUp(); + } } diff --git a/tests/mssql/NodePrependTest.php b/tests/mssql/NodePrependTest.php index 6e26632..ccd4250 100644 --- a/tests/mssql/NodePrependTest.php +++ b/tests/mssql/NodePrependTest.php @@ -6,12 +6,40 @@ use PHPUnit\Framework\Attributes\Group; use yii2\extensions\nestedsets\tests\base\AbstractNodePrepend; +use yii2\extensions\nestedsets\tests\support\MSSQLConnection; +/** + * Test suite for node prepend operations in nested sets tree behaviors using SQL Server. + * + * Provides comprehensive unit and integration tests for prepending nodes in nested sets tree structures on SQL Server, + * ensuring correct tree structure, attribute updates, and validation logic for both single-tree and multi-tree models. + * + * Inherits tests from {@see AbstractNodePrepend} to validate node prepend operations, strict validation scenarios, and + * XML dataset matching after structural changes, covering edge cases such as validation bypass, attribute refresh + * requirements, and cross-tree operations. + * + * Key features. + * - Covers both {@see Tree} and {@see MultipleTree} model scenarios. + * - Ensures correct left, right, depth, and tree attribute updates after prepend operations for SQL Server. + * - Tests for prepending new and existing nodes, including cross-tree operations. + * - Validation of strict and non-strict prepend operations. + * - XML dataset matching after structural changes. + * + * @see AbstractNodePrepend for test logic and scenarios. + * + * @copyright Copyright (C) 2023 Terabytesoftw. + * @license https://opensource.org/license/bsd-3-clause BSD 3-Clause License. + */ #[Group('mssql')] final class NodePrependTest extends AbstractNodePrepend { - protected string $driverName = 'sqlsrv'; - protected string|null $dsn = 'sqlsrv:Server=127.0.0.1,1433;Database=yiitest;Encrypt=no'; - protected string $password = 'YourStrong!Passw0rd'; - protected string $username = 'SA'; + protected function setUp(): void + { + $this->driverName = MSSQLConnection::DRIVER_NAME->value; + $this->dsn = MSSQLConnection::DSN->value; + $this->password = MSSQLConnection::PASSWORD->value; + $this->username = MSSQLConnection::USERNAME->value; + + parent::setUp(); + } } diff --git a/tests/mssql/NodeStateTest.php b/tests/mssql/NodeStateTest.php index 0a5a862..9749800 100644 --- a/tests/mssql/NodeStateTest.php +++ b/tests/mssql/NodeStateTest.php @@ -6,12 +6,39 @@ use PHPUnit\Framework\Attributes\Group; use yii2\extensions\nestedsets\tests\base\AbstractNodeState; +use yii2\extensions\nestedsets\tests\support\MSSQLConnection; +/** + * Test suite for node state and relationship in nested sets tree behaviors using SQL Server. + * + * Provides comprehensive unit tests for verifying node state, parent-child relationships, and root/leaf detection in + * both single-tree and multi-tree nested sets models on SQL Server. + * + * Inherits tests from {@see AbstractNodeState} to ensure correctness of methods that determine node ancestry, root + * status, and leaf status by testing various edge cases and boundary conditions, such as equal left/right values and + * ancestor chains. + * + * Key features. + * - Coverage for both {@see Tree} and {@see MultipleTree} model implementations. + * - Ensures correct behavior for left/right value manipulations and ancestor checks. + * - Tests for `isChildOf()` under different ancestor and boundary scenarios. + * - Validation of `isRoot()` and `isLeaf()` logic for root, leaf, and intermediate nodes. + * + * @see AbstractNodeState for test logic and scenarios. + * + * @copyright Copyright (C) 2023 Terabytesoftw. + * @license https://opensource.org/license/bsd-3-clause BSD 3-Clause License. + */ #[Group('mssql')] final class NodeStateTest extends AbstractNodeState { - protected string $driverName = 'sqlsrv'; - protected string|null $dsn = 'sqlsrv:Server=127.0.0.1,1433;Database=yiitest;Encrypt=no'; - protected string $password = 'YourStrong!Passw0rd'; - protected string $username = 'SA'; + protected function setUp(): void + { + $this->driverName = MSSQLConnection::DRIVER_NAME->value; + $this->dsn = MSSQLConnection::DSN->value; + $this->password = MSSQLConnection::PASSWORD->value; + $this->username = MSSQLConnection::USERNAME->value; + + parent::setUp(); + } } diff --git a/tests/mssql/QueryBehaviorTest.php b/tests/mssql/QueryBehaviorTest.php index c6c47b3..422eb85 100644 --- a/tests/mssql/QueryBehaviorTest.php +++ b/tests/mssql/QueryBehaviorTest.php @@ -6,12 +6,41 @@ use PHPUnit\Framework\Attributes\Group; use yii2\extensions\nestedsets\tests\base\AbstractQueryBehavior; +use yii2\extensions\nestedsets\tests\support\MSSQLConnection; +/** + * Test suite for query behavior in nested sets tree behaviors using SQL Server. + * + * Provides comprehensive unit tests for query methods related to leaf and root node retrieval, ordering, and behavior + * attachment in both single-tree and multi-tree nested sets models on SQL Server, ensuring correctness of query methods + * such as `leaves()` and `roots()`, including ordering guarantees, SQL generation, and error handling when the behavior + * is detached or not attached to the owner. + * + * Inherits tests from {@see AbstractQueryBehavior} to validate deterministic ordering, correct node retrieval, SQL + * structure, and exception handling for query behaviors. + * + * Key features. + * - Ensures deterministic ordering of results by left and tree attributes. + * - SQL Server-specific configuration for database connection and credentials. + * - Tests for correct leaf and root node retrieval in {@see Tree} and {@see MultipleTree} models. + * - Validates SQL query structure for ordering requirements. + * - Verifies exception handling when the behavior is detached or not attached to the query owner. + * + * @see AbstractQueryBehavior for test logic and scenarios. + * + * @copyright Copyright (C) 2023 Terabytesoftw. + * @license https://opensource.org/license/bsd-3-clause BSD 3-Clause License. + */ #[Group('mssql')] final class QueryBehaviorTest extends AbstractQueryBehavior { - protected string $driverName = 'sqlsrv'; - protected string|null $dsn = 'sqlsrv:Server=127.0.0.1,1433;Database=yiitest;Encrypt=no'; - protected string $password = 'YourStrong!Passw0rd'; - protected string $username = 'SA'; + protected function setUp(): void + { + $this->driverName = MSSQLConnection::DRIVER_NAME->value; + $this->dsn = MSSQLConnection::DSN->value; + $this->password = MSSQLConnection::PASSWORD->value; + $this->username = MSSQLConnection::USERNAME->value; + + parent::setUp(); + } } diff --git a/tests/mssql/TreeTraversalTest.php b/tests/mssql/TreeTraversalTest.php index b53c8ad..5cfefee 100644 --- a/tests/mssql/TreeTraversalTest.php +++ b/tests/mssql/TreeTraversalTest.php @@ -6,12 +6,39 @@ use PHPUnit\Framework\Attributes\Group; use yii2\extensions\nestedsets\tests\base\AbstractTreeTraversal; +use yii2\extensions\nestedsets\tests\support\MSSQLConnection; +/** + * Test suite for tree traversal and relationship methods in nested sets tree behaviors using SQL Server. + * + * Provides comprehensive unit tests for verifying traversal methods, node ordering, and parent/child/leaf relationships + * in both single-tree and multi-tree nested sets models on SQL Server. + * + * Inherits tests from {@see AbstractTreeTraversal} to ensure correctness and determinism of children, leaves, parents, + * next, and previous node retrieval, including order-by requirements and depth constraints, by testing various tree + * structures and update scenarios. + * + * Key features. + * - Covers both {@see Tree} and {@see MultipleTree} model scenarios. + * - Ensures correct node ordering and deterministic traversal for children, leaves, and parents. + * - Tests for order-by enforcement and depth constraints in traversal queries. + * - Validation of structure updates and relationship methods on SQL Server. + * + * @see AbstractTreeTraversal for test logic and scenarios. + * + * @copyright Copyright (C) 2023 Terabytesoftw. + * @license https://opensource.org/license/bsd-3-clause BSD 3-Clause License. + */ #[Group('mssql')] final class TreeTraversalTest extends AbstractTreeTraversal { - protected string $driverName = 'sqlsrv'; - protected string|null $dsn = 'sqlsrv:Server=127.0.0.1,1433;Database=yiitest;Encrypt=no'; - protected string $password = 'YourStrong!Passw0rd'; - protected string $username = 'SA'; + protected function setUp(): void + { + $this->driverName = MSSQLConnection::DRIVER_NAME->value; + $this->dsn = MSSQLConnection::DSN->value; + $this->password = MSSQLConnection::PASSWORD->value; + $this->username = MSSQLConnection::USERNAME->value; + + parent::setUp(); + } } diff --git a/tests/mssql/ValidationAndStructureTest.php b/tests/mssql/ValidationAndStructureTest.php index f99081f..233c938 100644 --- a/tests/mssql/ValidationAndStructureTest.php +++ b/tests/mssql/ValidationAndStructureTest.php @@ -6,12 +6,40 @@ use PHPUnit\Framework\Attributes\Group; use yii2\extensions\nestedsets\tests\base\AbstractValidationAndStructure; +use yii2\extensions\nestedsets\tests\support\MSSQLConnection; +/** + * Test suite for validation and structural integrity in nested sets tree behaviors using SQL Server. + * + * Provides focused unit tests for validating node creation, root assignment, and structural attribute correctness in + * nested sets tree models on SQL Server, including strict validation scenarios and direct manipulation of node + * attributes during insertion. + * + * Inherits tests from {@see AbstractValidationAndStructure} to ensure correct node validation logic, left/right + * attribute shifting, and depth assignment when creating root nodes, appending children, and invoking internal behavior + * methods, covering both validation-enabled and validation-bypassed operations. + * + * Key features. + * - Ensures correct attribute assignment when appending children to root nodes. + * - Tests strict validation logic for root node creation with and without validation enforcement. + * - Validates direct invocation of behavior hooks for node attribute initialization. + * - Verifies left, right, and depth attribute values after root and child node operations. + * + * @see AbstractValidationAndStructure for test logic and scenarios. + * + * @copyright Copyright (C) 2023 Terabytesoftw. + * @license https://opensource.org/license/bsd-3-clause BSD 3-Clause License. + */ #[Group('mssql')] final class ValidationAndStructureTest extends AbstractValidationAndStructure { - protected string $driverName = 'sqlsrv'; - protected string|null $dsn = 'sqlsrv:Server=127.0.0.1,1433;Database=yiitest;Encrypt=no'; - protected string $password = 'YourStrong!Passw0rd'; - protected string $username = 'SA'; + protected function setUp(): void + { + $this->driverName = MSSQLConnection::DRIVER_NAME->value; + $this->dsn = MSSQLConnection::DSN->value; + $this->password = MSSQLConnection::PASSWORD->value; + $this->username = MSSQLConnection::USERNAME->value; + + parent::setUp(); + } } diff --git a/tests/support/MSSQLConnection.php b/tests/support/MSSQLConnection.php new file mode 100644 index 0000000..043c77a --- /dev/null +++ b/tests/support/MSSQLConnection.php @@ -0,0 +1,43 @@ +