Coverage Summary for Class: TestSimpleVertexEdgeGremlin (org.umlg.sqlg.test.usersuppliedpk.topology)
  | Class | Method, % | Line, % | 
  | TestSimpleVertexEdgeGremlin | 100%
  
  
    (4/4) | 98.4%
  
  
    (63/64) | 
  
    | TestSimpleVertexEdgeGremlin$1 | 100%
  
  
    (1/1) | 100%
  
  
    (4/4) | 
  
    | TestSimpleVertexEdgeGremlin$2 | 100%
  
  
    (1/1) | 100%
  
  
    (2/2) | 
  
    | TestSimpleVertexEdgeGremlin$3 | 100%
  
  
    (1/1) | 100%
  
  
    (2/2) | 
  
    | TestSimpleVertexEdgeGremlin$4 | 100%
  
  
    (1/1) | 100%
  
  
    (3/3) | 
  
    | TestSimpleVertexEdgeGremlin$5 | 100%
  
  
    (1/1) | 100%
  
  
    (2/2) | 
  
    | TestSimpleVertexEdgeGremlin$6 | 100%
  
  
    (1/1) | 100%
  
  
    (2/2) | 
  
    | TestSimpleVertexEdgeGremlin$7 | 100%
  
  
    (1/1) | 100%
  
  
    (3/3) | 
  | Total | 100%
  
  
    (11/11) | 98.8%
  
  
    (81/82) | 
 package org.umlg.sqlg.test.usersuppliedpk.topology;
 
 import org.apache.commons.collections4.set.ListOrderedSet;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Assert;
 import org.junit.Test;
 import org.umlg.sqlg.structure.PropertyDefinition;
 import org.umlg.sqlg.structure.PropertyType;
 import org.umlg.sqlg.structure.RecordId;
 import org.umlg.sqlg.structure.topology.VertexLabel;
 import org.umlg.sqlg.test.BaseTest;
 
 import java.util.*;
 
 /**
  * @author <a href="https://github.com/pietermartin">Pieter Martin</a>
  * Date: 2018/03/18
  */
 public class TestSimpleVertexEdgeGremlin extends BaseTest {
 
     @Test
     public void testSimpleVertexInsertAndUpdateAndQuery() {
         this.sqlgGraph.getTopology().ensureVertexLabelExist(
                 "Person",
                 new LinkedHashMap<>() {{
                     put("name", PropertyDefinition.of(PropertyType.varChar(100)));
                     put("surname", PropertyDefinition.of(PropertyType.varChar(100)));
                     put("country", PropertyDefinition.of(PropertyType.STRING));
                 }},
                 ListOrderedSet.listOrderedSet(Arrays.asList("name", "surname"))
         );
         this.sqlgGraph.tx().commit();
 
         List<Vertex> persons = this.sqlgGraph.traversal().V().hasLabel("Person").toList();
         Assert.assertTrue(persons.isEmpty());
         try {
             this.sqlgGraph.addVertex(T.label, "Person", "name", "John");
             Assert.fail("Primary Key not specified, query suppose to fail!");
         } catch (Exception e) {
             //ignore
         }
         this.sqlgGraph.tx().rollback();
 
         this.sqlgGraph.addVertex(T.label, "Person", "name", "John", "surname", "Smith");
         this.sqlgGraph.tx().commit();
         persons = this.sqlgGraph.traversal().V().hasLabel("Person").toList();
         Assert.assertEquals(1, persons.size());
         Vertex person = persons.get(0);
         RecordId recordId = (RecordId) person.id();
         Assert.assertNull(recordId.getID().getSequenceId());
         Assert.assertEquals(2, recordId.getIdentifiers().size());
         Assert.assertEquals("John", recordId.getIdentifiers().get(0));
         Assert.assertEquals("Smith", recordId.getIdentifiers().get(1));
         Assert.assertEquals("John", person.property("name").value());
         Assert.assertEquals("Smith", person.property("surname").value());
         Assert.assertNull(person.property("country").value());
 
         person.property("country", "moon");
         this.sqlgGraph.tx().commit();
         person = this.sqlgGraph.traversal().V().hasLabel("Person").toList().get(0);
         Assert.assertNotNull(person.property("country").value());
         Assert.assertEquals("moon", person.value("country"));
     }
 
     @Test
     public void testEdgeInsertUpdate() {
         VertexLabel aVertexLabel = this.sqlgGraph.getTopology().ensureVertexLabelExist(
                 this.sqlgGraph.getSqlDialect().getPublicSchema(),
                 "A",
                 new HashMap<>() {{
                     put("name", PropertyDefinition.of(PropertyType.varChar(100)));
                 }},
                 ListOrderedSet.listOrderedSet(Collections.singletonList("name"))
         );
         VertexLabel bVertexLabel = this.sqlgGraph.getTopology().ensureVertexLabelExist(
                 this.sqlgGraph.getSqlDialect().getPublicSchema(),
                 "B",
                 new HashMap<>() {{
                     put("name", PropertyDefinition.of(PropertyType.varChar(100)));
                 }},
                 ListOrderedSet.listOrderedSet(Collections.singletonList("name"))
         );
         aVertexLabel.ensureEdgeLabelExist(
                 "ab",
                 bVertexLabel,
                 new HashMap<>() {{
                     put("name", PropertyDefinition.of(PropertyType.varChar(100)));
                     put("country", PropertyDefinition.of(PropertyType.STRING));
                 }},
                 ListOrderedSet.listOrderedSet(Collections.singletonList("name"))
         );
         Vertex a1 = this.sqlgGraph.addVertex(T.label, "A", "name", "A1");
         Vertex b1 = this.sqlgGraph.addVertex(T.label, "B", "name", "A1");
         Edge e = a1.addEdge("ab", b1, "name", "halo", "country", "earth");
         this.sqlgGraph.tx().commit();
 
         List<Edge> edges = this.sqlgGraph.traversal().V().hasLabel("A").outE().toList();
         Assert.assertEquals(1, edges.size());
         Assert.assertEquals("earth", edges.get(0).value("country"));
 
         e.property("country", "moon");
         this.sqlgGraph.tx().commit();
 
         edges = this.sqlgGraph.traversal().V().hasLabel("A").outE().toList();
         Assert.assertEquals(1, edges.size());
         Assert.assertEquals("moon", edges.get(0).value("country"));
     }
 
     @Test
     public void testGetEdgeById() {
         VertexLabel aVertexLabel = this.sqlgGraph.getTopology().ensureVertexLabelExist(
                 this.sqlgGraph.getSqlDialect().getPublicSchema(),
                 "A",
                 new HashMap<>() {{
                     put("name", PropertyDefinition.of(PropertyType.varChar(100)));
                 }},
                 ListOrderedSet.listOrderedSet(Collections.singletonList("name"))
         );
         VertexLabel bVertexLabel = this.sqlgGraph.getTopology().ensureVertexLabelExist(
                 this.sqlgGraph.getSqlDialect().getPublicSchema(),
                 "B",
                 new HashMap<>() {{
                     put("name", PropertyDefinition.of(PropertyType.varChar(100)));
                 }},
                 ListOrderedSet.listOrderedSet(Collections.singletonList("name"))
         );
         aVertexLabel.ensureEdgeLabelExist(
                 "ab",
                 bVertexLabel,
                 new HashMap<>() {{
                     put("name", PropertyDefinition.of(PropertyType.varChar(100)));
                     put("country", PropertyDefinition.of(PropertyType.STRING));
                 }},
                 ListOrderedSet.listOrderedSet(Collections.singletonList("name"))
         );
         Vertex a1 = this.sqlgGraph.addVertex(T.label, "A", "name", "A1");
         Vertex b1 = this.sqlgGraph.addVertex(T.label, "B", "name", "A1");
         Edge e = a1.addEdge("ab", b1, "name", "halo", "country", "earth");
         this.sqlgGraph.tx().commit();
 
         Vertex otherV = this.sqlgGraph.traversal().V(a1.id()).next();
         Assert.assertEquals(a1, otherV);
         Edge other = this.sqlgGraph.traversal().E(e.id()).next();
         Assert.assertEquals(e, other);
     }
 
 }