def test_it_parses_inputs
def test_it_parses_inputs
query_string = %|
{
field(
int: 3,
float: 4.7e-24,
bool: false,
string: "☀︎🏆 \\b \\f \\n \\r \\t \\" \u00b6 \\u00b6 / \\/",
enum: ENUM_NAME,
array: [7, 8, 9]
object: {a: [1,2,3], b: {c: "4"}}
unicode_bom: "\xef\xbb\xbfquery"
keywordEnum: on
nullValue: null
nullValueInObject: {a: null, b: "b"}
nullValueInArray: ["a", null, "b"]
)
}
|
document = parse(query_string)
inputs = document.definitions.first.selections.first.arguments
assert_equal 3, inputs[0].value, "Integers"
assert_equal 0.47e-23, inputs[1].value, "Floats"
assert_equal false, inputs[2].value, "Booleans"
assert_equal %|☀︎🏆 \b \f \n \r \t " ¶ ¶ / /|, inputs[3].value, "Strings"
assert_instance_of GraphQL::Language::Nodes::Enum, inputs[4].value
assert_equal "ENUM_NAME", inputs[4].value.name, "Enums"
assert_equal [7,8,9], inputs[5].value, "Lists"
obj = inputs[6].value
assert_equal "a", obj.arguments[0].name
assert_equal [1,2,3], obj.arguments[0].value
assert_equal "b", obj.arguments[1].name
assert_equal "c", obj.arguments[1].value.arguments[0].name
assert_equal "4", obj.arguments[1].value.arguments[0].value
assert_equal %|\xef\xbb\xbfquery|, inputs[7].value, "Unicode BOM"
assert_equal "on", inputs[8].value.name, "Enum value 'on'"
assert_instance_of GraphQL::Language::Nodes::NullValue, inputs[9].value
args = inputs[10].value.arguments
assert_instance_of GraphQL::Language::Nodes::NullValue, args.find{ |arg| arg.name == 'a' }.value
assert_equal 'b', args.find{ |arg| arg.name == 'b' }.value
values = inputs[11].value
assert_equal 'a', values[0]
assert_instance_of GraphQL::Language::Nodes::NullValue, values[1]
assert_equal 'b', values[2]
end