package org.atlasapi.persistence.events;
import static org.atlasapi.persistence.content.organisation.OrganisationTranslatorTest.createOrganisation;
import static org.atlasapi.persistence.content.organisation.OrganisationTranslatorTest.createPerson;
import static org.junit.Assert.assertEquals;
import java.util.List;
import org.atlasapi.media.entity.Event;
import org.atlasapi.media.entity.Organisation;
import org.atlasapi.media.entity.Person;
import org.atlasapi.media.entity.Publisher;
import org.atlasapi.media.entity.Topic;
import org.atlasapi.persistence.event.EventTranslator;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.junit.Test;
import com.google.common.collect.ImmutableList;
public class EventTranslatorTest {
private final EventTranslator translator = new EventTranslator();
@Test
public void testTranslationToAndFromDBObject() {
Event event = createEvent(createEventGroups());
Event translated = translator.fromDBObject(translator.toDBObject(event));
assertEquals(event.title(), translated.title());
assertEquals(event.publisher(), translated.publisher());
assertEquals(event.venue(), translated.venue());
assertEquals(event.startTime(), translated.startTime());
assertEquals(event.endTime(), translated.endTime());
assertEquals(event.eventGroups(), translated.eventGroups());
assertEquals(event.participants(), translated.participants());
assertEquals(event.organisations(), translated.organisations());
}
public static Event createEvent(Iterable<Topic> eventGroups) {
DateTime now = DateTime.now(DateTimeZone.UTC);
return Event.builder()
.withTitle("Title")
.withPublisher(Publisher.METABROADCAST)
.withVenue(createTopic("dbpedia.org/Allianz_Stadium", "Allianz Stadium"))
.withStartTime(now.minusDays(2))
.withEndTime(now)
.withEventGroups(eventGroups)
.withParticipants(createParticipants())
.withOrganisations(createOrganisations())
.build();
}
private static List<Organisation> createOrganisations() {
return ImmutableList.of(createOrganisation());
}
private static List<Person> createParticipants() {
return ImmutableList.of(
createPerson("dbpedia.org/person1", "person:1"),
createPerson("dbpedia.org/person2", "person:2")
);
}
private static List<Topic> createEventGroups() {
return ImmutableList.of(
createTopic("dbpedia.org/Football", "Football"),
createTopic("dbpedia.org/Premier_League", "Premier League")
);
}
public static Topic createTopic(String uri, String value) {
Topic topic = new Topic(1234l, "dbpedia", value);
topic.setCanonicalUri(uri);
topic.setPublisher(Publisher.METABROADCAST);
return topic;
}
}