a73x

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