package atlas_test import ( "reflect" "testing" "git.d-ma.be/mathias/cad-atlas/internal/atlas" ) func TestHostsFromNodes_DerivesSpecFromNodeStatus(t *testing.T) { nodes := []byte(`{"items":[ {"metadata":{"name":"koala"}, "status":{"capacity":{"cpu":"16","memory":"67108864Ki","nvidia.com/gpu":"1"}, "nodeInfo":{"architecture":"amd64","kubeletVersion":"v1.31.4+k3s1"}}}, {"metadata":{"name":"worker2"}, "status":{"capacity":{"cpu":"8","memory":"33554432Ki"}, "nodeInfo":{"architecture":"arm64","kubeletVersion":"v1.30.0+k3s1"}}} ]}`) hosts, err := atlas.HostsFromNodes(nodes) if err != nil { t.Fatalf("HostsFromNodes: %v", err) } want := []atlas.Host{ {Name: "koala", Spec: "amd64 · 16 cpu · 64Gi · 1× GPU · k3s v1.31.4"}, {Name: "worker2", Spec: "arm64 · 8 cpu · 32Gi · k3s v1.30.0"}, } if !reflect.DeepEqual(hosts, want) { t.Fatalf("hosts = %+v\nwant %+v", hosts, want) } } func TestHostsFromNodes_ErrorsOnBadJSON(t *testing.T) { if _, err := atlas.HostsFromNodes([]byte("{not json")); err == nil { t.Fatal("expected error on bad JSON, got nil") } }