blob: a5c7759f62f7a07931efe0a07e8cb75d224bede8 [file]
package io.prediction;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.joda.time.DateTime;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import static org.junit.Assert.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class FileExporterTest {
@Rule
public TemporaryFolder folder = new TemporaryFolder();
@Test
public void testIt() throws IOException {
String pathname = folder.getRoot().getCanonicalPath() + "/testIt.out";
FileExporter exporter = new FileExporter(pathname);
Map<String, Object> properties = new HashMap<>();
properties.put("birthday", new DateTime("1758-05-06T00:00:00+00:00"));
DateTime then = new DateTime("1794-07-27T00:00:00+00:00");
exporter.createEvent("event-1", "entity-type-1", "entity-id-1",
null, null, null, null);
exporter.createEvent("event-2", "entity-type-2", "entity-id-2",
"target-entity-type-2", null, null, null);
exporter.createEvent("event-3", "entity-type-3", "entity-id-3",
null, "target-entity-id-3", null, null);
exporter.createEvent("event-4", "entity-type-4", "entity-id-4",
null, null, properties, then);
exporter.createEvent("event-5", "entity-type-5", "entity-id-5",
"target-entity-type-5", "target-entity-id-5", properties, then);
exporter.close();
File out = new File(pathname);
assertTrue(pathname + " exists", out.exists());
BufferedReader reader = new BufferedReader(new FileReader(pathname));
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(DateTime.class, new DateTimeAdapter());
Gson gson = gsonBuilder.create();
String json1 = reader.readLine();
Event event1 = gson.fromJson(json1, Event.class);
assertEquals("event-1", event1.getEvent());
assertEquals("entity-type-1", event1.getEntityType());
assertEquals("entity-id-1", event1.getEntityId());
assertNull(event1.getTargetEntityType());
assertNull(event1.getTargetEntityId());
assertTrue(event1.getProperties().isEmpty());
assertEquals(new DateTime().getMillis(), event1.getEventTime().getMillis(), 1000);
String json2 = reader.readLine();
Event event2 = gson.fromJson(json2, Event.class);
assertEquals("event-2", event2.getEvent());
assertEquals("entity-type-2", event2.getEntityType());
assertEquals("entity-id-2", event2.getEntityId());
assertEquals("target-entity-type-2", event2.getTargetEntityType());
assertNull(event2.getTargetEntityId());
assertTrue(event2.getProperties().isEmpty());
assertEquals(new DateTime().getMillis(), event2.getEventTime().getMillis(), 1000);
String json3 = reader.readLine();
Event event3 = gson.fromJson(json3, Event.class);
assertEquals("event-3", event3.getEvent());
assertEquals("entity-type-3", event3.getEntityType());
assertEquals("entity-id-3", event3.getEntityId());
assertNull(event3.getTargetEntityType());
assertEquals("target-entity-id-3", event3.getTargetEntityId());
assertTrue(event3.getProperties().isEmpty());
assertEquals(new DateTime().getMillis(), event3.getEventTime().getMillis(), 1000);
String json4 = reader.readLine();
Event event4 = gson.fromJson(json4, Event.class);
assertEquals("event-4", event4.getEvent());
assertEquals("entity-type-4", event4.getEntityType());
assertEquals("entity-id-4", event4.getEntityId());
assertNull(event4.getTargetEntityType());
assertNull(event4.getTargetEntityId());
assertEquals(1, event4.getProperties().size());
assertEquals(properties.get("birthday"), new DateTime(event4.getProperties().get("birthday")));
assertEquals(then.getMillis(), event4.getEventTime().getMillis());
String json5 = reader.readLine();
Event event5 = gson.fromJson(json5, Event.class);
assertEquals("event-5", event5.getEvent());
assertEquals("entity-type-5", event5.getEntityType());
assertEquals("entity-id-5", event5.getEntityId());
assertEquals("target-entity-type-5", event5.getTargetEntityType());
assertEquals("target-entity-id-5", event5.getTargetEntityId());
assertEquals(1, event5.getProperties().size());
assertEquals(properties.get("birthday"), new DateTime(event5.getProperties().get("birthday")));
assertEquals(then.getMillis(), event4.getEventTime().getMillis());
String empty = reader.readLine();
assertNull("no more data", empty);
}
}