package inventory import ( "context" "testing" "time" ) // A merge no plan answers waits, and is listed as waiting until it is answered where it is kept (novox/hq issue 1146): // what a first merge into a new repository does while it waits for mesh-delivery's word. func TestAMergeNoPlanAnswersIsListedWaitingUntilItIsAnswered(t *testing.T) { inv, c := anInventoryOnTheChain(t) ctx := context.Background() now := time.Now().UTC() if added, err := inv.chainAddMerge(ctx, c, BatchedMerge{Repository: "novox/mesh-delivery", Branch: "main", Commit: "c1", Merged: now, Heard: now}); err != nil || !added { t.Fatalf("added %v, %v", added, err) } waiting, err := inv.chainWaitingMerges(ctx, c) if err != nil || len(waiting) != 1 || waiting[0].Commit != "c1" { t.Fatalf("waiting %+v, %v", waiting, err) } move := []MergeMove{{Repository: "novox/mesh-delivery", Commit: "c1", Plan: WaitingRecord}} if err := inv.chainSavePlans(ctx, c, nil, move); err != nil { t.Fatal(err) } if waiting, err = inv.chainWaitingMerges(ctx, c); err != nil || len(waiting) != 0 { t.Fatalf("answered, it still waits: %+v, %v", waiting, err) } if _, known, err := inv.chainMergeOf(ctx, c, "novox/mesh-delivery", "c1"); err != nil || !known { t.Fatalf("an answered merge is no longer kept: %v %v", known, err) } }