diff --git a/UAT_PLAYBOOK.md b/UAT_PLAYBOOK.md index 1c4243f..c5bdf04 100644 --- a/UAT_PLAYBOOK.md +++ b/UAT_PLAYBOOK.md @@ -119,6 +119,7 @@ GroomBook API is a Hono-based REST service (TypeScript/Node.js) powering the pet | TC-API-3.25 | Verify 30+ total pets in UAT DB | GET /api/pets then count total | 30+ pets returned (UAT seed creates 500 random-pool + 5 UAT test clients + 2 UAT customer = 507 total) | | TC-API-3.26 | Verify 25-35% medicalAlerts distribution | GET /api/pets (first 30 pets), count how many have non-empty medicalAlerts | Ratio is 25-35% (seed uses rand() < 0.3 for ~30% distribution) | | TC-API-3.27 | Verify coat_type enum has all seed values | After UAT seed completes, inspect the coat_type enum on the UAT DB — it must contain: short, medium, long, double, wire, silky, curly, hairless | UAT seed jobs (`reset-demo-data`, `seed-test-data`) complete 1/1 with no `enum_in` error; coat_type includes all 8 values used by seed.ts `coatTypePool` | +| TC-API-3.28 | Verify pet_size_category enum has all seed values | After UAT seed completes, inspect the pet_size_category enum on the UAT DB — it must contain: small, medium, large, extra_large | UAT seed jobs (`reset-demo-data`, `seed-test-data`) complete 1/1 with no `enum_in` error; pet_size_category includes all 4 values used by seed.ts `petSizeCategoryPool` (regression for GRO-1999, mirrors TC-API-3.27) | ### 4.4 Appointment Scheduling diff --git a/packages/db/migrations/0037_add_extra_large_to_pet_size_category.sql b/packages/db/migrations/0037_add_extra_large_to_pet_size_category.sql new file mode 100644 index 0000000..9430067 --- /dev/null +++ b/packages/db/migrations/0037_add_extra_large_to_pet_size_category.sql @@ -0,0 +1,19 @@ +-- Migration: 0037_add_extra_large_to_pet_size_category.sql +-- GRO-1999: Adds the 'extra_large' value to the pet_size_category enum. +-- +-- 0031_buffer_rules.sql created pet_size_category with values +-- ('small', 'medium', 'large', 'xlarge'), but seed.ts and the drizzle +-- schema (PetSizeCategory type) both use 'extra_large' — a mismatch that +-- caused the UAT seed job to fail with: +-- invalid input value for enum pet_size_category: "extra_large" +-- +-- 0035/0036 (GRO-1971) registered 'short'/'medium'/'silky' in coat_type. +-- This migration is the pet_size_category counterpart: register +-- 'extra_large' so seed.ts can write the value the schema declares. +-- +-- Postgres restriction: ALTER TYPE ADD VALUE cannot run inside a +-- transaction block. The drizzle migrate runner does not wrap +-- individual statements in an explicit transaction, so this applies +-- as a single auto-commit DDL. + +ALTER TYPE "pet_size_category" ADD VALUE IF NOT EXISTS 'extra_large'; diff --git a/packages/db/migrations/meta/_journal.json b/packages/db/migrations/meta/_journal.json index 1c7c56a..5ae5432 100644 --- a/packages/db/migrations/meta/_journal.json +++ b/packages/db/migrations/meta/_journal.json @@ -253,6 +253,13 @@ "when": 1751480000000, "tag": "0036_add_missing_coat_type_values", "breakpoints": true + }, + { + "idx": 37, + "version": "7", + "when": 1751500000000, + "tag": "0037_add_extra_large_to_pet_size_category", + "breakpoints": true } ] } \ No newline at end of file