package org.atlasapi.persistence.media.entity;
import static org.hamcrest.Matchers.instanceOf;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.nullValue;
import static org.junit.Assert.assertThat;
import org.atlasapi.media.entity.Actor;
import org.atlasapi.media.entity.CrewMember;
import org.atlasapi.media.entity.CrewMember.Role;
import org.atlasapi.media.entity.Publisher;
import org.junit.Test;
import com.mongodb.DBObject;
public class CrewMemberTranslatorTest {
private final CrewMemberTranslator translator = new CrewMemberTranslator();
@Test
public void testEncodesAndDecodesCrewMember() {
CrewMember member = new CrewMember("uri","curie",Publisher.PA)
.withName("name")
.withProfileLink("profileLink")
.withRole(Role.ABRIDGED_BY);
DBObject encoded = translator.toDBObject(null, member);
CrewMember decoded = translator.fromDBObject(encoded, null);
assertThat(decoded.getCanonicalUri(), is(member.getCanonicalUri()));
assertThat(decoded.getCurie(), is(member.getCurie()));
assertThat(decoded.publisher(), is(member.publisher()));
assertThat(decoded.name(), is(member.name()));
assertThat(decoded.profileLinks(), is(member.profileLinks()));
assertThat(decoded.role(), is(member.role()));
}
@Test
public void testEncodesAndDecodesCrewMemberWithAbsentRole() {
CrewMember member = new CrewMember("uri","curie",Publisher.PA)
.withName("name")
.withProfileLink("profileLink");
DBObject encoded = translator.toDBObject(null, member);
CrewMember decoded = translator.fromDBObject(encoded, null);
assertThat(decoded.getCanonicalUri(), is(member.getCanonicalUri()));
assertThat(decoded.getCurie(), is(member.getCurie()));
assertThat(decoded.publisher(), is(member.publisher()));
assertThat(decoded.name(), is(member.name()));
assertThat(decoded.profileLinks(), is(member.profileLinks()));
assertThat(decoded.role(), is(nullValue()));
assertThat(decoded, is(not(instanceOf(Actor.class))));
}
@Test
public void testEncodesAndDecodesActor() {
Actor member = new Actor("uri","curie",Publisher.PA);
member
.withName("name")
.withProfileLink("profileLink")
.withCharacter("character");
DBObject encoded = translator.toDBObject(null, member);
Actor decoded = (Actor) translator.fromDBObject(encoded, null);
assertThat(decoded.getCanonicalUri(), is(member.getCanonicalUri()));
assertThat(decoded.getCurie(), is(member.getCurie()));
assertThat(decoded.publisher(), is(member.publisher()));
assertThat(decoded.name(), is(member.name()));
assertThat(decoded.profileLinks(), is(member.profileLinks()));
assertThat(decoded.role(), is(Role.ACTOR));
assertThat(((Actor)decoded).character(), is(member.character()));
}
}