- TestFaqContentDecode, TestFaqModel and TestFaqSerialize (Docker-free):
content as list, JSON text or row-keyed object, required export
fields, the model contract, output sanitizing, null description,
question text and the slug shape
- TestFaqAPI and TestFaqImport (Postgres): active duplicate behind an
inactive lower id, default locale per is_default, a disabled default,
malformed slugs, keyed content order, malformed rows aborting before
any write
- JSON lines import keeping ids, locale_id looked up by locale code (an unknown code aborts before any write)
- one transaction, setval past the copied ids, --force replaces, --dry-run reports, an empty file copies nothing
- scripts/winter-export.sql: SELECT JSON_OBJECT with the translate locale code
- TestFaqImportSmoke