public async Task MapDataTypeDescriptors_SimpleCase() { // arrange ClientModel clientModel = await CreateClientModelAsync( @" query GetHeroNodes { hero(episode: NEW_HOPE) { friends { nodes { name } } } } query GetHeroEdges { hero(episode: NEW_HOPE) { friends { edges { cursor } } } }"); // act var context = new MapperContext( "Foo.Bar", "FooClient"); TypeDescriptorMapper.Map( clientModel, context); DataTypeDescriptorMapper.Map( clientModel, context); // assert Assert.Collection( context.DataTypes.OrderBy(t => t.RuntimeType.ToString()), type => { Assert.Equal( "CharacterConnectionData", type.RuntimeType.Name); Assert.Equal( "Foo.Bar.State", type.RuntimeType.NamespaceWithoutGlobal); Assert.Collection( type.Properties, property => { Assert.Equal( "Nodes", property.Name); Assert.Equal( "IGetHeroNodes_Hero_Friends_Nodes", property.Type.GetRuntimeType().Name); }, property => { Assert.Equal( "Edges", property.Name); Assert.Equal( "IGetHeroEdges_Hero_Friends_Edges", property.Type.GetRuntimeType().Name); }); }, type => { Assert.Equal( "CharacterEdgeData", type.RuntimeType.Name); Assert.Equal( "Foo.Bar.State", type.RuntimeType.NamespaceWithoutGlobal); Assert.Collection( type.Properties, property => { Assert.Equal( "Cursor", property.Name); Assert.Equal( "String", property.Type.GetRuntimeType().Name); }); }); }
public void 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.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 void MapDataTypeDescriptors_DataInterfaceType() { // arrange var clientModel = CreateClientModelAsync( "interface.query.graphql", "interface.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( "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 async Task MapClientTypeDescriptors() { // arrange ClientModel clientModel = await CreateClientModelAsync( @"query GetHero { hero(episode: NEW_HOPE) { name } }"); // act var context = new MapperContext( "Foo.Bar", "FooClient", new Sha1DocumentHashProvider(), RequestStrategyGen.Default, new[] { TransportProfile.Default }); TypeDescriptorMapper.Map(clientModel, context); // assert Assert.Collection( context.Types.OfType <ComplexTypeDescriptor>().OrderBy(t => t.Name), type => { Assert.Equal("IGetHero_Hero", type.RuntimeType.Name); Assert.Equal("Foo.Bar", type.RuntimeType.NamespaceWithoutGlobal); Assert.True(type.IsEntityType()); Assert.Collection( type.Properties, property => { Assert.Equal("Name", property.Name); Assert.Equal("String", property.Type.Name); Assert.False(property.Type.IsNullableType()); }); }, type => { Assert.Equal("GetHero_Hero_Droid", type.RuntimeType.Name); Assert.Equal("Foo.Bar", type.RuntimeType.NamespaceWithoutGlobal); Assert.Collection( type.Properties, property => { Assert.Equal("Name", property.Name); Assert.Equal("String", property.Type.Name); Assert.False(property.Type.IsNullableType()); }); }, type => { Assert.Equal("IGetHero_Hero_Droid", type.RuntimeType.Name); Assert.Equal("Foo.Bar", type.RuntimeType.NamespaceWithoutGlobal); Assert.True(type.IsEntityType()); }, type => { Assert.Equal("GetHero_Hero_Human", type.RuntimeType.Name); Assert.Equal("Foo.Bar", type.RuntimeType.NamespaceWithoutGlobal); Assert.Collection( type.Properties, property => { Assert.Equal("Name", property.Name); Assert.Equal("String", property.Type.Name); Assert.False(property.Type.IsNullableType()); }); }, type => { Assert.Equal("IGetHero_Hero_Human", type.RuntimeType.Name); Assert.Equal("Foo.Bar", type.RuntimeType.NamespaceWithoutGlobal); Assert.True(type.IsEntityType()); }, type => { Assert.Equal("GetHeroResult", type.RuntimeType.Name); Assert.Equal("Foo.Bar", type.RuntimeType.NamespaceWithoutGlobal); Assert.Collection( type.Properties, property => { Assert.Equal("Hero", property.Name); Assert.Equal("IGetHero_Hero", Assert.IsType <InterfaceTypeDescriptor>(property.Type) .RuntimeType.Name); Assert.True(property.Type.IsNullableType()); }); }, type => { Assert.Equal("IGetHeroResult", type.RuntimeType.Name); Assert.Equal("Foo.Bar", type.RuntimeType.NamespaceWithoutGlobal); Assert.Collection( type.Properties, property => { Assert.Equal("Hero", property.Name); Assert.Equal("IGetHero_Hero", Assert.IsType <InterfaceTypeDescriptor>(property.Type) .RuntimeType.Name); Assert.True(property.Type.IsNullableType()); }); }); }
public async Task 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.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( "IPrintData", type.Name); Assert.Equal( "Foo.Bar.State", type.Namespace); Assert.Empty(type.Properties); }, type => { Assert.Equal( "ISearchResultData", type.Name); Assert.Equal( "Foo.Bar.State", type.Namespace); Assert.Empty(type.Properties); }, type => { Assert.Equal( "MagazineData", type.Name); Assert.Equal( "Foo.Bar.State", type.Namespace); Assert.Collection( type.Properties.OrderBy(p => p.Name), property => { Assert.Equal( "CoverImageUrl", property.Name); }, property => { Assert.Equal( "Isbn", property.Name); }); }); }
public async Task MapClientTypeDescriptors() { // arrange ClientModel clientModel = await CreateClientModelAsync( @"query GetHero { hero(episode: NEW_HOPE) { name } }"); // act var context = new MapperContext("Foo.Bar", "FooClient"); TypeDescriptorMapper.Map(clientModel, context); // assert Assert.Collection( context.Types.OrderBy(t => t.Name), type => { Assert.Equal("GetHero_Hero_Droid", type.Name); Assert.Equal("Foo.Bar", type.Namespace); Assert.Collection( type.Properties, property => { Assert.Equal("Name", property.Name); Assert.Equal("String", property.Type.Name); Assert.False(property.Type.IsNullableType()); }); }, type => { Assert.Equal("GetHero_Hero_Human", type.Name); Assert.Equal("Foo.Bar", type.Namespace); Assert.Collection( type.Properties, property => { Assert.Equal("Name", property.Name); Assert.Equal("String", property.Type.Name); Assert.False(property.Type.IsNullableType()); }); }, type => { Assert.Equal("GetHeroResult", type.Name); Assert.Equal("Foo.Bar", type.Namespace); Assert.Collection( type.Properties, property => { Assert.Equal("Hero", property.Name); Assert.Equal("IGetHero_Hero", property.Type.Name); Assert.True(property.Type.IsNullableType()); }); }, type => { Assert.Equal("IGetHero_Hero", type.Name); Assert.Equal("Foo.Bar", type.Namespace); Assert.True(type.IsEntityType()); Assert.Collection( type.Properties, property => { Assert.Equal("Name", property.Name); Assert.Equal("String", property.Type.Name); Assert.False(property.Type.IsNullableType()); }); }, type => { Assert.Equal("IGetHero_Hero_Droid", type.Name); Assert.Equal("Foo.Bar", type.Namespace); Assert.True(type.IsEntityType()); }, type => { Assert.Equal("IGetHero_Hero_Human", type.Name); Assert.Equal("Foo.Bar", type.Namespace); Assert.True(type.IsEntityType()); }, type => { Assert.Equal("IGetHeroResult", type.Name); Assert.Equal("Foo.Bar", type.Namespace); Assert.Collection( type.Properties, property => { Assert.Equal("Hero", property.Name); Assert.Equal("IGetHero_Hero", property.Type.Name); Assert.True(property.Type.IsNullableType()); }); }, type => { Assert.Equal("String", type.Name); Assert.Equal("global::System", type.Namespace); Assert.True(type.IsLeafType()); }); }