package inventory import ( "strings" "testing" ) // A manifest a newer controller registered, with a key this one does not know, does not stop the // catalogue from loading: it is read, marked, and every other module is read as before (novox/hq ADR 0262). func TestTheCatalogueLoadsAroundAManifestWithAnUnknownKey(t *testing.T) { inv := fresh(t) if err := inv.RegisterModule(t.Context(), manifest("thing", nil, nil), Source{}); err != nil { t.Fatal(err) } if _, err := inv.store.Pool().Exec(t.Context(), `insert into module (name, manifest) values ($1, $2)`, "later", `{"module": "later", "version": "2", "state": [{"name": "s", "a-field-from-later": 1}]}`); err != nil { t.Fatal(err) } known, err := inv.Catalogue(t.Context()) if err != nil { t.Fatalf("one manifest with an unknown key failed the whole catalogue: %v", err) } if known["thing"].Module != "thing" || known["thing"].UnknownField() != "" { t.Fatalf("the other module: %+v", known["thing"]) } if !strings.Contains(known["later"].UnknownField(), "a-field-from-later") { t.Fatalf("the newer manifest is not marked: %q", known["later"].UnknownField()) } entries, err := inv.Catalogued(t.Context()) if err != nil || len(entries) < 2 { t.Fatalf("the listing: %v %d", err, len(entries)) } }