Taken over from the join (6ada2089, f1417ab0, 6e162a60, 3a4e62b0, 73fb42d7, ee15a280, a5476f62, 94a4e62a, 33907a81, e519cc87, e8f268c1) and fitted to the final contracts: the seat's events are pull-updated, pull-merged, pull-closed, forge-delete; OwedEnded keeps only the fields §164 names; merge-pull takes no ask. A merge act is performed only as a switched act (§169); from G the gate owes none (§167). Builds: design 47 G §43, §45, §157, §161, §162, §163, §164, §167, §168, §169, §171, §250 Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
50 lines
1.5 KiB
Go
50 lines
1.5 KiB
Go
// Package gitfixture reads the seat git's own fixtures (contracts/seats/git/fixtures/verbs.json), so the bridge's unit
|
|
// fakes answer what the seat's holder answers and nothing the contract does not say (design 47 *The seat `git`*).
|
|
package gitfixture
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
"path/filepath"
|
|
"runtime"
|
|
"testing"
|
|
)
|
|
|
|
// All is every fixture's body named name of of (such as "file answers", "verb:file.answer"), in the file's order; a
|
|
// name with none fails the test.
|
|
func All(t testing.TB, name, of string) []json.RawMessage {
|
|
t.Helper()
|
|
return Seat(t, "git", "verbs", name, of)
|
|
}
|
|
|
|
// Seat is every fixture's body named name of of in a seat's fixtures file (such as "mesh-delivery", "events"), so the
|
|
// bridge's fakes of the seats it hears say what those seats say.
|
|
func Seat(t testing.TB, seat, file, name, of string) []json.RawMessage {
|
|
t.Helper()
|
|
_, here, _, _ := runtime.Caller(0)
|
|
raw, err := os.ReadFile(filepath.Join(filepath.Dir(here), "../../../../contracts/seats", seat, "fixtures", file+".json"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
var all []struct {
|
|
Name, Of string
|
|
Given json.RawMessage
|
|
}
|
|
if err := json.Unmarshal(raw, &all); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
var out []json.RawMessage
|
|
for _, f := range all {
|
|
if f.Name == name && f.Of == of {
|
|
out = append(out, f.Given)
|
|
}
|
|
}
|
|
if len(out) == 0 {
|
|
t.Fatalf("no fixture %q of %s", name, of)
|
|
}
|
|
return out
|
|
}
|
|
|
|
// Given is the first fixture's body named name of of.
|
|
func Given(t testing.TB, name, of string) json.RawMessage { t.Helper(); return All(t, name, of)[0] }
|