github.com/angryronald/go-kit@v0.0.0-20240505173814-ff2bd9c79dbf/publisher/rabbitmq/publisher.service_test.go (about) 1 package rabbitmq 2 3 import ( 4 "context" 5 "testing" 6 7 "gocloud.dev/pubsub" 8 "gocloud.dev/pubsub/rabbitpubsub" 9 10 "github.com/golang/mock/gomock" 11 "github.com/google/uuid" 12 "github.com/stretchr/testify/assert" 13 ) 14 15 var pubsubTopics map[string]*pubsub.Topic 16 var subscription map[string]*pubsub.Subscription 17 18 func init() { 19 pubsubTopics = map[string]*pubsub.Topic{} 20 subscription = map[string]*pubsub.Subscription{} 21 } 22 23 func TestRabbitmqPublisher_Publish(t *testing.T) { 24 pubsubTopics[topicName] = rabbitpubsub.OpenTopic(rabbitmqClientPublisher, topicName, nil) 25 subscription[topicName] = rabbitpubsub.OpenSubscription(rabbitmqClientConsumer, topicName, nil) 26 27 // Create a testing context. 28 ctx := context.Background() 29 30 // Create a mock controller. 31 ctrl := gomock.NewController(t) 32 defer ctrl.Finish() 33 34 publisher := NewPublisher(pubsubTopics) 35 36 if err := publisher.Publish(ctx, topicName, uuid.NewString(), []byte(`{"ID":"123456"}`)); err != nil { 37 t.Errorf("error when publishing event: %v", err) 38 } 39 40 // Call the function to test. 41 for { 42 msg, err := subscription[topicName].Receive(ctx) 43 if err != nil { 44 t.Errorf("error when consuming event: %v", err) 45 } 46 47 msg.Ack() 48 ctx.Done() 49 break 50 } 51 52 // Assert that the expectations were met. 53 assert.Nil(t, ctx.Err()) 54 }