package admin // Regression: deleting a single room through the editor API must evict the // room's cached casino games and refund their outstanding wagers, exactly // like the bulk-delete path does. Skipping eviction strands seated players' // wagers in games whose room no longer exists. import ( "net/http" "net/http/httptest" "testing" ) func TestRoomDeleteEvictsCasinoGames(t *testing.T) { s := newTestAdminServer(t, map[int]string{1: "id: 1\nname: Room\n"}) var evicted []int s.evictRoom = func(id int) { evicted = append(evicted, id) } rec := httptest.NewRecorder() s.handleRoomByID(rec, httptest.NewRequest(http.MethodDelete, "/api/rooms/1", nil)) if _, ok := s.world.GetRoomPath(1); ok { t.Fatalf("room was not removed: %s", rec.Body.String()) } if len(evicted) != 1 || evicted[0] != 1 { t.Fatalf("room deletion evicted %v, want [1] (outstanding wagers were not resolved)", evicted) } }