Package com.impetus.client.neo4j

Source Code of com.impetus.client.neo4j.GraphEntityMapperTest

/**
* Copyright 2012 Impetus Infotech.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.impetus.client.neo4j;

import java.io.File;
import java.util.Map;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.neo4j.graphdb.DynamicRelationshipType;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.Transaction;
import org.neo4j.kernel.impl.util.FileUtils;

import com.impetus.client.neo4j.imdb.Actor;
import com.impetus.client.neo4j.imdb.Movie;
import com.impetus.client.neo4j.imdb.Role;
import com.impetus.client.neo4j.index.Neo4JIndexManager;
import com.impetus.kundera.PersistenceProperties;
import com.impetus.kundera.client.Client;
import com.impetus.kundera.metadata.KunderaMetadataManager;
import com.impetus.kundera.metadata.model.EntityMetadata;
import com.impetus.kundera.metadata.model.PersistenceUnitMetadata;
import com.impetus.kundera.persistence.EntityManagerFactoryImpl;
import com.impetus.kundera.persistence.EntityManagerFactoryImpl.KunderaMetadata;

/**
* Test case for {@link GraphEntityMapper}
*
* @author amresh.singh
*/
public class GraphEntityMapperTest
{
    static EntityManagerFactory emf;

    static EntityManager em;

    static Neo4JClient client;

    GraphEntityMapper mapper;

    GraphDatabaseService graphDb;

    final static String PU = "imdb";

    private static KunderaMetadata kunderaMetadata;
    /**
     * @throws java.lang.Exception
     */
    @BeforeClass
    public static void setUpBeforeClass() throws Exception
    {
        emf = Persistence.createEntityManagerFactory(PU);
       
        kunderaMetadata = ((EntityManagerFactoryImpl)emf).getKunderaMetadataInstance();
       
        em = emf.createEntityManager();
       
        Map<String, Client> clients = (Map<String, Client>) em.getDelegate();
        client = (Neo4JClient) clients.get(PU);
    }

    /**
     * @throws java.lang.Exception
     */
    @AfterClass
    public static void tearDownAfterClass() throws Exception
    {
        PersistenceUnitMetadata puMetadata = KunderaMetadataManager.getPersistenceUnitMetadata(kunderaMetadata, PU);
        String datastoreFilePath = puMetadata.getProperty(PersistenceProperties.KUNDERA_DATASTORE_FILE_PATH);

        em.close();
        emf.close();

        if (datastoreFilePath != null)
            FileUtils.deleteRecursively(new File(datastoreFilePath));
    }

    /**
     * @throws java.lang.Exception
     */
    @Before
    public void setUp() throws Exception
    {
        mapper = new GraphEntityMapper(new Neo4JIndexManager(), kunderaMetadata);
        graphDb = client.getConnection();
    }

    /**
     * @throws java.lang.Exception
     */
    @After
    public void tearDown() throws Exception
    {
        mapper = null;
        graphDb = null;
    }

    /**
     * Test method for
     * {@link com.impetus.client.neo4j.GraphEntityMapper#getNodeFromEntity(java.lang.Object, Object, org.neo4j.graphdb.GraphDatabaseService, com.impetus.kundera.metadata.model.EntityMetadata, boolean)}
     * .
     */
    @Test
    public void testGetNodeFromEntity()
    {
        Actor actor = new Actor();
        actor.setId(1);
        actor.setName("Keenu Reeves");

        Transaction tx = graphDb.beginTx();
        Node node = mapper.getNodeFromEntity(actor, 1, graphDb, KunderaMetadataManager.getEntityMetadata(kunderaMetadata, Actor.class),
                false);
        Assert.assertNotNull(node);
        Assert.assertEquals(1, node.getProperty("ACTOR_ID"));
        Assert.assertEquals("Keenu Reeves", node.getProperty("ACTOR_NAME"));

        node.delete();

        tx.success();
        tx.finish();
    }

    /**
     * Test method for
     * {@link com.impetus.client.neo4j.GraphEntityMapper#createProxyNode(java.lang.Object, java.lang.Object, org.neo4j.graphdb.GraphDatabaseService, com.impetus.kundera.metadata.model.EntityMetadata, com.impetus.kundera.metadata.model.EntityMetadata)}
     * .
     */
    @Test
    public void testCreateProxyNode()
    {
        EntityMetadata sourceM = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, Actor.class);
        EntityMetadata targetM = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, Movie.class);

        Transaction tx = graphDb.beginTx();
        Node proxyNode = mapper.createProxyNode(1, "A", graphDb, sourceM, targetM);

        Assert.assertNotNull(proxyNode);
        Assert.assertEquals(1, proxyNode.getProperty("ACTOR_ID"));
        Assert.assertEquals("A", proxyNode.getProperty("MOVIE_ID"));
        Assert.assertEquals("$PROXY_NODE$", proxyNode.getProperty("$NODE_TYPE$"));

        proxyNode.delete();
        tx.success();
        tx.finish();
    }

    /**
     * Test method for
     * {@link com.impetus.client.neo4j.GraphEntityMapper#getEntityFromNode(org.neo4j.graphdb.Node, com.impetus.kundera.metadata.model.EntityMetadata)}
     * .
     */
    @Test
    public void testGetEntityFromNode()
    {
        Transaction tx = graphDb.beginTx();
        Node node = graphDb.createNode();
        node.setProperty("ACTOR_ID", 1);
        node.setProperty("ACTOR_NAME", "Amresh Singh");

        Actor actor = (Actor) mapper.getEntityFromNode(node, KunderaMetadataManager.getEntityMetadata(kunderaMetadata, Actor.class));

        Assert.assertNotNull(actor);
        Assert.assertEquals(1, actor.getId());
        Assert.assertEquals("Amresh Singh", actor.getName());

        node.delete();
        tx.success();
        tx.finish();

    }

    /**
     * Test method for
     * {@link com.impetus.client.neo4j.GraphEntityMapper#getEntityFromRelationship(org.neo4j.graphdb.Relationship, com.impetus.kundera.metadata.model.EntityMetadata, com.impetus.kundera.metadata.model.Relation)}
     * .
     */
    @Test
    public void testGetEntityFromRelationship()
    {
        Transaction tx = graphDb.beginTx();
        Node sourceNode = graphDb.createNode();
        sourceNode.setProperty("ACTOR_ID", 1);
        sourceNode.setProperty("ACTOR_NAME", "Amresh Singh");

        Node targetNode = graphDb.createNode();
        targetNode.setProperty("MOVIE_ID", "M1");
        targetNode.setProperty("TITLE", "Matrix Reloaded");
        targetNode.setProperty("YEAR", 1999);

        Relationship rel = sourceNode.createRelationshipTo(targetNode, DynamicRelationshipType.withName("ACTS_IN"));
        rel.setProperty("ROLE_NAME", "Neo");
        rel.setProperty("ROLE_TYPE", "Lead Actor");

        Role role = (Role) mapper.getEntityFromRelationship(rel, KunderaMetadataManager.getEntityMetadata(kunderaMetadata, Actor.class),
                KunderaMetadataManager.getEntityMetadata(kunderaMetadata, Actor.class).getRelation("movies"));

        Assert.assertNotNull(role);
        Assert.assertEquals("Neo", role.getRoleName());
        Assert.assertEquals("Lead Actor", role.getRoleType());

        rel.delete();
        sourceNode.delete();
        targetNode.delete();

        tx.success();
        tx.finish();
    }

    /**
     * Test method for
     * {@link com.impetus.client.neo4j.GraphEntityMapper#createNodeProperties(java.lang.Object, com.impetus.kundera.metadata.model.EntityMetadata)}
     * .
     */
    @Test
    public void testCreateNodeProperties()
    {
        Actor actor = new Actor();
        actor.setId(1);
        actor.setName("Keenu Reeves");

        EntityMetadata m = KunderaMetadataManager.getEntityMetadata(kunderaMetadata, Actor.class);

        Map<String, Object> props = mapper.createNodeProperties(actor, m);
        Assert.assertNotNull(props);
        Assert.assertFalse(props.isEmpty());
        Assert.assertEquals(1, props.get("ACTOR_ID"));
        Assert.assertEquals("Keenu Reeves", props.get("ACTOR_NAME"));

    }

    /**
     * Test method for
     * {@link com.impetus.client.neo4j.GraphEntityMapper#populateRelationshipProperties(com.impetus.kundera.metadata.model.EntityMetadata, com.impetus.kundera.metadata.model.EntityMetadata, org.neo4j.graphdb.Relationship, java.lang.Object)}
     * .
     */
    @Test
    public void testPopulateRelationshipProperties()
    {

    }

    /**
     * Test method for
     * {@link com.impetus.client.neo4j.GraphEntityMapper#createRelationshipProperties(com.impetus.kundera.metadata.model.EntityMetadata, com.impetus.kundera.metadata.model.EntityMetadata, java.lang.Object)}
     * .
     */
    @Test
    public void testCreateRelationshipProperties()
    {

    }

    /**
     * Test method for
     * {@link com.impetus.client.neo4j.GraphEntityMapper#toNeo4JProperty(java.lang.Object)}
     * .
     */
    @Test
    public void testToNeo4JProperty()
    {

    }

    /**
     * Test method for
     * {@link com.impetus.client.neo4j.GraphEntityMapper#fromNeo4JObject(java.lang.Object, java.lang.reflect.Field)}
     * .
     */
    @Test
    public void testFromNeo4JObject()
    {

    }

    /**
     * Test method for
     * {@link com.impetus.client.neo4j.GraphEntityMapper#searchNode(java.lang.Object, com.impetus.kundera.metadata.model.EntityMetadata, org.neo4j.graphdb.GraphDatabaseService, boolean)}
     * .
     */
    @Test
    public void testSearchNode()
    {

    }

    /**
     * Test method for
     * {@link com.impetus.client.neo4j.GraphEntityMapper#getMatchingNodeFromIndexHits(org.neo4j.graphdb.index.IndexHits, boolean)}
     * .
     */
    @Test
    public void testGetMatchingNodeFromIndexHits()
    {

    }

}
TOP

Related Classes of com.impetus.client.neo4j.GraphEntityMapperTest

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.