-
-
Notifications
You must be signed in to change notification settings - Fork 0
feat: add Oracle
database support with corresponding test classes for improved functionality.
#62
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
…or improved functionality.
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #62 +/- ##
===========================================
Coverage 100.00% 100.00%
Complexity 134 134
===========================================
Files 4 4
Lines 526 526
===========================================
Hits 526 526 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
WalkthroughOracle database support has been integrated into the project’s test suite and CI pipeline. A new GitHub Actions workflow runs PHPUnit tests using an Oracle database. Multiple new test classes targeting Oracle have been added, each configuring connection parameters for Oracle Free PDB1 and grouping tests under 'oci'. The database creation logic was updated to handle Oracle-specific primary key definitions. Changes
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. 🔧 PHPStan (2.1.15)Note: Using configuration file /phpstan.neon. 📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (13)
🚧 Files skipped from review as they are similar to previous changes (12)
🧰 Additional context used🧠 Learnings (1)📓 Common learnings
🧬 Code Graph Analysis (1)tests/oracle/NodeInsertTest.php (1)
🔇 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: 3
♻️ Duplicate comments (1)
tests/oracle/NodePrependTest.php (1)
10-10
: Same PHPUnit group inconsistency as other Oracle test classes.This class also uses
#[Group('oci')]
which may not match the CI workflow configuration.
🧹 Nitpick comments (1)
tests/oracle/NodeAppendTest.php (1)
1-17
: LGTM! Consider refactoring repeated configuration.The class correctly extends
AbstractNodeAppend
and maintains consistency with other Oracle test files. All Oracle test files use identical connection parameters, which ensures consistency but creates code duplication.Consider creating a common Oracle test base class to reduce configuration duplication:
abstract class AbstractOracleTest extends TestCase { protected string $driverName = 'oci'; protected string|null $dsn = 'oci:dbname=localhost/XE;charset=AL32UTF8;'; protected string $password = 'root'; protected string $username = 'system'; }Then each test class could extend both the Oracle base and the specific abstract test class, or use a trait for the Oracle configuration.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (13)
.github/workflows/build-oracle.yml
(1 hunks)tests/TestCase.php
(2 hunks)tests/oracle/CacheManagementTest.php
(1 hunks)tests/oracle/ExceptionHandlingTest.php
(1 hunks)tests/oracle/ExtensibilityTest.php
(1 hunks)tests/oracle/NodeAppendTest.php
(1 hunks)tests/oracle/NodeDeleteTest.php
(1 hunks)tests/oracle/NodeInsertTest.php
(1 hunks)tests/oracle/NodePrependTest.php
(1 hunks)tests/oracle/NodeStateTest.php
(1 hunks)tests/oracle/QueryBehaviorTest.php
(1 hunks)tests/oracle/TreeTraversalTest.php
(1 hunks)tests/oracle/ValidationAndStructureTest.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.889Z
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 (6)
tests/oracle/NodeDeleteTest.php (1)
tests/base/AbstractNodeDelete.php (1)
AbstractNodeDelete
(12-163)
tests/oracle/NodeStateTest.php (2)
tests/oracle/NodeDeleteTest.php (1)
Group
(10-17)tests/base/AbstractNodeState.php (1)
AbstractNodeState
(11-124)
tests/oracle/QueryBehaviorTest.php (11)
tests/oracle/ExtensibilityTest.php (1)
Group
(10-17)tests/oracle/CacheManagementTest.php (1)
Group
(10-17)tests/oracle/NodeDeleteTest.php (1)
Group
(10-17)tests/oracle/NodeAppendTest.php (1)
Group
(10-17)tests/oracle/ExceptionHandlingTest.php (1)
Group
(10-17)tests/oracle/NodeInsertTest.php (1)
Group
(10-17)tests/oracle/NodePrependTest.php (1)
Group
(10-17)tests/oracle/NodeStateTest.php (1)
Group
(10-17)tests/oracle/ValidationAndStructureTest.php (1)
Group
(10-17)tests/oracle/TreeTraversalTest.php (1)
Group
(10-17)tests/base/AbstractQueryBehavior.php (1)
AbstractQueryBehavior
(13-235)
tests/oracle/NodePrependTest.php (1)
tests/base/AbstractNodePrepend.php (1)
AbstractNodePrepend
(10-239)
tests/oracle/ValidationAndStructureTest.php (1)
tests/base/AbstractValidationAndStructure.php (1)
AbstractValidationAndStructure
(11-165)
tests/oracle/ExtensibilityTest.php (11)
tests/oracle/CacheManagementTest.php (1)
Group
(10-17)tests/oracle/NodeDeleteTest.php (1)
Group
(10-17)tests/oracle/NodeAppendTest.php (1)
Group
(10-17)tests/oracle/ExceptionHandlingTest.php (1)
Group
(10-17)tests/oracle/NodeInsertTest.php (1)
Group
(10-17)tests/oracle/NodePrependTest.php (1)
Group
(10-17)tests/oracle/NodeStateTest.php (1)
Group
(10-17)tests/oracle/ValidationAndStructureTest.php (1)
Group
(10-17)tests/oracle/TreeTraversalTest.php (1)
Group
(10-17)tests/oracle/QueryBehaviorTest.php (1)
Group
(10-17)tests/base/AbstractExtensibility.php (1)
AbstractExtensibility
(11-199)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (7)
- GitHub Check: phpunit / PHP 8.2-windows-latest
- GitHub Check: phpunit / PHP 8.3-windows-latest
- GitHub Check: phpunit / PHP 8.4-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-windows-latest
- GitHub Check: SQL Server tests. / PHP 8.4-mssql-2022-latest
🔇 Additional comments (13)
tests/TestCase.php (2)
181-183
: Excellent Oracle compatibility implementation!The conditional primary key definition correctly handles Oracle's identity column syntax requirement. Oracle databases need the raw SQL
NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY
instead of the standard schema builder method.
188-199
: Proper usage of the conditional primary key variable.The implementation consistently applies the Oracle-specific primary key definition to both
tree
andmultiple_tree
tables, ensuring uniform behavior across the test suite.tests/oracle/ExceptionHandlingTest.php (1)
1-17
: Well-structured Oracle test class following consistent pattern.This Oracle-specific test class properly extends the abstract base class and provides the necessary Oracle XE connection configuration. The use of
#[Group('oci')]
allows for targeted test execution, and the connection parameters are appropriate for Oracle XE testing.tests/oracle/QueryBehaviorTest.php (1)
1-17
: Consistent Oracle test class implementation.This test class follows the established pattern for Oracle-specific tests, properly configuring the database connection parameters and grouping. The implementation enables comprehensive query behavior testing against Oracle databases.
tests/oracle/NodeInsertTest.php (1)
1-17
: Properly implemented Oracle test class for node insertion testing.This class maintains the consistent pattern established across all Oracle test classes, providing the necessary configuration to run node insertion tests against Oracle XE databases.
tests/oracle/NodeStateTest.php (1)
1-17
: Excellent consistency in Oracle test class implementation.This class completes the Oracle test suite by providing node state testing capabilities against Oracle databases. The implementation follows the established pattern perfectly, ensuring consistent configuration across all Oracle-specific test classes.
tests/oracle/TreeTraversalTest.php (1)
1-17
: LGTM! Well-structured Oracle test class.The implementation correctly follows the database-specific testing pattern by extending the abstract base class and configuring Oracle connection parameters. The use of PHPUnit attributes for grouping and modern PHP syntax is appropriate.
tests/oracle/NodeDeleteTest.php (1)
1-17
: LGTM! Consistent Oracle test implementation.The class properly extends
AbstractNodeDelete
and follows the established Oracle testing pattern. The connection parameters are consistent with other Oracle test files.tests/oracle/ValidationAndStructureTest.php (1)
1-17
: LGTM! Follows established Oracle testing pattern.The class correctly extends
AbstractValidationAndStructure
and maintains consistency with other Oracle test files. The implementation enables validation and structure tests to run against Oracle database.tests/oracle/CacheManagementTest.php (1)
1-17
: LGTM! Consistent with Oracle testing approach.The class properly extends
AbstractCacheManagement
and follows the established pattern for Oracle-specific testing. The connection parameters are consistent with other Oracle test files.tests/oracle/ExtensibilityTest.php (1)
1-17
: LGTM! Clean Oracle test class implementation.The test class follows the established pattern for Oracle database testing with proper inheritance and connection configuration.
tests/oracle/NodePrependTest.php (1)
1-17
: LGTM! Consistent Oracle test class implementation.The test class properly extends the abstract base class and configures Oracle-specific connection parameters following the established pattern.
.github/workflows/build-oracle.yml (1)
1-44
: Well-structured Oracle CI workflow.The workflow properly configures Oracle database testing with appropriate Docker image, health checks, and PHP extensions.
… database configuration.
…or compatibility with `Oracle` resource types.
…-sets-behavior into feat-mini-6
… for consistency.
@coderabbitai review |
✅ Actions performedReview triggered.
|
Summary by CodeRabbit
New Features
Tests