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"); }
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(); }
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(); }
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"); }
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"); }
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); }
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)); }
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)); }
public GremlinQueryLanguageTest() { this._model = GraphModel.FromAssembly(Assembly.GetExecutingAssembly(), typeof(Vertex), typeof(Edge), GraphElementNamingStrategy.Simple); }