public void CreateUnion() { // arrange DocumentNode document = Parser.Default.Parse( "union X = A | B"); UnionTypeDefinitionNode unionTypeDefinition = document .Definitions.OfType <UnionTypeDefinitionNode>().First(); var context = new SchemaContext(); var configuration = new SchemaConfiguration( context.RegisterServiceProvider, context.Types); configuration.RegisterType(new ObjectType(d => d.Name("A").Field("a").Type <StringType>())); configuration.RegisterType(new ObjectType(d => d.Name("B").Field("a").Type <StringType>())); // act var factory = new UnionTypeFactory(); UnionType unionType = factory.Create(unionTypeDefinition); configuration.RegisterType(unionType); var typeFinalizer = new TypeFinalizer(configuration); typeFinalizer.FinalizeTypes(context, null); // assert Assert.Equal("X", unionType.Name); Assert.Equal(2, unionType.Types.Count); Assert.Equal("A", unionType.Types.First().Key); Assert.Equal("B", unionType.Types.Last().Key); }
public void CreateUnion() { // arrange var objectTypeA = new ObjectType(d => d.Name("A").Field("a").Type <StringType>()); var objectTypeB = new ObjectType(d => d.Name("B").Field("a").Type <StringType>()); UnionTypeDefinitionNode typeDefinition = CreateTypeDefinition <UnionTypeDefinitionNode>( "union X = A | B"); // act var factory = new UnionTypeFactory(); UnionType type = factory.Create(typeDefinition); CompleteType(type, s => { s.Types.RegisterType(objectTypeA); s.Types.RegisterType(objectTypeB); }); // assert Assert.Equal("X", type.Name); Assert.Equal(2, type.Types.Count); Assert.Equal("A", type.Types.First().Key); Assert.Equal("B", type.Types.Last().Key); }