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 }