package com.tinkerpop.rexster.kibbles.sample; import com.tinkerpop.blueprints.Graph; import com.tinkerpop.blueprints.impls.tg.TinkerGraphFactory; import com.tinkerpop.rexster.extension.ExtensionResponse; import org.codehaus.jettison.json.JSONObject; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import javax.ws.rs.core.Response; public class SimplePathExtensionTest { private Graph graph; private SimplePathExtension simplePathExtension = new SimplePathExtension(); @Before public void beforeTest() { // in some cases it may be preferable to mock the Graph but for quick test purposes. the sample // graph is good and stable. this.graph = TinkerGraphFactory.createTinkerGraph(); } @Test public void doSomeWorkOnGraphValid() { ExtensionResponse response = this.simplePathExtension.doSomeWorkOnGraph(this.graph); doTests(response, "tinkergraph[vertices:6 edges:6]", "some"); } @Test public void doWorkOnEdgeValid() { ExtensionResponse response = this.simplePathExtension.doOtherWorkOnGraph(this.graph); doTests(response, "tinkergraph[vertices:6 edges:6]", "other"); } private void doTests(ExtensionResponse response, String expectedToString, String whereWorkCameFrom) { // the response should never be null Assert.assertNotNull(response); // the ExtensionResponse really just wraps an underlying jersey response and that // should not be null Response jerseyResponse = response.getJerseyResponse(); Assert.assertNotNull(jerseyResponse); // the services return an OK status code. Assert.assertEquals(Response.Status.OK.getStatusCode(), jerseyResponse.getStatus()); // JSON is wrapped in the jersey response. JSONObject json = (JSONObject) jerseyResponse.getEntity(); Assert.assertNotNull(json); // the JSON has an output property and it contains the data from the toString call on the // requested element. Assert.assertTrue(json.has("output")); Assert.assertEquals(expectedToString, json.optString("output")); Assert.assertTrue(json.has("work-came-from")); Assert.assertEquals(whereWorkCameFrom, json.optString("work-came-from")); } }