{"id":"2a5458c4-e404-45c0-9e91-2014864c4913","shortId":"TqnFwn","kind":"skill","title":"Creating Oracle To Postgres Migration Integration Tests","tagline":"Awesome Copilot skill by Github","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"],"capabilities":["skill","source-github","category-awesome-copilot"],"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":{"install_from":"skills.sh"}},"qualityScore":"0.300","qualityRationale":"deterministic score 0.30 from registry signals: · indexed on skills.sh · published under github/awesome-copilot","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:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T05:40:31.032Z","embedding":null,"createdAt":"2026-04-18T20:30:50.449Z","updatedAt":"2026-04-22T05:40:31.032Z","lastSeenAt":"2026-04-22T05:40:31.032Z","tsv":"'1':73,101 '2':80,128 '3':87,157 '4':92,218 '5':97,297 'access':28,84,132,142 'across':290 'agnost':346 'alreadi':50 'artifact':29,85,133,379 'assert':213,233,246,251,282,289,304,320,347,357 'automat':230 'avail':269 'avoid':178,273,287 'awesom':8 'back':197 'base':59,109,225 'behavior':37,283,343 'builder':155 'caller':153 'cannot':285 'captur':339 'case':25,95,221 'category-awesome-copilot' 'class':61,111,227 'code':275 'column':237 'commit':188 'compil':53 'concret':266 'confirm':310 'conflict':203 'consist':38 'constraint':332 'control':330 'convent':65,78,106,126,167 'copilot':9 'count':238 'creat':1,13,88,158,376 'create/rollback':232 'creation':71 'dao':150 'data':27,83,90,131,141,160,184,190,200,211,272,317 'databas':148,183,324 'db':345 'db-agnost':344 'depend':214,322 'determin':99,299 'determinist':313 'discov':74,102 'empti':263 'ensur':198 'error':239,352 'everi':303 'examin':302 'exist':51,58,170,173,182,280 'expect':248,342 'file':116,125,163,175 'fix':318 'follow':161 'generat':22 'get':229 'github':12 'golden':336 'identifi':81,129 'inherit':119,222 'intact':185 'integr':6,14,23 'interact':145 'keep':181 'key':331 'later':369 'list':140 'load':207 'locat':164 'logic':234 'manag':64,113,122 'mere':256 'messag':245,353 'method':143,295 'migrat':5,21,366 'must':49 'name':166 'never':250 'non':258,262,307 'non-empti':261 'non-nul':257,306 'null':259,308 'occur':286 'one':372 'oracl':2,18,42,333,340,361 'oracle-to-postgresql':17 'output':235 'outsid':326,380 'path':276 'pattern':120 'platform':243,350 'platform-specif':242,349 'possibl':177 'postgr':4 'postgresql':20,44,368 'prerequisit':45 'procedur':152 'project':34,48,77,105,115,138,171,363,373,383 'queri':154 're':301 're-examin':300 'read':56,107 'redund':288 'repositori':149 'reus':172 'review':98,298 'roll':196 'row':236 'run':40,192 'scaffold':54 'scope':134,370 'seed':63,89,112,124,159,162,174,189,199,210,271,316,358 'separ':55 'singl':32 'skill':10 'sourc':337 'source-github' 'specif':244,247,351 'state':325 'step':72,79,86,91,96,100,127,156,217,296 'store':151 'syntax':355 'tabl':180 'target':33,137,292,382 'test':7,15,24,35,47,60,68,70,76,94,104,110,191,206,220,226,274,291,328,338,362,377 'testabl':82,130 'transact':121,194,231 'truncat':179 'type':240 'understand':118 'valid':36 'valu':249,254,267,309 'verifi':209 'workflow':69 'write':67,93,219","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-04-22T00:52:07.136Z"},{"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-04-22T05:40:31.032Z"}],"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","source":"skills_sh","category":"awesome-copilot","skills_sh_url":"https://skills.sh/github/awesome-copilot/creating-oracle-to-postgres-migration-integration-tests"},"updatedAt":"2026-04-22T05:40:31.032Z"}}