github.com/glide-im/glide@v1.6.0/pkg/subscription/subscription_impl/subscription_test.go (about)

     1  package subscription_impl
     2  
     3  import (
     4  	"github.com/glide-im/glide/pkg/messages"
     5  	"github.com/glide-im/glide/pkg/subscription"
     6  	"github.com/stretchr/testify/assert"
     7  	"testing"
     8  )
     9  
    10  type mockStore struct {
    11  }
    12  
    13  func (m *mockStore) NextSegmentSequence(id subscription.ChanID, info subscription.ChanInfo) (int64, int64, error) {
    14  	return 1, 10000, nil
    15  }
    16  
    17  func (m *mockStore) StoreChannelMessage(ch subscription.ChanID, msg *messages.ChatMessage) error {
    18  	return nil
    19  }
    20  
    21  func TestRealSubscription_Publish(t *testing.T) {
    22  	var sbp = NewSubscribeWrap(NewSubscription(&mockStore{}, &mockStore{}))
    23  	m := PublishMessage{Type: TypeNotify}
    24  	id := subscription.ChanID("test")
    25  	err := sbp.CreateChannel(id, nil)
    26  	assert.Nil(t, err)
    27  	err = sbp.Publish(id, &m)
    28  	assert.Nil(t, err)
    29  }
    30  
    31  func TestRealSubscription_PublishNotExist(t *testing.T) {
    32  	var sbp = NewSubscribeWrap(NewSubscription(&mockStore{}, &mockStore{}))
    33  	m := PublishMessage{}
    34  	id := subscription.ChanID("test")
    35  	err := sbp.Publish(id, &m)
    36  	assert.ErrorContains(t, err, subscription.ErrChanNotExist)
    37  }
    38  
    39  func TestRealSubscription_CreateChannelExist(t *testing.T) {
    40  	var sbp = NewSubscribeWrap(NewSubscription(&mockStore{}, &mockStore{}))
    41  	id := subscription.ChanID("test")
    42  	err := sbp.CreateChannel(id, nil)
    43  	assert.Nil(t, err)
    44  	err = sbp.CreateChannel(id, nil)
    45  	assert.ErrorContains(t, err, subscription.ErrChanAlreadyExists)
    46  }
    47  
    48  func TestRealSubscription_CreateChannel(t *testing.T) {
    49  	var sbp = NewSubscribeWrap(NewSubscription(&mockStore{}, &mockStore{}))
    50  	id := subscription.ChanID("test")
    51  	err := sbp.CreateChannel(id, nil)
    52  	assert.Nil(t, err)
    53  }
    54  
    55  func TestRealSubscription_RemoveChannel(t *testing.T) {
    56  	var sbp = NewSubscribeWrap(NewSubscription(&mockStore{}, &mockStore{}))
    57  	id := subscription.ChanID("test")
    58  	err := sbp.CreateChannel(id, nil)
    59  	assert.Nil(t, err)
    60  	err = sbp.RemoveChannel(id)
    61  	assert.Nil(t, err)
    62  }
    63  
    64  func TestRealSubscription_RemoveChannelNotExit(t *testing.T) {
    65  	var sbp = NewSubscribeWrap(NewSubscription(&mockStore{}, &mockStore{}))
    66  	id := subscription.ChanID("test")
    67  	err := sbp.RemoveChannel(id)
    68  	assert.ErrorContains(t, err, subscription.ErrChanNotExist)
    69  }
    70  
    71  func TestRealSubscription_Subscribe(t *testing.T) {
    72  	var sbp = NewSubscribeWrap(NewSubscription(&mockStore{}, &mockStore{}))
    73  	id := subscription.ChanID("test")
    74  	err := sbp.CreateChannel(id, nil)
    75  	assert.Nil(t, err)
    76  	err = sbp.Subscribe(id, "test", &SubscriberOptions{})
    77  	assert.Nil(t, err)
    78  }
    79  
    80  func TestRealSubscription_UnSubscribe(t *testing.T) {
    81  	var sbp = NewSubscribeWrap(NewSubscription(&mockStore{}, &mockStore{}))
    82  	id := subscription.ChanID("test")
    83  	err := sbp.CreateChannel(id, nil)
    84  	assert.Nil(t, err)
    85  	err = sbp.Subscribe(id, "test", &SubscriberOptions{})
    86  	assert.Nil(t, err)
    87  	err = sbp.UnSubscribe(id, "test")
    88  	assert.Nil(t, err)
    89  }