use gurkle::*; #[derive(GraphQLRequest)] #[graphql( query_path = "tests/input_object_variables/input_object_variables_query.graphql", schema_path = "tests/input_object_variables/input_object_variables_schema.graphql", response_derives = "Debug" )] pub struct InputObjectVariablesQuery; #[test] fn input_object_variables_query_variables_struct() { let _ = input_object_variables_query::Variables { msg: Some(input_object_variables_query::Message { content: None, to: Some(input_object_variables_query::Recipient { email: "sarah.connor@example.com".to_string(), category: None, name: Some("Sarah Connor".to_string()), }), }), }; } // Custom scalars type Email = String; #[derive(GraphQLRequest)] #[graphql( query_path = "tests/input_object_variables/input_object_variables_query_defaults.graphql", schema_path = "tests/input_object_variables/input_object_variables_schema.graphql", response_derives = "Debug, PartialEq" )] pub struct DefaultInputObjectVariablesQuery; #[test] fn input_object_variables_default() { let variables = default_input_object_variables_query::Variables { msg: default_input_object_variables_query::Variables::default_msg(), }; let out = serde_json::to_value(&variables).unwrap(); let expected_default = serde_json::json!({ "msg":{"content":null,"to":{"category":null,"email":"rosa.luxemburg@example.com","name":null}} }); assert_eq!(out, expected_default); } #[derive(GraphQLRequest)] #[graphql( query_path = "tests/input_object_variables/input_object_variables_query.graphql", schema_path = "tests/input_object_variables/input_object_variables_schema.graphql", response_derives = "Debug, PartialEq" )] pub struct RecursiveInputQuery; #[test] fn recursive_input_objects_can_be_constructed() { use recursive_input_query::*; let _ = RecursiveInput { head: "hello".to_string(), tail: Box::new(None), }; let _ = RecursiveInput { head: "hi".to_string(), tail: Box::new(Some(RecursiveInput { head: "this is crazy".to_string(), tail: Box::new(None), })), }; } #[derive(GraphQLRequest)] #[graphql( query_path = "tests/input_object_variables/input_object_variables_query.graphql", schema_path = "tests/input_object_variables/input_object_variables_schema.graphql", response_derives = "Debug, PartialEq" )] pub struct IndirectlyRecursiveInputQuery; #[test] fn indirectly_recursive_input_objects_can_be_constructed() { use indirectly_recursive_input_query::*; let _ = IndirectlyRecursiveInput { head: "hello".to_string(), tail: Box::new(None), }; let _ = IndirectlyRecursiveInput { head: "hi".to_string(), tail: Box::new(Some(IndirectlyRecursiveInputTailPart { name: "this is crazy".to_string(), recursed_field: Box::new(None), })), }; }