package chathub import "testing" func TestDisconnectUserClosesAllConnections(t *testing.T) { hub := NewHub(nil) first := hub.Subscribe("user", 7) second := hub.Subscribe("user", 7) hub.Subscribe("user", 8) hub.Subscribe("admin", 9) hub.DisconnectUser(7) for name, ch := range map[string]<-chan *ChatEvent{"first": first, "second": second} { select { case _, ok := <-ch: if ok { t.Fatalf("%s connection was not closed", name) } default: t.Fatalf("%s connection did not close immediately", name) } } if got := hub.OnlineCount(); got != 2 { t.Fatalf("online connection count = %d, want 2", got) } if got := hub.OnlineCountByType("user"); got != 1 { t.Fatalf("online user connection count = %d, want 1", got) } if got := hub.OnlineCountByType("admin"); got != 1 { t.Fatalf("online admin connection count = %d, want 1", got) } }