package com.orientechnologies.orient.graph.sql; import com.orientechnologies.orient.core.metadata.schema.OType; import com.orientechnologies.orient.core.sql.OCommandSQL; import com.tinkerpop.blueprints.impls.orient.OrientEdge; import com.tinkerpop.blueprints.impls.orient.OrientEdgeType; import com.tinkerpop.blueprints.impls.orient.OrientGraph; import com.tinkerpop.blueprints.impls.orient.OrientVertex; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.util.HashMap; import java.util.Map; import static junit.framework.TestCase.assertEquals; import static junit.framework.TestCase.assertTrue; public class TestDeleteEdge { private OrientGraph graph; private OrientEdgeType edgeType; @Before public void before() { graph = new OrientGraph("memory:" + TestDeleteEdge.class.getSimpleName(), "admin", "admin"); graph.createVertexType("TestVertex"); edgeType = graph.createEdgeType("TestEdge"); } @After public void after() { graph.drop(); } @Test public void testDeleteEdge() { for (int i = 0; i < 10; i++) { OrientVertex v1 = graph.addVertex("class:TestVertex"); OrientVertex v2 = graph.addVertex("class:TestVertex"); OrientVertex v3 = graph.addVertex("class:TestVertex"); OrientVertex v4 = graph.addVertex("class:TestVertex"); Map<String, Object> p1 = new HashMap<String, Object>(); p1.put("based_on", "0001"); OrientEdge e1 = v1.addEdge(null, v2, "TestEdge", null, p1); e1.save(); Map<String, Object> p2 = new HashMap<String, Object>(); p2.put("based_on", "0002"); OrientEdge e2 = v3.addEdge(null, v4, "TestEdge", null, p2); e2.save(); graph.commit(); graph.command(new OCommandSQL("delete edge TestEdge where based_on = '0001'")).execute(); Iterable<OrientVertex> edges = graph.command(new OCommandSQL("select count(*) from TestEdge where based_on = '0001'")).execute(); assertTrue(edges.iterator().hasNext()); assertEquals(edges.iterator().next().getProperty("count"), 0l); } } @Test public void testDeleteEdgeValidation() { OrientVertex v1 = graph.addVertex("class:TestVertex"); OrientVertex v2 = graph.addVertex("class:TestVertex"); Map<String, Object> p1 = new HashMap<String, Object>(); p1.put("based_on", "0001"); OrientEdge e1 = v1.addEdge(null, v2, "TestEdge", null, p1); e1.save(); graph.commit(); graph.getRawGraph().commit(); edgeType.createProperty("mand", OType.STRING).setMandatory(true); graph.getRawGraph().begin(); graph.command(new OCommandSQL("delete edge TestEdge where based_on = '0001'")).execute(); Iterable<OrientVertex> edges = graph.command(new OCommandSQL("select count(*) from TestEdge where based_on = '0001'")).execute(); assertTrue(edges.iterator().hasNext()); assertEquals(edges.iterator().next().getProperty("count"), 0l); } }