package org.skyscreamer.yoga.listener;
import java.util.Map;
import junit.framework.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.model.extended.User;
import org.skyscreamer.yoga.test.util.AbstractTraverserTest;
/**
* User: corby Date: 5/14/12
*/
public class HrefListenerTest extends AbstractTraverserTest
{
// Put an HrefListener in the listener chain. Traverse a user object where
// the @URITemplate is defined as "/user/{id}". Verify that the correct URL
// is appended to the output.
@Test
public void testAnnotatedModel()
{
User solomon = DataGenerator.solomon();
ResultTraverser traverser = new ResultTraverser();
Map<String, Object> objectTree = doTraverse( solomon, ":", traverser, new HrefListener() );
Assert.assertEquals( "/user/" + solomon.getId() + ".test", objectTree.get( "href" ) );
}
// No @URITemplate annotation exists on the Album class, but the
// AlbumEntityConfiguration defines a template.
// Put an HrefListener in the listener chain, and verify that the correct
// URL is appended to the output
@Test
public void testEntityConfiguration()
{
Album funeral = DataGenerator.funeral();
ResultTraverser traverser = new ResultTraverser();
getEntityConfigurationRegistry().register( new AlbumEntityConfiguration() );
HrefListener listener = new HrefListener( new UriGenerator( getEntityConfigurationRegistry() ) );
Map<String, Object> objectTree = doTraverse( funeral, ":", traverser, listener );
Assert.assertEquals( "/album/" + funeral.getId() + ".test", objectTree.get( "href" ) );
}
}