Package org.neo4j.shell.tools.imp

Source Code of org.neo4j.shell.tools.imp.AutoIndexAppTest

package org.neo4j.shell.tools.imp;

import org.junit.Before;
import org.junit.Test;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.index.AutoIndexer;
import org.neo4j.kernel.GraphDatabaseAPI;
import org.neo4j.shell.ShellException;
import org.neo4j.shell.impl.CollectingOutput;
import org.neo4j.shell.impl.SameJvmClient;
import org.neo4j.shell.kernel.GraphDatabaseShellServer;
import org.neo4j.test.TestGraphDatabaseFactory;

import java.io.Serializable;
import java.rmi.RemoteException;
import java.util.Collections;

import static org.junit.Assert.assertEquals;

/**
* Created by mh on 04.07.13.
*/
public class AutoIndexAppTest {

    private GraphDatabaseAPI db;
    private SameJvmClient client;
    private AutoIndexer<Node> nodeAutoIndexer;
    private AutoIndexer<Relationship> relAutoIndexer;

    @Test
    public void testAutoIndexNodes() throws Exception {
        assertEquals(false, nodeAutoIndexer.isEnabled());
        assertCommand("auto-index name", "Enabling auto-indexing of Node properties: [name]");
        assertEquals(true, nodeAutoIndexer.isEnabled());
        assertIndexProp(true, "name");
        assertCommand("auto-index -r name", "Disabling auto-indexing of Node properties: [name]");
        assertIndexProp(false, "name");
        assertCommand("auto-index foo bar", "Enabling auto-indexing of Node properties: [foo, bar]");
        assertIndexProp(true, "foo", "bar");
        assertCommand("auto-index -r foo bar", "Disabling auto-indexing of Node properties: [foo, bar]");
        assertIndexProp(false, "foo", "bar");
    }
    @Test
    public void testAutoIndexRels() throws Exception {
        assertEquals(false, relAutoIndexer.isEnabled());
        assertCommand("auto-index -t Relationship name", "Enabling auto-indexing of Relationship properties: [name]");
        assertEquals(true, relAutoIndexer.isEnabled());
        assertIndexRelProp(true, "name");
        assertCommand("auto-index -t Relationship -r name", "Disabling auto-indexing of Relationship properties: [name]");
        assertIndexRelProp(false, "name");
        assertCommand("auto-index -t Relationship foo bar", "Enabling auto-indexing of Relationship properties: [foo, bar]");
        assertIndexRelProp(true, "foo", "bar");
        assertCommand("auto-index -t Relationship -r foo bar", "Disabling auto-indexing of Relationship properties: [foo, bar]");
        assertIndexRelProp(false, "foo", "bar");
    }

    private void assertIndexProp(boolean expected, String...props) {
        for (String prop : props) {
            assertEquals(expected, nodeAutoIndexer.getAutoIndexedProperties().contains(prop));
        }
    }
    private void assertIndexRelProp(boolean expected, String...props) {
        for (String prop : props) {
            assertEquals(expected, relAutoIndexer.getAutoIndexedProperties().contains(prop));
        }
    }

    private void assertCommand(String command, String expected) throws RemoteException, ShellException {
        CollectingOutput out = new CollectingOutput();
        client.evaluate(command, out);
        assertEquals(expected,out.asString().trim());
    }

    @Before
    public void setUp() throws RemoteException, ShellException {
        db = (GraphDatabaseAPI) new TestGraphDatabaseFactory().newImpermanentDatabase();
        client = new SameJvmClient(Collections.<String, Serializable>emptyMap(), new GraphDatabaseShellServer(db));
        nodeAutoIndexer = db.index().getNodeAutoIndexer();
        relAutoIndexer = db.index().getRelationshipAutoIndexer();
    }
}
TOP

Related Classes of org.neo4j.shell.tools.imp.AutoIndexAppTest

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.