Package org.skyscreamer.yoga.selector

Source Code of org.skyscreamer.yoga.selector.CoreFieldsTest

package org.skyscreamer.yoga.selector;

import org.junit.Assert;
import org.junit.Test;
import org.skyscreamer.yoga.exceptions.ParseSelectorException;
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.model.extended.UserEntityConfigurationWithArtistCoreField;
import org.skyscreamer.yoga.test.util.AbstractTraverserTest;

import java.util.List;
import java.util.Map;

/**
* User: corby Date: 5/6/12
*/
public class CoreFieldsTest extends AbstractTraverserTest
{
    // The User object has a @Core annotation on the ID and Name fields. Pass in
    // an empty selector and a null selector,
    // and verify that only the ID and Name fields are returned.
    @Test
    public void testCoreAnnotations() throws ParseSelectorException
    {
        User solomon = DataGenerator.solomon();
        ResultTraverser traverser = new ResultTraverser();

        Map<String, Object> objectTree = doTraverse( solomon, ":", traverser );
        Assert.assertEquals( 2, objectTree.size() );
        Assert.assertEquals( solomon.getId(), objectTree.get( "id" ) );
        Assert.assertEquals( solomon.getName(), objectTree.get( "name" ) );
    }

    // Use an AlbumEntityConfiguration that defines ID and Title as core fields. Pass
    // in an empty selector and a null
    // selector, and verify that only the ID and Title fields are returned.
    @Test
    public void testNullCoreEntityConfigurationFields()
    {
        Album funeral = DataGenerator.funeral();
        ResultTraverser traverser = new ResultTraverser();
        getEntityConfigurationRegistry().register(new AlbumEntityConfiguration());
        Map<String, Object> objectTree = doTraverse( funeral, null, traverser );
        Assert.assertEquals( 2, objectTree.size() );
        Assert.assertEquals( funeral.getId(), objectTree.get( "id" ) );
        Assert.assertEquals( funeral.getTitle(), objectTree.get( "title" ) );
    }

    /**
     * Use an AlbumEntityConfiguration that defines ID and Title as core fields. Pass
     * in an empty selector and a null selector, and verify that only the ID and
     * Title fields are returned.
     */
    @Test
    public void testEmptyCoreEntityConfigurationFields()
    {
        Album funeral = DataGenerator.funeral();
        ResultTraverser traverser = new ResultTraverser();
        getEntityConfigurationRegistry().register( new AlbumEntityConfiguration() );
        Map<String, Object> objectTree = doTraverse( funeral, ":", traverser );
        Assert.assertEquals( 2, objectTree.size() );
        Assert.assertEquals( funeral.getId(), objectTree.get( "id" ) );
        Assert.assertEquals( funeral.getTitle(), objectTree.get( "title" ) );
    }

    /**
     * Use a UserConfiguration that defines a complex type (List of Artists) as
     * a core field. Also, ensure that core fields defined by both the
     * YogaEntityConfiguration and the annotations are returned.
     */
    @Test
    public void testComplexCoreFields()
    {
        User carter = DataGenerator.carter();
        carter.getFavoriteArtists().add( DataGenerator.neutralMilkHotel() );
        carter.getFavoriteArtists().add( DataGenerator.arcadeFire() );
        ResultTraverser traverser = new ResultTraverser();
        getEntityConfigurationRegistry().register( new UserEntityConfigurationWithArtistCoreField() );

        Map<String, Object> objectTree = doTraverse( carter, ":", traverser );
        Assert.assertEquals( 2, objectTree.size() );
        Assert.assertEquals( carter.getId(), objectTree.get( "id" ) );

        List<Map<String, Object>> favoriteArtists = getList( objectTree, "favoriteArtists" );
        Assert.assertNotNull( favoriteArtists );
        Assert.assertEquals( 2, favoriteArtists.size() );
        Map<String, Object> neutralMap = findItem( favoriteArtists, "name", "Neutral Milk Hotel" );
        Assert.assertEquals( DataGenerator.neutralMilkHotel().getId(), neutralMap.get( "id" ) );
        Map<String, Object> arcadeMap = findItem( favoriteArtists, "name", "Arcade Fire" );
        Assert.assertEquals( DataGenerator.arcadeFire().getId(), arcadeMap.get( "id" ) );
    }
}
TOP

Related Classes of org.skyscreamer.yoga.selector.CoreFieldsTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.