public void BasicReferenceTypeSerializationTest()
        {
            var model = new ReferenceModel {
                Indexed1 = "test1", Indexed2 = "test2"
            };                                                                         // Indexed1: name attr "indexed1" | Indexed2: default name

            var manual = Obj("indexed1", "test1", "Indexed2", "test2");

            Assert.IsTrue(manual.Equals(model.ToFaunaObj()));
        }
        private static void DeleteTest_Run(IFaunaClient client, ref Expr lastQuery)
        {
            var model = new ReferenceModel {
                Id = "testId", Indexed1 = "test1", Indexed2 = "test2"
            };
            var q = client.Delete(model);

            var manual = Delete(Ref(model.Id));

            Assert.IsTrue(lastQuery.Equals(manual));
        }
        private static void UpdateTest_Run(IFaunaClient client, ref Expr lastQuery)
        {
            var model = new ReferenceModel {
                Id = "testId", Indexed1 = "test1", Indexed2 = "test2"
            };
            var q = client.Update(model).Result;

            var manual = Update(Ref(model.Id), model.ToFaunaObj());

            Assert.IsTrue(lastQuery.Equals(manual));
        }
        private static void CreateTest_Run(IFaunaClient client, ref Expr lastQuery)
        {
            var model = new ReferenceModel {
                Indexed1 = "test1", Indexed2 = "test2"
            };
            var q = client.Create(model).Result;

            var manual = Create(Ref(Class("reference_model"), 1), Obj("data", model.ToFaunaObj()));

            Assert.IsTrue(lastQuery.Equals(manual));
        }
        private static void UpsertCompositeIndexWithArgsTest_Run(IFaunaClient client, ref Expr lastQuery)
        {
            var model = new ReferenceModel {
                Indexed1 = "test1", Indexed2 = "test2"
            };
            var q = client.Upsert(model, a => a.CompositeIndex, "test1", "test2");

            var matchExpr = Match(Index("composite_index"), "test1", "test2");
            var manual    = If(Exists(matchExpr), Map(matchExpr, a => Update(a, model.ToFaunaObj())), Create(model.GetClassRef(), model.ToFaunaObj()));

            Assert.IsTrue(lastQuery.Equals(manual));
        }
        private static void UpsertTest_Run(IFaunaClient client, ref Expr lastQuery)
        {
            var model = new ReferenceModel {
                Id = "testId", Indexed1 = "test1", Indexed2 = "test2"
            };
            var q = client.Upsert(model);

            var manual = If(Exists(Ref(model.Id)), Update(Ref(model.Id), model.ToFaunaObj()),
                            Create(Ref(Class("reference_model"), 1), model.ToFaunaObj()));

            Assert.IsTrue(lastQuery.Equals(manual));
        }
        private static void UpsertBooleanExpressionTest_Run(IFaunaClient client, ref Expr lastQuery)
        {
            var model = new ReferenceModel {
                Indexed1 = "test1", Indexed2 = "test2"
            };
            var q = client.Upsert(model, a => a.Indexed1 == "test1");

            var matchExpr = Match(Index("index_1"), "test1");
            var manual    = If(Exists(matchExpr), Map(matchExpr, a => Update(a, model.ToFaunaObj())),
                               Create(model.GetClassRef(), model.ToFaunaObj()));

            Assert.IsTrue(lastQuery.Equals(manual));
        }