1---2name: planning-oracle-to-postgres-migration-integration-testing3description: Create an integration testing plan for one .NET project during Oracle-to-PostgreSQL migration. Use when planning coverage for repositories, DAOs, stored procedure callers, CRUD service layers, Oracle-specific behavior, seed data, or migration validation cases before writing integration tests.4---56<!-- Generated from harness/github-copilot/skills/planning-oracle-to-postgres-migration-integration-testing/SKILL.md by harness/claude-code/scripts/convert_from_copilot.py. Edit the source, not this file. -->78# Planning integration testing for Oracle-to-PostgreSQL migration910Analyze one .NET target project for database-touching artifacts, rank Oracle-to-PostgreSQL migration risk, and write a concrete integration testing plan that captures Oracle behavior as the golden source.1112## When to invoke1314- "Plan integration tests for this Oracle-to-PostgreSQL migrated project."15- "Find data access methods that need migration validation tests."16- "Create the TARGET_PROJECT integration testing plan."17- "Prioritize Oracle-specific repository behavior for PostgreSQL migration."18- "List seed data and test cases for DAOs and stored procedure callers."1920## Scope rules2122| Boundary | Rule |23| --- | --- |24| Single project scope | Plan only artifacts inside the target project; do not include neighboring applications. |25| Database interactions only | Include repositories, DAOs, stored procedure callers, and service layers performing CRUD operations. Skip business logic with no database touchpoint. |26| Oracle golden source | Tests capture Oracle's expected behavior first, then compare PostgreSQL behavior against it. |27| No multi-connection harnessing | Migrated applications are copied and renamed, for example `MyApp.Postgres`; each instance targets one database. |28| Output path | Write the plan to `.github/oracle-to-postgres-migration/Reports/{TARGET_PROJECT} Integration Testing Plan.md`. |2930## Risk classification3132| Priority | Database behavior | Examples |33| --- | --- | --- |34| P0 | Oracle-specific semantics likely to differ on PostgreSQL. | refcursors, `TO_CHAR`, implicit type coercion, `NO_DATA_FOUND`, sequence/default behavior, date truncation. |35| P1 | Complex CRUD or query composition with joins, filters, pagination, transactions, or concurrency. | Repository search methods, DAO batch writes, service-layer write flows. |36| P2 | Simple CRUD with straightforward mappings. | Single-row insert, update, read, delete with no Oracle-specific functions. |37| Excluded | No direct database interaction. | Pure calculation, formatting, validation, or orchestration without persistence. |3839## Required test-case themes4041| Theme | Include cases |42| --- | --- |43| Text parameters | Empty string and `NULL`/missing values; verify Oracle empty-string-as-null differences when relevant. |44| Datetime/timezone | Round-trip and comparison behavior; include explicit timezone-application expectations. |45| PostgreSQL timestamp targets | Destination columns using `timestamp without time zone` or `timestamp(0)`; verify precision and timezone semantics. |46| Oracle exceptions | `NO_DATA_FOUND` and equivalent no-row behavior in PostgreSQL. |47| Formatting and coercion | `TO_CHAR`, implicit numeric/text/date coercion, and formatting-sensitive comparisons. |48| Seed data | Minimal deterministic rows for each method, including boundary and no-match cases. |4950## Procedure51521. Identify data access artifacts in the target project: repositories, DAOs, stored procedure callers, and service layers that perform CRUD operations.532. Record method signatures and database touchpoints for each artifact.543. Classify each artifact and method by migration risk using the priority table.554. Define recommended integration test cases, seed data, and expected Oracle behavior for every included database touchpoint.565. Add known Oracle→PostgreSQL behavioral differences to validate, especially text, datetime/timezone, `TO_CHAR`, implicit coercion, and `NO_DATA_FOUND` cases.576. Write the markdown plan to `.github/oracle-to-postgres-migration/Reports/{TARGET_PROJECT} Integration Testing Plan.md`.5859## Plan contents6061| Section | Required detail |62| --- | --- |63| Target project | Project name, path, and scope exclusions. |64| Testable artifacts | Classes and method signatures that touch the database. |65| Priority map | P0/P1/P2 classification with reason. |66| Recommended cases | Positive, no-row, null/empty, boundary, formatting, timezone, and error-path cases as applicable. |67| Seed data | Required tables/entities, rows, and cleanup/rollback assumptions. |68| Oracle→PostgreSQL differences | Behavior that must be asserted during migration validation. |69| Coverage mapping | Every database touchpoint has at least one test case, or high-risk methods have justified multiple cases. |7071## Output template7273```markdown74# <TARGET_PROJECT> Integration Testing Plan7576**Status:** planned | blocked77**Target project:** `<path/to/project.csproj>`78**Output path:** `.github/oracle-to-postgres-migration/Reports/{TARGET_PROJECT} Integration Testing Plan.md`7980## Testable artifacts81| Artifact | Method signature | Database touchpoint | Priority | Reason |82| --- | --- | --- | --- | --- |83| `<class>` | `<method>` | `<table/procedure/query>` | P0/P1/P2 | `<migration risk>` |8485## Recommended test cases86| Artifact method | Case | Seed data | Oracle behavior to capture | PostgreSQL difference to validate |87| --- | --- | --- | --- | --- |88| `<method>` | `<case name>` | `<rows>` | `<expected Oracle result>` | `<difference>` |8990## Coverage mapping91| Database touchpoint | Covered by | Gap or justification |92| --- | --- | --- |93| `<touchpoint>` | `<test case>` | `<none or reason>` |94```9596## Quality gate9798- [ ] Only one target project is in scope.99- [ ] Every repository, DAO, stored procedure caller, and CRUD service layer in scope was considered.100- [ ] Business logic without database interaction was excluded.101- [ ] Oracle-specific features such as refcursors, `TO_CHAR`, implicit type coercion, and `NO_DATA_FOUND` are prioritized.102- [ ] Text parameter cases include empty string and `NULL`/missing values.103- [ ] Datetime/timezone cases include round-trip and comparison behavior.104- [ ] `timestamp without time zone` and `timestamp(0)` destinations include timezone-application expectations.105- [ ] Every database touchpoint has coverage or a documented justification.106- [ ] The plan is written to `.github/oracle-to-postgres-migration/Reports/{TARGET_PROJECT} Integration Testing Plan.md`.