package com.getsentry.raven.event;
import mockit.Injectable;
import mockit.NonStrictExpectations;
import org.hamcrest.Matchers;
import org.testng.annotations.Test;
import java.io.*;
import java.util.Date;
import java.util.UUID;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.sameInstance;
public class EventTest {
@Test(expectedExceptions = IllegalArgumentException.class)
public void ensureEventIdCantBeNull() throws Exception {
new Event(null);
}
@Test
public void returnsCloneOfTimestamp(@Injectable final Date mockTimestamp,
@Injectable final Date mockCloneTimestamp,
@Injectable final UUID mockUuid)
throws Exception {
new NonStrictExpectations() {{
mockTimestamp.clone();
result = mockCloneTimestamp;
}};
final Event event = new Event(mockUuid);
event.setTimestamp(mockTimestamp);
assertThat(event.getTimestamp(), is(sameInstance(mockCloneTimestamp)));
}
@Test
public void serializedEventContainsSerializableExtras(@Injectable final Object nonSerializableObject)
throws Exception {
final Event event = new Event(UUID.fromString("fb3fe928-69af-41a5-b76b-1db4c324caf6"));
new NonStrictExpectations() {{
nonSerializableObject.toString();
result = "3c644639-9721-4e32-8cc8-a2b5b77f4424";
}};
event.getExtra().put("SerializableEntry", 38295L);
event.getExtra().put("NonSerializableEntry", nonSerializableObject);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(event);
ObjectInputStream is = new ObjectInputStream(new ByteArrayInputStream(byteArrayOutputStream.toByteArray()));
Event receivedEvent = (Event) is.readObject();
assertThat(receivedEvent.getId(), equalTo(event.getId()));
assertThat(receivedEvent.getExtra().get("SerializableEntry"), Matchers.<Object>equalTo(38295L));
assertThat(receivedEvent.getExtra().get("NonSerializableEntry"),
Matchers.<Object>equalTo("3c644639-9721-4e32-8cc8-a2b5b77f4424"));
}
}