Package com.tinkerpop.frames

Source Code of com.tinkerpop.frames.FramedGraphFactoryTest$MyFramedGraphFactory

package com.tinkerpop.frames;

import junit.framework.Assert;

import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import org.mockito.internal.stubbing.answers.ReturnsArgumentAt;

import com.tinkerpop.blueprints.Graph;
import com.tinkerpop.blueprints.TransactionalGraph;
import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.frames.modules.Module;

public class FramedGraphFactoryTest {

  private Module mockModule;
  private Graph base;


  @Before
  public void setup() {
    mockModule = Mockito.mock(Module.class);
    base = Mockito.mock(Graph.class);
  }
 
  @Test
  public void testFactory() {
   
    Mockito.when(mockModule.configure(Mockito.any(Graph.class), Mockito.any(FramedGraphConfiguration.class))).then(new ReturnsArgumentAt(0));
    FramedGraphFactory graphFactory = new FramedGraphFactory(mockModule);
   
    FramedGraph<Graph> framed = graphFactory.create(base);
    Assert.assertEquals(base, framed.getBaseGraph());
   
    Mockito.verify(mockModule, Mockito.times(1)).configure(Mockito.any(Graph.class), Mockito.any(FramedGraphConfiguration.class));
   
    TransactionalGraph baseTransactional = Mockito.mock(TransactionalGraph.class);
    FramedTransactionalGraph<TransactionalGraph> framedTransactional = graphFactory.create(baseTransactional);
    Assert.assertEquals(baseTransactional, framedTransactional.getBaseGraph());

    Mockito.verify(mockModule, Mockito.times(2)).configure(Mockito.any(TransactionalGraph.class), Mockito.any(FramedGraphConfiguration.class));
  }
 
  @Test
  public void testWrapping() {
    Graph wrapper = Mockito.mock(Graph.class);
    Mockito.when(mockModule.configure(Mockito.any(Graph.class), Mockito.any(FramedGraphConfiguration.class))).thenReturn(wrapper);
    FramedGraphFactory graphFactory = new FramedGraphFactory(mockModule);
    FramedGraph<Graph> framed = graphFactory.create(base);
   
    Mockito.verify(mockModule).configure(Mockito.any(Graph.class), Mockito.any(FramedGraphConfiguration.class));
   
    //Unwrapping the graph should retrieve the base graph.
    Assert.assertEquals(base, framed.getBaseGraph());

    //But using the framed graph should go through the wrappers installed by the module.
    Vertex vertex = Mockito.mock(Vertex.class);
    Mockito.when(wrapper.getVertex(1)).thenReturn(vertex);
    Assert.assertEquals(vertex, framed.getVertex(1));
  }
 
  @Test(expected=UnsupportedOperationException.class)
  public void testWrappingError() {
    Graph wrapper = Mockito.mock(Graph.class);
    Mockito.when(mockModule.configure(Mockito.any(Graph.class), Mockito.any(FramedGraphConfiguration.class))).thenReturn(wrapper);
    FramedGraphFactory graphFactory = new FramedGraphFactory(mockModule);
    TransactionalGraph baseTransactional = Mockito.mock(TransactionalGraph.class);
    graphFactory.create(baseTransactional);
  }
 
  @Test
  public void testSubclassing() {
    MyFramedGraphFactory myFramedGraphFactory = new MyFramedGraphFactory(mockModule);
    Mockito.when(mockModule.configure(Mockito.any(Graph.class), Mockito.any(FramedGraphConfiguration.class))).then(new ReturnsArgumentAt(0));
    MyFramedGraph<Graph> create = myFramedGraphFactory.create(base);
    Assert.assertEquals(base, create.getBaseGraph());
  }
 
  static class MyFramedGraph<T extends Graph> extends FramedGraph<T> {

    protected MyFramedGraph(T baseGraph, FramedGraphConfiguration config) {
      super(baseGraph, config);
    }
   
  }

 
  static class MyFramedGraphFactory extends FramedGraphFactory {

    public MyFramedGraphFactory(Module... modules) {
      super(modules);
    }

    @Override
    public <T extends Graph> MyFramedGraph<T> create(T baseGraph) {
      return new MyFramedGraph<T>(baseGraph, getConfiguration(Graph.class, baseGraph));
    }
   
  }
 
 
}
TOP

Related Classes of com.tinkerpop.frames.FramedGraphFactoryTest$MyFramedGraphFactory

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.