49 lines
1.3 KiB
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
|
|
}
|