package inventory import ( "encoding/json" "testing" ) // **An assignment's key is `.`, as the bucket has always had it** (ADR 0408 ยง3): its readers parse nothing // but it. func TestAnAssignmentsKeyIsTheNodeAndTheModule(t *testing.T) { if got := assignmentKey("anchor", "notes"); got != "anchor.notes" { t.Fatalf("the key is %q", got) } if got := assignmentKey("g14.example", "dunst"); got != "g14.example.dunst" { t.Fatalf("the key of a machine whose name holds a dot is %q", got) } } // **A plan that is absent and a null one are one** (the provisioner's plan in an assignment's value): the pass that keeps // the plans writes only where they differ. func TestAnAbsentPlanAndANullOneAreTheSame(t *testing.T) { for name, tc := range map[string]struct { a, b json.RawMessage same bool }{ "both absent": {nil, nil, true}, "null and absent": {json.RawMessage(`null`), nil, true}, "the same plan": {json.RawMessage(`{"files":[]}`), json.RawMessage(` {"files":[]} `), true}, "another plan": {json.RawMessage(`{"files":[]}`), json.RawMessage(`{"files":[1]}`), false}, "a plan and none": {json.RawMessage(`{"files":[]}`), nil, false}, "none and a plan": {nil, json.RawMessage(`{"files":[]}`), false}, } { if got := sameJSON(tc.a, tc.b); got != tc.same { t.Errorf("%s: %v", name, got) } } }