package org.skyscreamer.yoga.listener; import java.util.HashMap; import java.util.Map; import junit.framework.Assert; import org.junit.Test; import org.skyscreamer.yoga.mapper.ResultTraverser; import org.skyscreamer.yoga.metadata.DefaultMetaDataRegistry; import org.skyscreamer.yoga.test.model.basic.DataGenerator; import org.skyscreamer.yoga.test.model.extended.Album; import org.skyscreamer.yoga.test.util.AbstractTraverserTest; /** * User: corby * Date: 6/7/12 */ public class MetadataLinkListenerTest extends AbstractTraverserTest { @SuppressWarnings("unchecked") @Test // Add the MetadataLinkListener to the listener chain. The output will render an href to view the metadata // for the album object. // "metadata": { // "href": "/metadata/album.test" // } public void testMetadataHref() { String prefixUrl = "/metadata/"; String fileExtension = "test"; Album signOfTheTimes = DataGenerator.signOfTheTimes(); DefaultMetaDataRegistry service = new DefaultMetaDataRegistry(); service.setRootMetaDataUrl( prefixUrl ); service.setCoreSelector( getCoreSelector() ); Map<String,Class<?>> typeMappings = new HashMap<String, Class<?>>(); typeMappings.put( "album", Album.class ); service.setTypeMappings( typeMappings ); MetadataLinkListener metadataLinkListener = new MetadataLinkListener(); metadataLinkListener.setMetaDataRegistry( service ); ResultTraverser traverser = new ResultTraverser(); Map<String, Object> objectTree = doTraverse( signOfTheTimes, "", traverser, metadataLinkListener ); Map<String,String> metadataMap = (Map<String,String>) objectTree.get( "metadata" ); String metadataHref = prefixUrl + "album." + fileExtension; Assert.assertEquals( metadataHref, metadataMap.get( "href" ) ); } }