Files
inventory-plus-plus/work-summaries/work-summary-Claude-2026-08-06-2044.md
T
angelandClaude Sonnet 5 4c06d102bb reports: switch test fixtures from Amazon to Etsy to fix test isolation
domains/reports' fixtures used Amazon as their example platform - same
as domains/amazon's own tests. Both packages' test binaries run
concurrently under go test ./... by default, both wrote to the shared
mock.raw_shop_events table with platform='amazon', and the DB trigger
routed those into mock.shop_amazon_events - the exact table
domains/amazon's background-processing tests poll and assert on.
Confirmed directly: running the two packages together, domains/amazon's
TestProcessUnprocessedEvents_RetriesUnackedNotification picked up 4
events instead of 1, three of them from domains/reports' fixture shop.

Switched to Etsy instead (test-only change, no production code
touched). Verified the casing first since it mattered here:
accounts.Etsy's Go value is "Etsy" (capital), and separately Etsy's
raw_shop_events trigger checks for lowercase 'etsy' - but the view
these tests actually depend on (mock.shop_etsy_listing_event_sequence)
filters on 'Etsy', matching the Go constant, confirmed via
pg_get_viewdef. So the fixtures work correctly and, as a side effect,
never fire the lowercase-gated trigger at all - keeping
mock.shop_etsy_events untouched by these tests regardless.

Combined with the previous commit's goroutine-leak fix, go test ./...
and make test are both reliably green as single commands again.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XEDaCB7C2NEBgyvqEtZuxY
2026-08-20 00:36:55 -06:00

2.8 KiB

Work Summary — 2026-08-06 20:44

Task

Follow-up from the testify migration: fix the remaining test-isolation failure between domains/amazon and domains/reports (the goroutine-leak half of the original go test ./... hang was already fixed and committed separately as 7c65f92).

Root cause

domains/reports' fixtures used accounts.Amazon as their example platform - same as domains/amazon's own tests. Both packages' test binaries run concurrently under go test ./... (Go's default), both write to the shared mock.raw_shop_events table with platform='amazon', and the DB trigger routes those into mock.shop_amazon_events, the exact table domains/amazon's background-processing tests poll and assert on. Confirmed directly: running the two packages together, domains/amazon's TestProcessUnprocessedEvents_RetriesUnackedNotification picked up 4 events instead of 1, three of them from domains/reports' fixture shop.

Fix

Switched domains/reports' fixtures from Amazon to Etsy (renamed setupAmazonMockShopsetupEtsyMockShop, createAmazonListingcreateEtsyListing, and all table names/platform constants throughout domains/reports/events_test.go and domains/reports/reports_test.go). Test-only change, no production code touched.

Verified the exact casing before switching, since it mattered: accounts.Etsy's Go value is "Etsy" (capital E) unlike most other platform constants ("amazon", "big_cartel", etc., all lowercase) - and separately, Etsy's mock.raw_shop_events trigger (which routes into mock.shop_etsy_events, the table domains/amazon-style processors would use) checks for lowercase 'etsy'. Confirmed via pg_get_viewdef that the listing-counts view (mock.shop_etsy_listing_event_sequence, what these tests actually depend on) filters on 'Etsy' (capital), matching the Go constant correctly - so the fixtures work correctly, and as a side effect never fire the lowercase-gated trigger at all, keeping mock.shop_etsy_events completely untouched by these tests regardless.

Verification

  • go build ./... / go vet ./... clean.
  • domains/reports alone: all 6 tests still pass.
  • domains/amazon + domains/reports together, 8x repeated (-race -count=1): all clean, no failures.
  • go test ./... -race (the exact command that used to hang before the goroutine-leak fix, and would still have failed on the isolation issue afterward): now green as one command, no special-casing needed.
  • make test: green, zero leftover rows in accounts, mock.accounts, mock.raw_shop_events afterward.

Follow-ups / not done here

None specific to this fix. Combined with the goroutine-leak fix (7c65f92), go test ./... / make test are both reliably green as single commands again - the workaround of running domains/amazon separately from everything else is no longer needed.