Beispiel #1
0
        public async Task Nested_Array()
        {
            var queryProviderMock = new Mock <INativeGremlinQueryProvider>();

            queryProviderMock
            .Setup(x => x.Execute(It.IsAny <string>(), It.IsAny <IDictionary <string, object> >()))
            .Returns(AsyncEnumerable.Return(NestedArrayOfLanguagesJson));

            var languages = await queryProviderMock.Object
                            .WithModel(GraphModel.FromAssembly(Assembly.GetExecutingAssembly(), typeof(Vertex), typeof(Edge), GraphElementNamingStrategy.Simple))
                            .WithJsonSupport()
                            .Execute(GremlinQuery.Create("g").Cast <Language[][]>())
                            .First();

            languages.Should().NotBeNull();
            languages.Should().HaveCount(2);
            languages[0].Should().NotBeNull();
            languages[0].Should().HaveCount(1);
            languages[0][0].Id.Should().Be("4da59ae1600f4b60a4e319b70661d8f2");
            languages[0][0].IetfLanguageTag.Should().Be("en");
            languages[1].Should().NotBeNull();
            languages[1].Should().HaveCount(2);
            languages[1][0].Id.Should().Be("bd3530fc586e43a1b43e8fdb2771c8f8");
            languages[1][0].IetfLanguageTag.Should().Be("de");
            languages[1][1].Id.Should().Be("4da59ae1600f4b60a4e319b70661d8f2");
            languages[1][1].IetfLanguageTag.Should().Be("en");
        }
Beispiel #2
0
        public async Task Tuple()
        {
            var queryProviderMock = new Mock <INativeGremlinQueryProvider>();

            queryProviderMock
            .Setup(x => x.Execute(It.IsAny <string>(), It.IsAny <IDictionary <string, object> >()))
            .Returns(AsyncEnumerable.Return(TupleOfUserLanguageJson));

            var jsonQueryProvider = queryProviderMock.Object
                                    .WithModel(GraphModel.FromAssembly(Assembly.GetExecutingAssembly(), typeof(Vertex), typeof(Edge), GraphElementNamingStrategy.Simple))
                                    .WithJsonSupport();

            var tuple = await GremlinQuery
                        .Create("g")
                        .Cast <(User, Language)>()
                        .Execute(jsonQueryProvider)
                        .First();

            tuple.Item1.Id.Should().Be("d13ef3f51c86496eb2c22823601446ad");
            tuple.Item1.Name.Should().Be("Name of some base entity");
            tuple.Item1.Age.Should().Be(36);

            tuple.Item2.Id.Should().Be("be66544bcdaa4ee9990eaf006585153b");
            tuple.Item2.IetfLanguageTag.Should().Be("de");
        }
        public void FromAssembly_includes_abstract_types()
        {
            var model = GraphModel.FromAssembly(Assembly.GetExecutingAssembly(), typeof(Vertex), typeof(Edge), GraphElementNamingStrategy.Simple);

            model.VertexLabels.Keys
            .Should()
            .Contain(typeof(Authority));
        }
        public async Task Empty2()
        {
            var queryProviderMock = new Mock <INativeGremlinQueryProvider <string> >();

            queryProviderMock
            .Setup(x => x.Execute(It.IsAny <string>(), It.IsAny <IDictionary <string, object> >()))
            .Returns(AsyncEnumerable.Return("[]"));

            await queryProviderMock.Object
            .Select(JToken.Parse)
            .WithModel(GraphModel.FromAssembly(Assembly.GetExecutingAssembly(), typeof(Vertex), typeof(Edge), GraphElementNamingStrategy.Simple))
            .WithJsonSupport()
            .Execute(GremlinQuery.Create().V <User>())
            .ToArray();
        }
Beispiel #5
0
        public async Task Scalar()
        {
            var queryProviderMock = new Mock <INativeGremlinQueryProvider>();

            queryProviderMock
            .Setup(x => x.Execute(It.IsAny <string>(), It.IsAny <IDictionary <string, object> >()))
            .Returns(AsyncEnumerable.Return("36"));

            var value = await queryProviderMock.Object
                        .WithModel(GraphModel.FromAssembly(Assembly.GetExecutingAssembly(), typeof(Vertex), typeof(Edge), GraphElementNamingStrategy.Simple))
                        .WithJsonSupport()
                        .Execute(GremlinQuery.Create("g").Cast <int>())
                        .First();

            value.Should().Be(36);
        }
 public DseGraphSchemaTest()
 {
     this._queries = GraphModel
                     .FromAssembly(typeof(Gremlinq.Tests.Vertex).Assembly, typeof(Gremlinq.Tests.Vertex), typeof(Gremlinq.Tests.Edge), GraphElementNamingStrategy.Simple)
                     .ToDseGraphModel()
                     .SecondaryIndex <Authority>(x => x.Name)
                     .SecondaryIndex <TimeFrame>(x => x.StartTime)
                     .MaterializedIndex <Authority>(x => x.PhoneNumber)
                     .SearchIndex <Country>(x => x.CountryCallingCode)
                     .EdgeIndex <User, WorksFor>(x => x.From, EdgeDirection.Out)
                     .AddConnection <Authority, IsDescribedIn, Language>()
                     .AddConnection <User, WorksFor, Authority>()
                     .AddConnection <User, Gremlinq.Tests.Edge, User>()
                     .CreateSchemaQueries()
                     .ToArray();
 }
Beispiel #7
0
        public async Task Country_flat_id_strongly_typed()
        {
            var queryProviderMock = new Mock <INativeGremlinQueryProvider>();

            queryProviderMock
            .Setup(x => x.Execute(It.IsAny <string>(), It.IsAny <IDictionary <string, object> >()))
            .Returns(AsyncEnumerable.Return(CountryWithFlatId));

            var country = await queryProviderMock.Object
                          .WithModel(GraphModel.FromAssembly(Assembly.GetExecutingAssembly(), typeof(Vertex), typeof(Edge), GraphElementNamingStrategy.Simple))
                          .WithJsonSupport()
                          .Execute(GremlinQuery.Create("g").Cast <Country>())
                          .First();

            country.Should().NotBeNull();
            country.Id.Should().Be("ab44e7c49efe4d479d8f147ed48eb02c");
        }
Beispiel #8
0
        public async Task Language_by_vertex_inheritance()
        {
            var queryProviderMock = new Mock <INativeGremlinQueryProvider>();

            queryProviderMock
            .Setup(x => x.Execute(It.IsAny <string>(), It.IsAny <IDictionary <string, object> >()))
            .Returns(AsyncEnumerable.Return(SingleLanguageJson));

            var language = await queryProviderMock.Object
                           .WithModel(GraphModel.FromAssembly(Assembly.GetExecutingAssembly(), typeof(Vertex), typeof(Edge), GraphElementNamingStrategy.Simple))
                           .WithJsonSupport()
                           .Execute(GremlinQuery.Create("g").Cast <Vertex>())
                           .First() as Language;

            language.Should().NotBeNull();
            language?.Id.Should().Be("be66544bcdaa4ee9990eaf006585153b");
            language?.IetfLanguageTag.Should().Be("de");
        }
        public async Task IsDescribedIn_with_Graphson3()
        {
            var queryProviderMock = new Mock <INativeGremlinQueryProvider <string> >();

            queryProviderMock
            .Setup(x => x.Execute(It.IsAny <string>(), It.IsAny <IDictionary <string, object> >()))
            .Returns(AsyncEnumerable.Return("{\"@type\":\"g:List\",\"@value\":[{\"@type\":\"g:Edge\",\"@value\":{\"id\":{\"@type\":\"g:Int64\",\"@value\":23},\"label\":\"IsDescribedIn\",\"inVLabel\":\"Language\",\"outVLabel\":\"Country\",\"inV\":\"x-language:de\",\"outV\":\"ea46d1643c6d4dce9d7ac23fb09fb4b2\",\"properties\":{\"Text\":{\"@type\":\"g:Property\",\"@value\":{\"key\":\"Text\",\"value\":\"Deutschland\"}},\"ActiveFrom\":{\"@type\":\"g:Property\",\"@value\":{\"key\":\"ActiveFrom\",\"value\":{\"@type\":\"g:Int64\",\"@value\":1523879885819}}}}}}]}"));

            var array = await queryProviderMock.Object
                        .Select(JToken.Parse)
                        .WithModel(GraphModel.FromAssembly(Assembly.GetExecutingAssembly(), typeof(Vertex), typeof(Edge), GraphElementNamingStrategy.Simple))
                        .WithJsonSupport()
                        .Execute(GremlinQuery.Create().V <IsDescribedIn>())
                        .ToArray();

            array.Should().HaveCount(1);
            array[0].Text.Should().Be("Deutschland");
        }
        public async Task IsDescribedIn()
        {
            var queryProviderMock = new Mock <INativeGremlinQueryProvider <string> >();

            queryProviderMock
            .Setup(x => x.Execute(It.IsAny <string>(), It.IsAny <IDictionary <string, object> >()))
            .Returns(AsyncEnumerable.Return(SingleIsDescribedIn));

            var array = await queryProviderMock.Object
                        .Select(JToken.Parse)
                        .WithModel(GraphModel.FromAssembly(Assembly.GetExecutingAssembly(), typeof(Vertex), typeof(Edge), GraphElementNamingStrategy.Simple))
                        .WithJsonSupport()
                        .Execute(GremlinQuery.Create().V <IsDescribedIn>())
                        .ToArray();

            array.Should().HaveCount(1);
            array[0].Text.Should().Be("Deutsch");
        }
        public async Task Mixed_Ids()
        {
            var queryProviderMock = new Mock <INativeGremlinQueryProvider <string> >();

            queryProviderMock
            .Setup(x => x.Execute(It.IsAny <string>(), It.IsAny <IDictionary <string, object> >()))
            .Returns(AsyncEnumerable.Return("[ 1, \"id2\" ]"));

            var ids = await queryProviderMock.Object
                      .Select(JToken.Parse)
                      .WithModel(GraphModel.FromAssembly(Assembly.GetExecutingAssembly(), typeof(Vertex), typeof(Edge), GraphElementNamingStrategy.Simple))
                      .WithJsonSupport()
                      .Execute(GremlinQuery.Create().V().Id())
                      .ToArray();

            ids.Should().HaveCount(2);
            ids[0].Should().Be(1);
            ids[1].Should().Be("id2");
        }
Beispiel #12
0
        public async Task TimeFrame_strongly_typed()
        {
            var queryProviderMock = new Mock <INativeGremlinQueryProvider>();

            queryProviderMock
            .Setup(x => x.Execute(It.IsAny <string>(), It.IsAny <IDictionary <string, object> >()))
            .Returns(AsyncEnumerable.Return(SingleTimeFrameJson));

            var timeFrame = await queryProviderMock.Object
                            .WithModel(GraphModel.FromAssembly(Assembly.GetExecutingAssembly(), typeof(Vertex), typeof(Edge), GraphElementNamingStrategy.Simple))
                            .WithJsonSupport()
                            .Execute(GremlinQuery.Create("g").Cast <TimeFrame>())
                            .First();

            timeFrame.Should().NotBeNull();
            timeFrame.Id.Should().Be("15da4cea93114bfc8c6b23847487d97b");
            timeFrame.StartTime.Should().Be(new TimeSpan(6, 0, 0));
            timeFrame.Duration.Should().Be(new TimeSpan(16, 0, 0));
        }
        public async Task DateTime_is_UTC()
        {
            var queryProviderMock = new Mock <INativeGremlinQueryProvider <string> >();

            queryProviderMock
            .Setup(x => x.Execute(It.IsAny <string>(), It.IsAny <IDictionary <string, object> >()))
            .Returns(AsyncEnumerable.Return(SingleCompanyJson));

            var user = await queryProviderMock.Object
                       .Select(JToken.Parse)
                       .WithModel(GraphModel.FromAssembly(Assembly.GetExecutingAssembly(), typeof(Vertex), typeof(Edge), GraphElementNamingStrategy.Simple))
                       .WithJsonSupport()
                       .Execute(GremlinQuery <Company> .Create())
                       .First();

            user.Should().NotBeNull();
            user.Id.Should().Be("d13ef3f51c86496eb2c22823601446ad");
            user.FoundingDate.Kind.Should().Be(DateTimeKind.Utc);
        }
Beispiel #14
0
        public async Task User_without_PhoneNumbers_strongly_typed()
        {
            var queryProviderMock = new Mock <INativeGremlinQueryProvider>();

            queryProviderMock
            .Setup(x => x.Execute(It.IsAny <string>(), It.IsAny <IDictionary <string, object> >()))
            .Returns(AsyncEnumerable.Return(SingleUserWithoutPhoneNumbersJson));

            var user = await queryProviderMock.Object
                       .WithModel(GraphModel.FromAssembly(Assembly.GetExecutingAssembly(), typeof(Vertex), typeof(Edge), GraphElementNamingStrategy.Simple))
                       .WithJsonSupport()
                       .Execute(GremlinQuery.Create("g").Cast <User>())
                       .First();

            user.Should().NotBeNull();
            user.Id.Should().Be("d13ef3f51c86496eb2c22823601446ad");
            user.Age.Should().Be(36);
            user.PhoneNumbers.Should().BeEmpty();
            user.RegistrationDate.Should().Be(new DateTimeOffset(2017, 12, 1, 15, 28, 24, TimeSpan.Zero));
        }
Beispiel #15
0
        public async Task Array()
        {
            var queryProviderMock = new Mock <INativeGremlinQueryProvider>();

            queryProviderMock
            .Setup(x => x.Execute(It.IsAny <string>(), It.IsAny <IDictionary <string, object> >()))
            .Returns(AsyncEnumerable.Return(ArrayOfLanguages));

            var languages = await queryProviderMock.Object
                            .WithModel(GraphModel.FromAssembly(Assembly.GetExecutingAssembly(), typeof(Vertex), typeof(Edge), GraphElementNamingStrategy.Simple))
                            .WithJsonSupport()
                            .Execute(GremlinQuery.Create("g").Cast <Language[]>())
                            .First();

            languages.Should().NotBeNull();
            languages.Should().HaveCount(2);
            languages[0].Id.Should().Be("f788f4dcfe2b48b4a5abf40af17892d7");
            languages[0].IetfLanguageTag.Should().Be("de");
            languages[1].Id.Should().Be("9556f62ca30147568702924c648d494c");
            languages[1].IetfLanguageTag.Should().Be("en");
        }
        public async Task User_lowercase_strongly_typed()
        {
            var queryProviderMock = new Mock <INativeGremlinQueryProvider <string> >();

            queryProviderMock
            .Setup(x => x.Execute(It.IsAny <string>(), It.IsAny <IDictionary <string, object> >()))
            .Returns(AsyncEnumerable.Return(SingleUserLowercasePropertiesJson));

            var user = await queryProviderMock.Object
                       .Select(JToken.Parse)
                       .WithModel(GraphModel.FromAssembly(Assembly.GetExecutingAssembly(), typeof(Vertex), typeof(Edge), GraphElementNamingStrategy.Simple))
                       .WithJsonSupport()
                       .Execute(GremlinQuery <User> .Create())
                       .First();

            user.Should().NotBeNull();
            user.Id.Should().Be("d13ef3f51c86496eb2c22823601446ad");
            user.Age.Should().Be(36);
            user.PhoneNumbers.Should().Equal("+123456", "+234567");
            user.RegistrationDate.Should().Be(new DateTimeOffset(2016, 12, 14, 21, 14, 36, 295, TimeSpan.Zero));
        }
Beispiel #17
0
 public GremlinQueryLanguageTest()
 {
     this._model = GraphModel.FromAssembly(Assembly.GetExecutingAssembly(), typeof(Vertex), typeof(Edge), GraphElementNamingStrategy.Simple);
 }