package server

import (
	"github.com/stretchr/testify/require"
	"sync/atomic"
	"testing"
)

func TestTopic_CancelSubscribers(t *testing.T) {
	t.Parallel()

	subFn := func(v *visitor, msg *message) error {
		return nil
	}
	canceled1 := atomic.Bool{}
	cancelFn1 := func() {
		canceled1.Store(true)
	}
	canceled2 := atomic.Bool{}
	cancelFn2 := func() {
		canceled2.Store(true)
	}
	to := newTopic("mytopic")
	to.Subscribe(subFn, "", cancelFn1)
	to.Subscribe(subFn, "u_phil", cancelFn2)

	to.CancelSubscribers("u_phil")
	require.True(t, canceled1.Load())
	require.False(t, canceled2.Load())
}