package org.skyscreamer.yoga.configuration;
import org.junit.Assert;
import org.junit.Test;
import org.skyscreamer.yoga.mapper.ResultTraverser;
import org.skyscreamer.yoga.test.model.basic.DataGenerator;
import org.skyscreamer.yoga.test.model.extended.Album;
import org.skyscreamer.yoga.test.model.extended.AlbumEntityConfiguration;
import org.skyscreamer.yoga.test.util.AbstractTraverserTest;
import java.util.Map;
/**
* User: corby
* Date: 5/14/12
*/
@SuppressWarnings("unchecked")
public class SupportedFieldsTest extends AbstractTraverserTest
{
// Year is a visible property on the Album object, but the AlbumEntityConfiguration enumerates supported fields,
// which exclude year. Year should not be returned, even if it is named in the selector
@Test
public void testSelectUnsupportedField()
{
Album chasingProphecy = DataGenerator.chasingProphecy();
ResultTraverser traverser = new ResultTraverser();
getEntityConfigurationRegistry().register( new AlbumEntityConfiguration() );
Map<String,Object> objectTree = doTraverse( chasingProphecy, "id,title,year,artist", traverser );
Assert.assertEquals( 3, objectTree.size() );
Assert.assertEquals( chasingProphecy.getId(), objectTree.get( "id" ) );
Assert.assertEquals( chasingProphecy.getTitle(), objectTree.get( "title" ) );
Map<String,Object> eighthDay = (Map<String, Object>) objectTree.get( "artist" );
Assert.assertEquals( DataGenerator.eigthDay().getName(), eighthDay.get( "name" ) );
}
}