// Code generated by seatgen from the seat definitions; DO NOT EDIT. package nodebuildnode import ( "encoding/json" "reflect" "regexp" "testing" ) // TestFixtures reads every fixture of seats/node-build-node/fixtures: each decodes into its type, a field the type does not // know is dropped (ADR 0608 ยง6), and it reads back as its wire says; each subject named is the contract's. func TestFixtures(t *testing.T) { cases := []struct { name, subject, given, wire string decode func([]byte) (any, error) subjectIs *regexp.Regexp }{ {name: "a running step", subject: "", given: "{\"id\":\"a1b2\",\"node\":\"ace\",\"started\":\"2026-11-05T10:00:00Z\",\"state\":\"running\",\"tool\":\"build\",\"v\":1}", wire: "{\"id\":\"a1b2\",\"node\":\"ace\",\"started\":\"2026-11-05T10:00:00Z\",\"state\":\"running\",\"tool\":\"build\",\"v\":1}", decode: func(b []byte) (any, error) { var v StepsByNodeIDValue; err := json.Unmarshal(b, &v); return v, err }, subjectIs: nil}, {name: "a paused node", subject: "", given: "{\"at\":\"2026-11-05T10:00:00Z\",\"by\":\"operator@shanks\",\"paused\":true,\"v\":1}", wire: "{\"at\":\"2026-11-05T10:00:00Z\",\"by\":\"operator@shanks\",\"paused\":true,\"v\":1}", decode: func(b []byte) (any, error) { var v PausesByPausedNodeValue err := json.Unmarshal(b, &v) return v, err }, subjectIs: nil}, {name: "a node's capacity", subject: "", given: "{\"configured\":2,\"effective\":2,\"v\":1,\"why\":\"the configured steps fit the cores\"}", wire: "{\"configured\":2,\"effective\":2,\"v\":1,\"why\":\"the configured steps fit the cores\"}", decode: func(b []byte) (any, error) { var v PausesByCapacityNodeValue err := json.Unmarshal(b, &v) return v, err }, subjectIs: nil}, {name: "a node's toolchain", subject: "", given: "{\"language\":\"go\",\"recipe\":\"1\",\"v\":1,\"version\":\"1.26.0\"}", wire: "{\"language\":\"go\",\"recipe\":\"1\",\"v\":1,\"version\":\"1.26.0\"}", decode: func(b []byte) (any, error) { var v ToolchainsByNodeLanguageValue err := json.Unmarshal(b, &v) return v, err }, subjectIs: nil}, {name: "a build ask", subject: "mesh.seat.node-build-node.accept.delivery", given: "{\"asker\":\"mesh-delivery-builder\",\"build\":{\"artifacts\":[{\"artifact\":\"go\"}],\"module\":\"nats\"},\"id\":\"a1b2\",\"kind\":\"build\",\"language\":\"go\"}", wire: "{\"asker\":\"mesh-delivery-builder\",\"build\":{\"artifacts\":[{\"artifact\":\"go\"}],\"module\":\"nats\"},\"id\":\"a1b2\",\"kind\":\"build\",\"language\":\"go\"}", decode: func(b []byte) (any, error) { var v DeliveryAccept; err := json.Unmarshal(b, &v); return v, err }, subjectIs: regexp.MustCompile("^mesh\\.seat\\.node-build-node\\.accept\\.delivery$")}, } for _, c := range cases { v, err := c.decode([]byte(c.given)) if err != nil { t.Errorf("%s: does not decode: %v", c.name, err) continue } back, err := json.Marshal(v) if err != nil { t.Errorf("%s: does not encode: %v", c.name, err) continue } var got, want any if err := json.Unmarshal(back, &got); err != nil { t.Fatal(err) } if err := json.Unmarshal([]byte(c.wire), &want); err != nil { t.Fatal(err) } if !reflect.DeepEqual(got, want) { t.Errorf("%s: reads back as %s, want %s", c.name, back, c.wire) } if c.subjectIs != nil && !c.subjectIs.MatchString(c.subject) { t.Errorf("%s: subject %q is not the contract's %s", c.name, c.subject, c.subjectIs) } } }