package console import ( "encoding/json" "testing" "github.com/carlosframework/platform/internal/moves" ) func TestPlan14FloorRiseWithoutPlatformUpdate(t *testing.T) { for _, state := range []string{"accepted", "missing", "quarantined", "old generation", "old floor", "old prev", "compatible prev"} { t.Run(state, func(t *testing.T) { fx := newConsoleFixture(t) if _, err := fx.rel.Put(t.Context(), moves.FloorKey, []byte(`{"min":1,"min_release":"v2.0.0"}`), ""); err != nil { t.Fatal(err) } armMoveFleet(t, fx, ieBox("ie-box"), ukBox("uk-box")) key := edgesFilePrefix + "uk-box.json" raw, etag, err := fx.rel.Get(t.Context(), key) if err != nil { t.Fatal(err) } var m map[string]any if err := json.Unmarshal(raw, &m); err != nil { t.Fatal(err) } m["moves_floor_state"] = "accepted" m["moves_floor_generation"] = 1 switch state { case "missing": delete(m, "moves_floor_state") case "quarantined": m["moves_floor_state"] = "quarantined" case "old generation": m["moves_floor_generation"] = 0 case "old floor": m["moves_floor_min_release"] = "v1.0.0" case "old prev": m["prev_release"] = "v1.0.0" m["prev_allowed_for"] = "v1.0.0" case "compatible prev": m["prev_release"] = "v2.0.0" m["prev_allowed_for"] = "v2.0.0" } raw, _ = json.Marshal(m) if _, err := fx.rel.Put(t.Context(), key, raw, etag); err != nil { t.Fatal(err) } got, err := fx.srv.selectMoveBoxes(t.Context(), "acme.go.tito.io", "uk", "ie", "bab/titogo") if err != nil { t.Fatal(err) } want := state == "accepted" || state == "compatible prev" if got.FloorOK != want { t.Fatalf("FloorOK=%v want %v", got.FloorOK, want) } }) } }