     test.isTrue _.isFunction cursor._cursor[0].n.__refresh
     test.isTrue cursor._cursor[0].n._isReactive, "Reactive node"
 
-  test.equal db.query("MATCH (n:QueryTestBasics) DELETE n").fetch().length, 0, "[DELETE] [fetch()] Returns empty array"
-  row = db.query("MATCH (n:QueryTestBasics) RETURN n").fetch()
+  test.equal db[funcName]("MATCH (n:#{funcName}TestBasics) DELETE n").fetch().length, 0, "[DELETE] [fetch()] Returns empty array"
+  row = db[funcName]("MATCH (n:#{funcName}TestBasics) RETURN n").fetch()
   test.equal row.length, 0, "[MATCH] [fetch] [after DELETE] Returns empty array"
+
+__AsyncBasicsTest__ = (test, completed, funcName) ->
+  test.isTrue _.isFunction(db[funcName]), "[#{funcName}] Exists on DB object"
+  db[funcName] "CREATE (n:#{funcName}AsyncTest {data}) RETURN n", {data: Async: "#{funcName}AsyncTest"}, (error, cursor) ->
+    test.isNull error, "No error"
+    nodes = cursor.fetch()
+    test.equal nodes.length, 1, "Only one node is created"
+    test.isTrue _.has nodes[0], 'n'
+    __nodeCRC__ test, nodes[0].n, ["#{funcName}AsyncTest"], {Async: "#{funcName}AsyncTest"}
+
+    db[funcName] "MATCH (n:#{funcName}AsyncTest) DELETE n", (error, cursor) ->
+      test.isNull error, "No error"
+      nodes = cursor.fetch()
+      test.equal nodes.length, 0, "No nodes is returned on DELETE"
+      completed()
+
+###
+@test 
+@description basics
+query: (cypher, opts = {}) ->
+###
+Tinytest.add 'db.query [BASICS]', (test) -> __BasicsTest__ test, 'query'
+
+###
+@test 
+@description basics
+cypher: (cypher, opts = {}) ->
+###
+Tinytest.add 'db.cypher [BASICS]', (test) -> __BasicsTest__ test, 'cypher'
 
 ###
 @test 

    test.equal node.labels.length, 0, "node.labels is empty if no labels"
    test.equal node.labels.metadata,length, 0, "node.metadata.labels is empty if no labels"

###
@test 
@description basics
query: (cypher, opts = {}) ->
###
Tinytest.add 'db.query [BASICS]', (test) ->
  test.isTrue _.isFunction(db.query), "[query] Exists on DB object"
  cursors = []
  cursors.push db.query "CREATE (n:QueryTestBasics {data}) RETURN n", data: foo: 'bar'
  cursors.push db.query "MATCH (n:QueryTestBasics) RETURN n"
  cursors.push db.query 
    query: "MATCH (n:QueryTestBasics {foo: {data}}) RETURN n"
    params: data: 'bar'

  fut = new Future()
  db.query 
    cypher: "MATCH (n:QueryTestBasics {foo: {data}}) RETURN n"
    parameters: data: 'bar'
    cb: (error, cursor) -> fut.return cursor
  cursors.push fut.wait()

  fut = new Future()
  db.query 
    cypher: "MATCH (n:QueryTestBasics {foo: {data}}) RETURN n"
    opts: data: 'bar'
    callback: (error, cursor) -> fut.return cursor
  cursors.push fut.wait()

    test.isTrue _.has row[0], 'n'
    node = row[0].n

    __nodeCRC__ test, node, ["#{funcName}TestBasics"], {foo: 'bar'}

  cursors = []

  cursors.push db[funcName] 
    cypher: "MATCH (n:#{funcName}TestBasics) RETURN n"
    reactive: true
  cursors.push db[funcName] 
    cypher: "MATCH (n:#{funcName}TestBasics) RETURN n"
    reactiveNodes: true

  for cursor in cursors
