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 }