cml04-eventer/event_test.go

49 lines
1.3 KiB
Go

package cml04eventer
import (
"testing"
"github.com/nsqio/go-nsq"
"github.com/stretchr/testify/assert"
)
func TestJSONMarshaler(t *testing.T) {
// Crear una instancia de JSONMarshaler
marshaler := JSONMarshaler{}
// Crear un evento para probar la serialización
eventSender := "test-sender"
eventTopic := "test-topic"
eventMeta := MetaData{"key": "value"}
eventData := []byte("test-data")
event := NewEvent(eventSender, eventTopic, eventMeta, eventData)
// Serializar el evento utilizando el Marshaler
serialized, err := marshaler.Marshal(eventTopic, event)
assert.NoError(t, err)
// Deserializar el mensaje serializado
nsqMsg := &nsq.Message{Body: serialized}
decodedEvent, err := marshaler.Unmarshal(nsqMsg)
assert.NoError(t, err)
// Comparar el evento original con el evento deserializado
assert.Equal(t, event, decodedEvent)
}
func TestJSONMarshaler_ErrorOnInvalidJSON(t *testing.T) {
// Crear una instancia de JSONMarshaler
marshaler := JSONMarshaler{}
// Crear un mensaje JSON inválido (por ejemplo, falta una llave)
invalidJSON := []byte(`{"key": "value"`)
// Intentar deserializar el mensaje JSON inválido
nsqMsg := &nsq.Message{Body: invalidJSON}
decodedEvent, err := marshaler.Unmarshal(nsqMsg)
// Debe devolver un error
assert.Error(t, err)
assert.Nil(t, decodedEvent) // El evento deserializado debe ser nulo
}