Beispiel #1
0
        public void ObjectTest()
        {
            AQuery query = _db.Query
                           .Let("x", AValue <Dummy> .Object(
                                    (
                                        x => x.Id,
                                        AValue.Bind("asdf")
                                    ),
                                    (
                                        x => x.Foo,
                                        AValue <Dummy> .Field(z => z.Foo)
                                    ),
                                    (
                                        x => x.Bar,
                                        AValue.Bind(10)
                                    ),
                                    (
                                        x => x.Baz,
                                        AValue <Dummy> .Field(x => x.Bar)
                                    )
                                    ));

            Assert.AreEqual("LET x = {\"_id\":@var0,\"Foo\":z.Foo,\"Bar\":@var1,\"Baz\":x.Bar}", query.GetExpression());
            Assert.AreEqual(typeof(string), query.GetBindedVars()[0].GetType());
            Assert.AreEqual(typeof(int), query.GetBindedVars()[1].GetType());
        }
Beispiel #2
0
        public void BetweenTest()
        {
            AQuery query = _db.Query.Filter(AFilter.Between(AValue <Dummy> .Field(x => x.Bar), AValue.Bind(1), AValue.Bind(50)));

            Assert.AreEqual("FILTER (x.Bar >= @var0 AND x.Bar <= @var1)", query.GetExpression());
            Assert.AreEqual(1, query.GetBindedVars()[0]);
            Assert.AreEqual(50, query.GetBindedVars()[1]);
        }
Beispiel #3
0
        public void InTest()
        {
            //AQuery query = _db.Query.Filter(FilterBuilder<Dummy>.In(x => x.Foo, new[] {"asd", "qwe"}));
            AQuery query = _db.Query.Filter(AFilter.In(AValue <Dummy> .Field(x => x.Foo), AValueArray.Bind("asd", "qwe")));

            Assert.AreEqual("FILTER x.Foo IN [@var0,@var1]", query.GetExpression());
            Assert.AreEqual("asd", query.GetBindedVars()[0]);
            Assert.AreEqual("qwe", query.GetBindedVars()[1]);
        }
Beispiel #4
0
        public void FunctionMultipleTest()
        {
            AQuery query = _db.Query
                           .Let("x", ANumeric.Coalesce(AValue.Bind(2), AValue.Bind(5)));

            Assert.AreEqual("LET x = NOT_NULL(@var0,@var1)", query.GetExpression());
            Assert.AreEqual(2, query.GetBindedVars()[0]);
            Assert.AreEqual(5, query.GetBindedVars()[1]);
        }
Beispiel #5
0
        public void FunctionSingleTest()
        {
            AQuery query = _db.Query
                           .Let("x", ANumeric.Min(AValueArray.Bind(2, 5, 6)));

            Assert.AreEqual("LET x = MIN([@var0,@var1,@var2])", query.GetExpression());
            Assert.AreEqual(2, query.GetBindedVars()[0]);
            Assert.AreEqual(5, query.GetBindedVars()[1]);
            Assert.AreEqual(6, query.GetBindedVars()[2]);
        }
Beispiel #6
0
        public void MultipleTest()
        {
            AQuery query = _db.Query
                           //.Filter(FilterBuilder<Dummy>.Lt(x => x.Baz, 50))
                           //.Filter(FilterBuilder<Dummy>.Gte(x => x.Bar, 1));
                           .Filter(AFilter.Lt(AValue <Dummy> .Field(x => x.Baz), AValue.Bind(50)))
                           .Filter(AFilter.Gte(AValue <Dummy> .Field(x => x.Bar), AValue.Bind(1)));

            Assert.AreEqual("FILTER x.Baz < @var0 FILTER x.Bar >= @var1", query.GetExpression());
            Assert.AreEqual(50, query.GetBindedVars()[0]);
            Assert.AreEqual(1, query.GetBindedVars()[1]);
        }
Beispiel #7
0
        public void OrTest()
        {
            AQuery query = _db.Query.Filter(
                AFilter.Or(
                    AFilter.Eq(AValue <Dummy> .Field(x => x.Foo), AValue.Bind("asd")),
                    AFilter.Gt(AValue <Dummy> .Field(x => x.Bar), AValue.Bind(1))
                    )
                );

            Assert.AreEqual("FILTER (x.Foo == @var0 OR x.Bar > @var1)", query.GetExpression());
            Assert.AreEqual("asd", query.GetBindedVars()[0]);
            Assert.AreEqual(1, query.GetBindedVars()[1]);
        }
Beispiel #8
0
        public void IfTest()
        {
            AQuery query = _db.Query
                           .Let("x", AValue.If(
                                    AFilter.Eq(AValue <Dummy> .Field(x => x.Bar), AValue.Bind(2)),
                                    AValue <Dummy> .Field(x => x.Baz),
                                    AValue.Bind(0)
                                    ));

            Assert.AreEqual("LET x = (x.Bar == @var0 ? x.Baz : @var1)", query.GetExpression());
            Assert.AreEqual(2, query.GetBindedVars()[0]);
            Assert.AreEqual(0, query.GetBindedVars()[1]);
        }
Beispiel #9
0
        public void MultipleTest()
        {
            AQuery query = _db.Query
                           .Raw("FOR x IN " + TestDocumentCollectionName)
                           .Update <Dummy>(
                "x", TestDocumentCollectionName,
                builder => builder
                .Set(x => x.Foo, AValue.Bind("asdf"))
                .Set(x => x.Id, AValue.Bind("1235"))
                );

            Assert.AreEqual("FOR x IN " + TestDocumentCollectionName + " UPDATE x WITH { Foo:@var0, _id:@var1 } IN " + TestDocumentCollectionName, query.GetExpression());
            Assert.AreEqual("asdf", query.GetBindedVars()[0]);
            Assert.AreEqual("1235", query.GetBindedVars()[1]);
        }
Beispiel #10
0
        public void SimpleTest()
        {
            //AQuery query = _db.Query.Filter(FilterBuilder<Dummy>.Eq( x => x.Foo, "asd"));
            AQuery query = _db.Query.Filter(AFilter.Eq(AValue <Dummy> .Field(x => x.Foo), AValue.Bind("asd")));

            Assert.AreEqual("FILTER x.Foo == @var0", query.GetExpression());
            Assert.AreEqual("asd", query.GetBindedVars()[0]);
        }
Beispiel #11
0
        public void ArrayFunctionTest()
        {
            AQuery query = _db.Query
                           .Let("x", AArray.Minus(
                                    AValue.Bind(new List <int>()
            {
                2, 5, 6
            }),
                                    AValue.Bind(new List <int>()
            {
                4, 5, 6
            })
                                    ));

            Assert.AreEqual("LET x = MINUS(@var0,@var1)", query.GetExpression());
            Assert.AreEqual(typeof(List <int>), query.GetBindedVars()[0].GetType());
            Assert.AreEqual(typeof(List <int>), query.GetBindedVars()[1].GetType());
        }
Beispiel #12
0
        public void UpsertTest()
        {
            var search = new Dummy()
            {
                Foo = "asd"
            };
            var insert = new Dummy()
            {
                Foo = "asd",
                Bar = 10
            };

            AQuery query = _db.Query
                           .Upsert <Dummy>("collection", AValue.Bind(search), AValue.Bind(insert), builder => builder.Inc(x => x.Bar, AValue.Bind(1)));

            Assert.AreEqual("UPSERT @var0 INSERT @var1 UPDATE { Bar:x.Bar+@var2 } IN collection", query.GetExpression());
            Assert.AreEqual(search, query.GetBindedVars()[0]);
            Assert.AreEqual(insert, query.GetBindedVars()[1]);
            Assert.AreEqual(1, query.GetBindedVars()[2]);
        }
Beispiel #13
0
        public void ObjectDynamicTest()
        {
            AQuery query = _db.Query
                           .Let("x", AValue.Object(
                                    (
                                        "_id",
                                        AValue.Bind("asdf")
                                    ),
                                    (
                                        "Foo",
                                        AValue <Dummy> .Field(z => z.Foo)
                                    ),
                                    (
                                        "lalalal",
                                        AValue.Bind(10)
                                    )
                                    ));

            Assert.AreEqual("LET x = {\"_id\":@var0,\"Foo\":z.Foo,\"lalalal\":@var1}", query.GetExpression());
            Assert.AreEqual(typeof(string), query.GetBindedVars()[0].GetType());
            Assert.AreEqual(typeof(int), query.GetBindedVars()[1].GetType());
        }
Beispiel #14
0
        public void IncTest()
        {
            AQuery query = _db.Query
                           .Raw("FOR x IN " + TestDocumentCollectionName)
                           .Update <Dummy>(
                "x", TestDocumentCollectionName,
                builder => builder
                .Inc(x => x.Bar, AValue.Bind(38))
                );

            Assert.AreEqual("FOR x IN " + TestDocumentCollectionName + " UPDATE x WITH { Bar:x.Bar+@var0 } IN " + TestDocumentCollectionName, query.GetExpression());
            Assert.AreEqual(38, query.GetBindedVars()[0]);
        }
Beispiel #15
0
        public void InsertTest()
        {
            var insert = new Dummy()
            {
                Foo = "asd",
                Bar = 10
            };

            AQuery query = _db.Query
                           .Insert("collection", AValue.Bind(insert));

            Assert.AreEqual("INSERT @var0 INTO collection", query.GetExpression());
            Assert.AreEqual(insert, query.GetBindedVars()[0]);
        }
Beispiel #16
0
        public void OptionsTest()
        {
            AQuery query = _db.Query
                           .Raw("FOR x IN " + TestDocumentCollectionName)
                           .Update <Dummy>(
                "x", TestDocumentCollectionName,
                builder => builder
                .Set(x => x.Foo, AValue.Bind("asdf")),
                false
                );

            Assert.AreEqual("FOR x IN " + TestDocumentCollectionName + " UPDATE x WITH { Foo:@var0 } IN " + TestDocumentCollectionName + " OPTIONS {mergeObjects:false}", query.GetExpression());
            Assert.AreEqual("asdf", query.GetBindedVars()[0]);
        }
Beispiel #17
0
        public void PredefinedTest()
        {
            UpdateBuilder <Dummy> definition = new UpdateBuilder <Dummy>()
                                               .Set(x => x.Foo, AValue.Bind("asdf"));

            AQuery query = _db.Query
                           .Raw("FOR x IN " + TestDocumentCollectionName)
                           .Update <Dummy>(
                "x", TestDocumentCollectionName,
                definition
                );

            Assert.AreEqual("FOR x IN " + TestDocumentCollectionName + " UPDATE x WITH { Foo:@var0 } IN " + TestDocumentCollectionName, query.GetExpression());
            Assert.AreEqual("asdf", query.GetBindedVars()[0]);
        }
Beispiel #18
0
        public void SubElementIncTest()
        {
            AQuery query = _db.Query
                           .Raw("FOR x IN " + TestDocumentCollectionName)
                           .Update <Complex>(
                "x", TestDocumentCollectionName,
                builderComplex => builderComplex
                .SetPartial(
                    x => x.dum,
                    builderDummy => builderDummy
                    .Inc(x => x.Bar, AValue.Bind(38))
                    )
                );

            Assert.AreEqual("FOR x IN " + TestDocumentCollectionName + " UPDATE x WITH { dum:MERGE(x.dum,{ Bar:x.dum.Bar+@var0 }) } IN " + TestDocumentCollectionName, query.GetExpression());
            Assert.AreEqual(38, query.GetBindedVars()[0]);
        }
Beispiel #19
0
        public void InsertWithOptionsTest()
        {
            var insert = new Dummy()
            {
                Foo = "asd",
                Bar = 10
            };

            var options = new AqlInsert.Options()
            {
                IgnoreErrors = true,
                Overwrite    = OverwriteMode.Replace
            };

            AQuery query = _db.Query
                           .Insert("collection", AValue.Bind(insert), options);

            Assert.AreEqual("INSERT @var0 INTO collection OPTIONS {ignoreErrors:true, overwrite:true, overwriteMode:\"replace\"}", query.GetExpression());
            Assert.AreEqual(insert, query.GetBindedVars()[0]);
        }
Beispiel #20
0
 public object[] GetBindedVars()
 {
     return(_query.GetBindedVars());
 }
Beispiel #21
0
        public void TypeTest()
        {
            Type dummyType = typeof(Dummy);

            //AQuery query = _db.Query.Filter(FilterBuilder<Dummy>.Eq(x => x.GetType(), dummyType));
            AQuery query = _db.Query.Filter(AFilter.Eq(AValue <Dummy> .Field(x => x.GetType()), AValue.Bind(dummyType)));

            Assert.AreEqual("FILTER x.$type == @var0", query.GetExpression());
            Assert.AreEqual(dummyType.FullName + ", " + dummyType.Assembly.GetName().Name, query.GetBindedVars()[0]);
        }