package com.tinkerpop.rexster; import com.sun.jersey.api.client.ClientResponse; import junit.framework.Assert; import org.codehaus.jettison.json.JSONArray; import org.codehaus.jettison.json.JSONObject; import org.junit.Test; public class IndexResourceIntegrationTest extends AbstractGraphResourceIntegrationTest { public IndexResourceIntegrationTest() throws Exception { super(); } @Test public void postIndexManualSucceed() { for (GraphTestHolder testGraph : this.testGraphs) { if (testGraph.getFeatures().supportsIndices) { ClientResponse indexResponse = doGraphPost(testGraph, "indices/newindex", "class=vertex"); Assert.assertNotNull(indexResponse); Assert.assertEquals(ClientResponse.Status.OK, indexResponse.getClientResponseStatus()); } } } @Test public void putElementInIndexIndexNotFound() { for (GraphTestHolder testGraph : this.testGraphs) { if (testGraph.getFeatures().supportsIndices) { ClientResponse indexResponse = doGraphPut(testGraph, "indices/newindex", "key=x&value=y"); Assert.assertNotNull(indexResponse); Assert.assertEquals(ClientResponse.Status.NOT_FOUND, indexResponse.getClientResponseStatus()); } } } @Test public void putElementInIndexValid() { for (GraphTestHolder testGraph : this.testGraphs) { if (testGraph.getFeatures().supportsIndices) { doGraphPost(testGraph, "indices/newindex", "class=vertex&keys=name"); String mappedId = testGraph.getVertexIdSet().get("1"); ClientResponse indexPutResponse = doGraphPut(testGraph, "indices/newindex", "key=name&value=marko&id=" + encode(mappedId)); Assert.assertNotNull(indexPutResponse); Assert.assertEquals(ClientResponse.Status.OK, indexPutResponse.getClientResponseStatus()); ClientResponse indexGetResponse = doGraphGet(testGraph, "indices/newindex", "key=name&value=marko"); Assert.assertNotNull(indexGetResponse); Assert.assertEquals(ClientResponse.Status.OK, indexGetResponse.getClientResponseStatus()); JSONObject result = indexGetResponse.getEntity(JSONObject.class); Assert.assertNotNull(result); JSONArray results = result.optJSONArray("results"); Assert.assertNotNull(results); Assert.assertEquals(1, results.length()); JSONObject marko = results.optJSONObject(0); Assert.assertEquals(mappedId, marko.optString("_id")); Assert.assertEquals("marko", marko.optString("name")); } } } @Test public void deleteElementInIndexThenIndexItself() { for (GraphTestHolder testGraph : this.testGraphs) { if (testGraph.getFeatures().supportsIndices) { doGraphPost(testGraph, "indices/newindex", "class=vertex&keys=name"); String mappedId = testGraph.getVertexIdSet().get("1"); ClientResponse indexPutResponse = doGraphPut(testGraph, "indices/newindex", "key=name&value=marko&id=" + encode(mappedId)); ClientResponse indexGetResponse = doGraphGet(testGraph, "indices/newindex", "key=name&value=marko"); Assert.assertNotNull(indexGetResponse); Assert.assertEquals(ClientResponse.Status.OK, indexGetResponse.getClientResponseStatus()); JSONObject result = indexGetResponse.getEntity(JSONObject.class); Assert.assertNotNull(result); JSONArray results = result.optJSONArray("results"); Assert.assertNotNull(results); Assert.assertEquals(1, results.length()); JSONObject marko = results.optJSONObject(0); Assert.assertEquals(mappedId, marko.optString("_id")); Assert.assertEquals("marko", marko.optString("name")); doGraphDelete(testGraph, "indices/newindex", "key=name&value=marko&id=" + encode(mappedId)); indexGetResponse = doGraphGet(testGraph, "indices/newindex", "key=name&value=marko"); Assert.assertNotNull(indexGetResponse); Assert.assertEquals(ClientResponse.Status.OK, indexGetResponse.getClientResponseStatus()); result = indexGetResponse.getEntity(JSONObject.class); Assert.assertNotNull(result); results = result.optJSONArray("results"); Assert.assertNotNull(results); Assert.assertEquals(0, results.length()); doGraphDelete(testGraph, "indices/newindex"); ClientResponse indexDeleteResponse = doGraphDelete(testGraph, "indices/newindex"); Assert.assertNotNull(indexDeleteResponse); Assert.assertEquals(ClientResponse.Status.NOT_FOUND, indexDeleteResponse.getClientResponseStatus()); } } } }