package store import ( "errors" "testing" ) func TestSettingsAreVersionedAndTwoEditsCannotBothWin(t *testing.T) { s := capacityStore(t) ctx := t.Context() if v, err := s.ClusterSettings(ctx); err != nil || v.Version != 0 { t.Fatalf("empty store: %+v %v", v, err) } v1, err := s.PutClusterSettings(ctx, 0, "router: {}\n", "import", "from server.yaml") if err != nil || v1 != 1 { t.Fatalf("first: %d %v", v1, err) } if _, err := s.PutClusterSettings(ctx, 0, "x: 1\n", "late", ""); !errors.Is(err, ErrSettingsChanged) { t.Fatalf("a change from an old version: %v", err) } if _, err := s.PutClusterSettings(ctx, 1, "guard: {}\n", "ilker", "guard"); err != nil { t.Fatal(err) } cur, _ := s.ClusterSettings(ctx) if cur.Version != 2 || cur.Body != "guard: {}\n" || cur.By != "ilker" { t.Errorf("newest: %+v", cur) } if n, _ := s.ClusterSettingsVersion(ctx); n != 2 { t.Errorf("version %d", n) } old, _ := s.ClusterSettingsAt(ctx, 1) if old.Body != "router: {}\n" || old.Note != "from server.yaml" { t.Errorf("version 1: %+v", old) } h, _ := s.ClusterSettingsHistory(ctx, 10) if len(h) != 2 || h[0].Version != 2 { t.Errorf("history: %+v", h) } }