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())); }
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); }); }); }
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); }); }
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); }); }