package com.mobify.astro.messaging;

import org.json.JSONObject;
import org.junit.Test;

import static org.junit.Assert.assertEquals;

public class EventMessageTest {

    @Test
    public void testCreateEventMessage() throws Exception{
        AddressableObject sender = new AddressableObject() {
            @Override
            public String getInstanceAddress() {
                return String.format("%s:%d", this.getClass().getName(), this.hashCode());
            }
        };
        JSONObject params = new JSONObject();

        EventMessage message = new EventMessage("foo", params, sender);

        JSONObject payload = message.getPayload();
        assertEquals("foo", payload.getString(EventMessage.KeyNames.EVENT_NAME));

        String senderAddress = String.format("%s:%d", sender.getClass().getName(), sender.hashCode());
        assertEquals(senderAddress, message.getHeader(SenderMessage.KeyNames.SENDER_ADDRESS));
        assertEquals(params, message.getPayload().get(EventMessage.KeyNames.PARAMS));
    }
}
