package cml04eventer import ( "encoding/json" "testing" "git.espin.casa/albert/logger" "github.com/nsqio/go-nsq" "github.com/stretchr/testify/assert" ) // MockLoggerAdapter is an implementation of LoggerAdapter for testing type MockLoggerAdapter struct{} type LoggerFields map[string]interface{} func (m *MockLoggerAdapter) Info(msg string, fields logger.LogFields) {} func (m *MockLoggerAdapter) Error(msg string, err error, fields logger.LogFields) {} func (m *MockLoggerAdapter) Debug(msg string, fields logger.LogFields) {} func (m *MockLoggerAdapter) Warn(msg string, fields logger.LogFields) {} func (m *MockLoggerAdapter) Trace(msg string, fields logger.LogFields) {} func (m *MockLoggerAdapter) Fatal(msg string, err error, fields logger.LogFields) {} func (m *MockLoggerAdapter) Panic(msg string, err error, fields logger.LogFields) {} // MockMarshaler is an implementation of Marshaler for testing type MockMarshaler struct{} func (m MockMarshaler) Marshal(topic string, msg *Event) ([]byte, error) { // Simply convert the event to JSON for testing return json.Marshal(msg) } func (m MockMarshaler) Unmarshal(nsqMsg *nsq.Message) (*Event, error) { // Simply decode the JSON message for testing var event Event err := json.Unmarshal(nsqMsg.Body, &event) return &event, err } func TestPublisherImpl_PublishEvent(t *testing.T) { // Create an instance of MockLoggerAdapter mockLogger := &MockLoggerAdapter{} // Test configuration for the Publisher config := &PublisherImplConfig{ NSQAddress: "localhost", NSQPort: 4150, Marshaler: MockMarshaler{}, } // Create an instance of PublisherImpl for testing publisher, err := NewPublisher(config, mockLogger) assert.NoError(t, err) // Create a test event event := &Event{ EventID: "123", EventSender: "test-sender", EventTopic: "test-topic", EventData: []byte("test-data"), } // Publish the event err = publisher.PublishEvent(event) assert.NoError(t, err) // Close the publisher err = publisher.Close() assert.NoError(t, err) } func TestPublisherImpl_Close(t *testing.T) { // Create an instance of MockLoggerAdapter mockLogger := &MockLoggerAdapter{} // Test configuration for the Publisher config := &PublisherImplConfig{ NSQAddress: "localhost", NSQPort: 4150, Marshaler: MockMarshaler{}, } // Create an instance of PublisherImpl for testing publisher, err := NewPublisher(config, mockLogger) assert.NoError(t, err) // Close the publisher err = publisher.Close() assert.NoError(t, err) }