Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }