package com.netflix.astyanax.entitystore;
import java.lang.reflect.Field;
import java.util.Collection;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import junit.framework.Assert;
import org.junit.Test;
public class EntityMapperTest {
@Test
public void basic() {
EntityMapper<SampleEntity, String> entityMapper = new EntityMapper<SampleEntity, String>(SampleEntity.class, null);
// test id field
Field idField = entityMapper.getId();
Assert.assertEquals("id", idField.getName());
// test column number
Collection<ColumnMapper> cols = entityMapper.getColumnList();
System.out.println(cols);
// 19 simple + 1 nested Bar
Assert.assertEquals(24, cols.size());
// test field without explicit column name
// simple field name is used
boolean foundUUID = false;
boolean founduuid = false;
for(ColumnMapper mapper: cols) {
if(mapper.getColumnName().equals("UUID"))
foundUUID = true;
if(mapper.getColumnName().equals("uuid"))
founduuid = true;
}
Assert.assertFalse(foundUUID);
Assert.assertTrue(founduuid);
}
@Test(expected = IllegalArgumentException.class)
public void missingEntityAnnotation() {
new EntityMapper<String, String>(String.class, null);
}
@Entity
private static class InvalidColumnNameEntity {
@SuppressWarnings("unused")
@Id
private String id;
@SuppressWarnings("unused")
@Column(name="LONG.PRIMITIVE")
private long longPrimitive;
}
@Test(expected = IllegalArgumentException.class)
public void invalidColumnName() {
new EntityMapper<InvalidColumnNameEntity, String>(InvalidColumnNameEntity.class, null);
}
@Test
public void doubleIdColumnAnnotation() {
EntityMapper<DoubleIdColumnEntity, String> entityMapper = new EntityMapper<DoubleIdColumnEntity, String>(DoubleIdColumnEntity.class, null);
// test id field
Field idField = entityMapper.getId();
Assert.assertEquals("id", idField.getName());
// test column number
Collection<ColumnMapper> cols = entityMapper.getColumnList();
System.out.println(cols);
// 3 cols: id, num, str
Assert.assertEquals(3, cols.size());
}
}