mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-08 20:42:43 +00:00
The round-trip test proved that a row of each two-ended model comes back, not that it comes back whole. A restore that writes the row with a column defaulted returns the right count and loses the value; the medication category went missing that way. The new case lists each model's columns from the client's data model, with optional/default/key attributes from schema.prisma (the two field lists must agree). Columns the fixture left empty get a value that cannot pass for a default, one column at a time so a refused value names its column. Then it exports, deletes the account, restores, and compares each column as a multiset of values: sealed columns by their plaintext, a legacy plaintext column together with its sealed twin, declared foreign keys by presence, primary keys, owner and @updatedAt excluded by rule. A column added tomorrow is compared automatically: it comes back, or it is named in COLUMN_EXCLUSIONS with a reason. Entries naming a column that no longer exists fail. A pure case shows the comparison catches a column it was never told about, and the run asserts at least 620 columns compared (632 today). Removing the workout source marker, a schedule label, the folded-cycle pointer or the nutrient createdAt from either end each fails the run naming that column.