public async void TestNodeCrud()
        {
            IBranch branch = await Fixture.Repository.ReadBranchAsync("master");

            JObject nodeObj = new JObject(
                new JProperty("title", "MyNode")
                );
            IBaseNode node = await branch.CreateNodeAsync(nodeObj);

            string expectedRef = "node://" + node.PlatformId + "/" + node.RepositoryId + "/" + node.BranchId + "/" + node.Id;

            Assert.Equal(expectedRef, node.Ref.Ref);

            Assert.NotNull(node.QName);
            Assert.Equal("n:node", node.TypeQName.ToString());

            IBaseNode nodeRead = await branch.ReadNodeAsync(node.Id);

            Assert.Equal(node.Data, nodeRead.Data);

            node.Data["title"] = "New title";
            await node.UpdateAsync();

            await nodeRead.ReloadAsync();

            Assert.Equal(node.Data["title"], nodeRead.Data["title"]);

            await node.DeleteAsync();

            nodeRead = await branch.ReadNodeAsync(node.Id);

            Assert.Null(nodeRead);
        }
        public async void TestNodeQuerySearchFind()
        {
            IBranch branch = await Fixture.Repository.ReadBranchAsync("master");

            JObject nodeObj1 = new JObject(
                new JProperty("title", "Cheese burger"),
                new JProperty("meal", "lunch")
                );
            JObject nodeObj2 = new JObject(
                new JProperty("title", "Ham burger"),
                new JProperty("meal", "lunch")
                );
            JObject nodeObj3 = new JObject(
                new JProperty("title", "Turkey sandwich"),
                new JProperty("meal", "lunch")
                );
            JObject nodeObj4 = new JObject(
                new JProperty("title", "Oatmeal"),
                new JProperty("meal", "breakfast")
                );

            IBaseNode node1 = await branch.CreateNodeAsync(nodeObj1);

            IBaseNode node2 = await branch.CreateNodeAsync(nodeObj2);

            IBaseNode node3 = await branch.CreateNodeAsync(nodeObj3);

            IBaseNode node4 = await branch.CreateNodeAsync(nodeObj4);

            // Wait for nodes to index
            Thread.Sleep(5000);

            JObject query = new JObject(
                new JProperty("meal", "lunch")
                );
            List <IBaseNode> queryNodes = await branch.QueryNodesAsync(query);

            var queryNodesIds = queryNodes.Select(node => node.Id);

            Assert.Equal(3, queryNodes.Count);
            Assert.Contains(node1.Id, queryNodesIds);
            Assert.Contains(node2.Id, queryNodesIds);
            Assert.Contains(node3.Id, queryNodesIds);

            JObject find = new JObject(
                new JProperty("search", "burger")
                );
            List <IBaseNode> findNodes = await branch.FindNodesAsync(find);

            var findNodesIds = findNodes.Select(node => node.Id);

            Assert.Equal(2, findNodes.Count);
            Assert.Contains(node1.Id, findNodesIds);
            Assert.Contains(node2.Id, findNodesIds);

            // search
            List <IBaseNode> searchNodes = await branch.SearchNodesAsync("burger");

            var searchNodesIds = searchNodes.Select(node => node.Id);

            Assert.Equal(2, searchNodes.Count);
            Assert.Contains(node1.Id, searchNodesIds);
            Assert.Contains(node2.Id, searchNodesIds);

            await node1.DeleteAsync();

            await node2.DeleteAsync();

            await node3.DeleteAsync();

            await node4.DeleteAsync();
        }