internal/server/hub/hub_test.go
Ref: Size: 697 B History
package hub
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestCancelClosesChannel(t *testing.T) {
h := New()
ch, cancel := h.Subscribe("h1")
cancel()
select {
case _, ok := <-ch:
assert.False(t, ok, "cancel must close the channel so range loops exit")
default:
t.Fatal("channel must be closed after cancel")
}
}
func TestPokeWakesSubscriberAndNeverBlocks(t *testing.T) {
h := New()
ch, cancel := h.Subscribe("h1")
defer cancel()
h.Poke("h1")
h.Poke("h1") // second poke while un-drained must not block or panic
select {
case <-ch:
default:
t.Fatal("expected pending poke")
}
h.Poke("unsubscribed-host") // no subscriber: no-op
assert.True(t, true)
}