Objects

Specification

Objects are created as instances of ObjectType.

Creating objects

Objects are created by giving them a unique name and list of fields.

With scalar field

Type of field defines the return value of field when resolved during execution.


        [Fact]
        public void With_scalar_field()
        {
            /* Given */
            _builder.Object("Person", out var person)
                .Connections(connect => connect
                    .Field(person, "name", ScalarType.NonNullString));

            var schema = _builder.Build();

            /* When */
            var name = schema.GetField(person.Name, "name");

            /* Then */
            Assert.Equal("Person", person.Name);
            Assert.NotNull(name);
            Assert.Equal(ScalarType.NonNullString, name.Type);
        }

With scalar field taking a boolean argument

Fields can take arguments which have a name and type.


        [Fact]
        public void With_scalar_field_with_argument()
        {
            /* Given */
            _builder.Object("Person", out var person)
                .Connections(connect => connect
                    .Field(person, "phoneNumber", ScalarType.NonNullString,
                        args: args => args.Arg(
                            "primary", 
                            ScalarType.Boolean, 
                            default, 
                            default
                            )
                        )
                );

            var schema = _builder.Build();

            /* When */
            var phoneNumber = schema.GetField(person.Name, "phoneNumber");

            /* Then */
            Assert.NotNull(phoneNumber);
            Assert.Equal(ScalarType.NonNullString, phoneNumber.Type);
            Assert.Single(phoneNumber.Arguments,
                arg => arg.Key == "primary" && (ScalarType) arg.Value.Type == ScalarType.Boolean);
        }