 
 ###
 @test 
+@description Test query basics of async
+query: (cypher, opts, callback) ->
+###
+Tinytest.addAsync 'db.query [ASYNC] [BASICS]', (test, completed) -> __AsyncBasicsTest__ test, completed, 'query'
+
+###
+@test 
+@description Test cypher basics of async
+cypher: (cypher, opts, callback) ->
+###
+Tinytest.addAsync 'db.cypher [ASYNC] [BASICS]', (test, completed) -> __AsyncBasicsTest__ test, completed, 'cypher'
+
+###
+@test 
 @description Test queryAsync
 queryAsync: (cypher, opts, callback) ->
 ###
-Tinytest.addAsync 'db.queryAsync [with callback]', (test, completed) ->
-  test.isTrue _.isFunction(db.queryAsync), "[queryAsync] Exists on DB object"
-  db.queryAsync "CREATE (n:QueryAsyncTest {data}) RETURN n", {data: queryAsync: 'queryAsync'}, (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, ['QueryAsyncTest'], {queryAsync: 'queryAsync'}
-
-    db.queryAsync "MATCH (n:QueryAsyncTest) DELETE n", (error, cursor) ->
-      test.isNull error, "No error"
-      nodes = cursor.fetch()
-      test.equal nodes.length, 0, "No nodes is returned on DELETE"
-      completed()
+Tinytest.addAsync 'db.queryAsync [with callback]', (test, completed) -> __AsyncBasicsTest__ test, completed, 'queryAsync'
 
 ###
 @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 _.isFunction(db.queryAsync), "[queryAsync] Exists on DB object"
  db.queryAsync "CREATE (n:QueryAsyncNoCBTest {data}) RETURN n", {data: queryAsyncNoCB: 'queryAsyncNoCB'}

  listen = (cb) -> Meteor.setTimeout cb, 1
  getNewNode = ->
    listen ->
      nodes = db.query("MATCH (n:QueryAsyncNoCBTest) RETURN n").fetch()
