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