90 lines
2.5 KiB
Go
90 lines
2.5 KiB
Go
![]() |
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)
|
||
|
}
|