コード例 #1
0
 public static void Map(
     ClientModel model,
     IMapperContext context)
 {
     context.Register(
         new DependencyInjectionDescriptor(
             context.ClientName,
             context.Namespace,
             EntityTypeDescriptorMapper.CollectEntityTypes(model, context).ToList(),
             context.Operations.ToList(),
             TypeDescriptorMapper
             .CollectTypeDescriptors(model, context)
             .Select(x => x.Item2)
             .ToList(),
             EnumDescriptorMapper.CollectEnumDescriptors(model, context).ToList()));
 }
コード例 #2
0
        public void MapDataTypeDescriptors_DataInterfaceType()
        {
            // arrange
            var clientModel = CreateClientModelAsync(
                "interface.query.graphql",
                "interface.schema.graphql");

            // act
            var context = new MapperContext(
                "Foo.Bar",
                "FooClient");

            TypeDescriptorMapper.Map(
                clientModel,
                context);
            EntityTypeDescriptorMapper.Map(
                clientModel,
                context);
            DataTypeDescriptorMapper.Map(
                clientModel,
                context);

            // assert
            Assert.Collection(
                context.DataTypes.OrderBy(t => t.RuntimeType.ToString()),
                type =>
            {
                Assert.Equal(
                    "BookData",
                    type.RuntimeType.Name);
                Assert.Equal(
                    "Foo.Bar.State",
                    type.RuntimeType.NamespaceWithoutGlobal);

                Assert.Collection(
                    type.Properties.OrderBy(p => p.Name),
                    property =>
                {
                    Assert.Equal(
                        "Isbn",
                        property.Name);
                },
                    property =>
                {
                    Assert.Equal(
                        "Title",
                        property.Name);
                });
            },
                type =>
            {
                Assert.Equal(
                    "IPrintData",
                    type.RuntimeType.Name);
                Assert.Equal(
                    "Foo.Bar.State",
                    type.RuntimeType.NamespaceWithoutGlobal);

                Assert.Empty(type.Properties);
            },
                type =>
            {
                Assert.Equal(
                    "ISearchResultData",
                    type.RuntimeType.Name);
                Assert.Equal(
                    "Foo.Bar.State",
                    type.RuntimeType.NamespaceWithoutGlobal);

                Assert.Empty(type.Properties);
            },
                type =>
            {
                Assert.Equal(
                    "MagazineData",
                    type.RuntimeType.Name);
                Assert.Equal(
                    "Foo.Bar.State",
                    type.RuntimeType.NamespaceWithoutGlobal);

                Assert.Collection(
                    type.Properties.OrderBy(p => p.Name),
                    property =>
                {
                    Assert.Equal(
                        "CoverImageUrl",
                        property.Name);
                },
                    property =>
                {
                    Assert.Equal(
                        "Isbn",
                        property.Name);
                });
            });
        }
コード例 #3
0
        public void MapDataTypeDescriptors_DataUnionType()
        {
            // arrange
            var clientModel =
                CreateClientModelAsync("union.query3.graphql", "union.schema.graphql");

            // act
            var context = new MapperContext(
                "Foo.Bar",
                "FooClient",
                new Sha1DocumentHashProvider(),
                RequestStrategyGen.Default,
                new[]
            {
                TransportProfile.Default
            });

            TypeDescriptorMapper.Map(
                clientModel,
                context);
            EntityTypeDescriptorMapper.Map(
                clientModel,
                context);
            DataTypeDescriptorMapper.Map(
                clientModel,
                context);

            // assert

            Assert.Collection(
                context.DataTypes.OrderBy(t => t.RuntimeType.ToString()),
                type =>
            {
                Assert.Equal(
                    "AuthorData",
                    type.RuntimeType.Name);
                Assert.Equal(
                    "Foo.Bar.State",
                    type.RuntimeType.NamespaceWithoutGlobal);

                Assert.Collection(
                    type.Properties.OrderBy(p => p.Name),
                    property =>
                {
                    Assert.Equal(
                        "Genres",
                        property.Name);
                },
                    property =>
                {
                    Assert.Equal(
                        "Name",
                        property.Name);
                });
            },
                type =>
            {
                Assert.Equal(
                    "BookData",
                    type.RuntimeType.Name);
                Assert.Equal(
                    "Foo.Bar.State",
                    type.RuntimeType.NamespaceWithoutGlobal);

                Assert.Collection(
                    type.Properties.OrderBy(p => p.Name),
                    property =>
                {
                    Assert.Equal(
                        "Isbn",
                        property.Name);
                },
                    property =>
                {
                    Assert.Equal(
                        "Title",
                        property.Name);
                });
            },
                type =>
            {
                Assert.Equal(
                    "ISearchResultData",
                    type.RuntimeType.Name);
                Assert.Equal(
                    "Foo.Bar.State",
                    type.RuntimeType.NamespaceWithoutGlobal);

                Assert.Empty(type.Properties);
            });
        }
コード例 #4
0
        public async Task MapDataTypeDescriptors_DataUnionType()
        {
            // arrange
            var clientModel = CreateClientModelAsync("union.query3.graphql", "union.schema.graphql");

            // act
            var context = new MapperContext(
                "Foo.Bar",
                "FooClient");

            TypeDescriptorMapper.Map(
                clientModel,
                context);
            EntityTypeDescriptorMapper.Map(
                clientModel,
                context);
            DataTypeDescriptorMapper.Map(
                clientModel,
                context);

            // assert

            Assert.Collection(
                context.DataTypes.OrderBy(t => t.Name),
                type =>
            {
                Assert.Equal(
                    "AuthorData",
                    type.Name);
                Assert.Equal(
                    "Foo.Bar.State",
                    type.Namespace);

                Assert.Collection(
                    type.Properties.OrderBy(p => p.Name),
                    property =>
                {
                    Assert.Equal(
                        "Genres",
                        property.Name);
                },
                    property =>
                {
                    Assert.Equal(
                        "Name",
                        property.Name);
                });
            },
                type =>
            {
                Assert.Equal(
                    "BookData",
                    type.Name);
                Assert.Equal(
                    "Foo.Bar.State",
                    type.Namespace);

                Assert.Collection(
                    type.Properties.OrderBy(p => p.Name),
                    property =>
                {
                    Assert.Equal(
                        "Isbn",
                        property.Name);
                },
                    property =>
                {
                    Assert.Equal(
                        "Title",
                        property.Name);
                });
            },
                type =>
            {
                Assert.Equal(
                    "ISearchResultData",
                    type.Name);
                Assert.Equal(
                    "Foo.Bar.State",
                    type.Namespace);

                Assert.Empty(type.Properties);
            });
        }