package eu.dnetlib.iis.wf.importer.infospace.converter;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import org.junit.Test;
import eu.dnetlib.data.proto.OafProtos.OafEntity;
import eu.dnetlib.data.proto.OafProtos.OafEntity.Builder;
import eu.dnetlib.data.proto.PersonProtos.Person.Metadata;
import eu.dnetlib.data.proto.TypeProtos.Type;
import eu.dnetlib.iis.importer.schemas.Person;
/**
* Tests for {@link PersonConverter}
*/
public class PersonConverterTest {
private static final String PERSON_ID = "some id";
private static final String FIRST_NAME = "a first name";
private static final String SECOND_NAME = "a second name";
private static final String SECOND_SECOND_NAME = "another name";
private static final String FULL_NAME = "the full name";
private PersonConverter converter = new PersonConverter();
//------------------------ TESTS --------------------------
@Test(expected=NullPointerException.class)
public void convert_null_oafEntity() {
// execute
converter.convert(null);
}
@Test
public void convert_unset_person() {
// given
OafEntity oafEntity = emptyEntityBuilder(PERSON_ID).build();
// execute
Person person = converter.convert(oafEntity);
// assert
assertNull(person);
}
@Test
public void convert() {
// given
OafEntity.Builder builder = emptyEntityBuilder(PERSON_ID);
Metadata.Builder mdBuilder = builder.getPersonBuilder().getMetadataBuilder();
mdBuilder.getFirstnameBuilder().setValue(FIRST_NAME);
mdBuilder.addSecondnamesBuilder().setValue(SECOND_NAME);
mdBuilder.addSecondnamesBuilder().setValue(SECOND_SECOND_NAME);
mdBuilder.getFullnameBuilder().setValue(FULL_NAME);
OafEntity oafEntity = builder.build();
// execute
Person person = converter.convert(oafEntity);
// assert
assertEquals(PERSON_ID, person.getId());
assertEquals(FIRST_NAME, person.getFirstname());
assertEquals(2, person.getSecondnames().size());
assertEquals(SECOND_NAME, person.getSecondnames().get(0));
assertEquals(SECOND_SECOND_NAME, person.getSecondnames().get(1));
assertEquals(FULL_NAME, person.getFullname());
}
//------------------------ PRIVATE --------------------------
private static Builder emptyEntityBuilder(String id) {
// note that the type does not matter for the converter
return OafEntity.newBuilder().setType(Type.person).setId(id);
}
}