Files
hfb_sys/backend/internal/modules/chathub/hub_test.go
T

33 lines
868 B
Go

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)
}
}