{"id":"2a5458c4-e404-45c0-9e91-2014864c4913","shortId":"TqnFwn","kind":"skill","title":"creating-oracle-to-postgres-migration-integration-tests","tagline":"Creates integration test cases for .NET data access artifacts during Oracle-to-PostgreSQL database migrations. Generates DB-agnostic xUnit tests with deterministic seed data that validate behavior consistency across both database systems. Use when creating integration tests for a","description":"# Creating Integration Tests for Oracle-to-PostgreSQL Migration\n\nGenerates integration test cases for data access artifacts in a single target project. Tests validate behavior consistency when running against Oracle or PostgreSQL.\n\n## Prerequisites\n\n- The test project must already exist and compile (scaffolded separately).\n- Read the existing base test class and seed manager conventions before writing tests.\n\n## Workflow\n\n```\nTest Creation:\n- [ ] Step 1: Discover the test project conventions\n- [ ] Step 2: Identify testable data access artifacts\n- [ ] Step 3: Create seed data\n- [ ] Step 4: Write test cases\n- [ ] Step 5: Review determinism\n```\n\n**Step 1: Discover the test project conventions**\n\nRead the base test class, seed manager, and project file to understand inheritance patterns, transaction management, and seed file conventions.\n\n**Step 2: Identify testable data access artifacts**\n\nScope to the target project only. List data access methods that interact with the database — repositories, DAOs, stored procedure callers, query builders.\n\n**Step 3: Create seed data**\n\n- Follow seed file location and naming conventions from the existing project.\n- Reuse existing seed files when possible.\n- Avoid `TRUNCATE TABLE` — keep existing database data intact.\n- Do not commit seed data; tests run in transactions that roll back.\n- Ensure seed data does not conflict with other tests.\n- Load and verify seed data before assertions depend on it.\n\n**Step 4: Write test cases**\n\n- Inherit from the base test class to get automatic transaction create/rollback.\n- Assert logical outputs (rows, columns, counts, error types), not platform-specific messages.\n- Assert specific expected values — never assert that a value is merely non-null or non-empty when a concrete value is available from seed data.\n- Avoid testing code paths that do not exist or asserting behavior that cannot occur.\n- Avoid redundant assertions across tests targeting the same method.\n\n**Step 5: Review determinism**\n\nRe-examine every assertion against non-null values. Confirm each is deterministic against the seeded data. Fix any assertion that depends on database state outside the test's control.\n\n## Key Constraints\n\n- **Oracle is the golden source** — tests capture Oracle's expected behavior.\n- **DB-agnostic assertions** — no platform-specific error messages or syntax in assertions.\n- **Seed only against Oracle** — test project will be migrated to PostgreSQL later.\n- **Scoped to one project** — do not create tests for artifacts outside the target project.","tags":["creating","oracle","postgres","migration","integration","tests","awesome","copilot","github","agent-skills","agents","custom-agents"],"capabilities":["skill","source-github","skill-creating-oracle-to-postgres-migration-integration-tests","topic-agent-skills","topic-agents","topic-awesome","topic-custom-agents","topic-github-copilot","topic-hacktoberfest","topic-prompt-engineering"],"categories":["awesome-copilot"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/github/awesome-copilot/creating-oracle-to-postgres-migration-integration-tests","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add github/awesome-copilot","source_repo":"https://github.com/github/awesome-copilot","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 33270 github stars · SKILL.md body (2,544 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:52:09.025Z","embedding":null,"createdAt":"2026-04-18T20:30:50.449Z","updatedAt":"2026-05-18T18:52:09.025Z","lastSeenAt":"2026-05-18T18:52:09.025Z","tsv":"'1':110,138 '2':117,165 '3':124,194 '4':129,255 '5':134,334 'access':16,65,121,169,179 'across':39,327 'agnost':28,383 'alreadi':87 'artifact':17,66,122,170,416 'assert':250,270,283,288,319,326,341,357,384,394 'automat':267 'avail':306 'avoid':215,310,324 'back':234 'base':96,146,262 'behavior':37,74,320,380 'builder':192 'caller':190 'cannot':322 'captur':376 'case':12,62,132,258 'class':98,148,264 'code':312 'column':274 'commit':225 'compil':90 'concret':303 'confirm':347 'conflict':240 'consist':38,75 'constraint':369 'control':367 'convent':102,115,143,163,204 'count':275 'creat':2,9,45,50,125,195,413 'create/rollback':269 'creating-oracle-to-postgres-migration-integration-test':1 'creation':108 'dao':187 'data':15,34,64,120,127,168,178,197,221,227,237,248,309,354 'databas':23,41,185,220,361 'db':27,382 'db-agnost':26,381 'depend':251,359 'determin':136,336 'determinist':32,350 'discov':111,139 'empti':300 'ensur':235 'error':276,389 'everi':340 'examin':339 'exist':88,95,207,210,219,317 'expect':285,379 'file':153,162,200,212 'fix':355 'follow':198 'generat':25,59 'get':266 'golden':373 'identifi':118,166 'inherit':156,259 'intact':222 'integr':7,10,46,51,60 'interact':182 'keep':218 'key':368 'later':406 'list':177 'load':244 'locat':201 'logic':271 'manag':101,150,159 'mere':293 'messag':282,390 'method':180,332 'migrat':6,24,58,403 'must':86 'name':203 'net':14 'never':287 'non':295,299,344 'non-empti':298 'non-nul':294,343 'null':296,345 'occur':323 'one':409 'oracl':3,20,55,79,370,377,398 'oracle-to-postgresql':19,54 'output':272 'outsid':363,417 'path':313 'pattern':157 'platform':280,387 'platform-specif':279,386 'possibl':214 'postgr':5 'postgresql':22,57,81,405 'prerequisit':82 'procedur':189 'project':71,85,114,142,152,175,208,400,410,420 'queri':191 're':338 're-examin':337 'read':93,144 'redund':325 'repositori':186 'reus':209 'review':135,335 'roll':233 'row':273 'run':77,229 'scaffold':91 'scope':171,407 'seed':33,100,126,149,161,196,199,211,226,236,247,308,353,395 'separ':92 'singl':69 'skill' 'skill-creating-oracle-to-postgres-migration-integration-tests' 'sourc':374 'source-github' 'specif':281,284,388 'state':362 'step':109,116,123,128,133,137,164,193,254,333 'store':188 'syntax':392 'system':42 'tabl':217 'target':70,174,329,419 'test':8,11,30,47,52,61,72,84,97,105,107,113,131,141,147,228,243,257,263,311,328,365,375,399,414 'testabl':119,167 'topic-agent-skills' 'topic-agents' 'topic-awesome' 'topic-custom-agents' 'topic-github-copilot' 'topic-hacktoberfest' 'topic-prompt-engineering' 'transact':158,231,268 'truncat':216 'type':277 'understand':155 'use':43 'valid':36,73 'valu':286,291,304,346 'verifi':246 'workflow':106 'write':104,130,256 'xunit':29","prices":[{"id":"c74483a4-7824-4549-a516-4a11b8ea26bb","listingId":"2a5458c4-e404-45c0-9e91-2014864c4913","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"github","category":"awesome-copilot","install_from":"skills.sh"},"createdAt":"2026-04-18T20:30:50.449Z"}],"sources":[{"listingId":"2a5458c4-e404-45c0-9e91-2014864c4913","source":"github","sourceId":"github/awesome-copilot/creating-oracle-to-postgres-migration-integration-tests","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/creating-oracle-to-postgres-migration-integration-tests","isPrimary":false,"firstSeenAt":"2026-04-18T21:48:58.134Z","lastSeenAt":"2026-05-18T18:52:09.025Z"},{"listingId":"2a5458c4-e404-45c0-9e91-2014864c4913","source":"skills_sh","sourceId":"github/awesome-copilot/creating-oracle-to-postgres-migration-integration-tests","sourceUrl":"https://skills.sh/github/awesome-copilot/creating-oracle-to-postgres-migration-integration-tests","isPrimary":true,"firstSeenAt":"2026-04-18T20:30:50.449Z","lastSeenAt":"2026-05-07T22:40:31.337Z"}],"details":{"listingId":"2a5458c4-e404-45c0-9e91-2014864c4913","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"creating-oracle-to-postgres-migration-integration-tests","github":{"repo":"github/awesome-copilot","stars":33270,"topics":["agent-skills","agents","ai","awesome","custom-agents","github-copilot","hacktoberfest","prompt-engineering"],"license":"mit","html_url":"https://github.com/github/awesome-copilot","pushed_at":"2026-05-18T01:26:59Z","description":"Community-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.","skill_md_sha":"b4018380c921193f783f48eb7011b24c03e26628","skill_md_path":"skills/creating-oracle-to-postgres-migration-integration-tests/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/github/awesome-copilot/tree/main/skills/creating-oracle-to-postgres-migration-integration-tests"},"layout":"multi","source":"github","category":"awesome-copilot","frontmatter":{"name":"creating-oracle-to-postgres-migration-integration-tests","description":"Creates integration test cases for .NET data access artifacts during Oracle-to-PostgreSQL database migrations. Generates DB-agnostic xUnit tests with deterministic seed data that validate behavior consistency across both database systems. Use when creating integration tests for a migrated project, generating test coverage for data access layers, or writing Oracle-to-PostgreSQL migration validation tests."},"skills_sh_url":"https://skills.sh/github/awesome-copilot/creating-oracle-to-postgres-migration-integration-tests"},"updatedAt":"2026-05-18T18:52:09.025Z"}}