diff --git a/juniper/src/validation/rules/variables_in_allowed_position.rs b/juniper/src/validation/rules/variables_in_allowed_position.rs index e751d5ea5..61530876f 100644 --- a/juniper/src/validation/rules/variables_in_allowed_position.rs +++ b/juniper/src/validation/rules/variables_in_allowed_position.rs @@ -202,14 +202,14 @@ mod tests { fn boolean_into_boolean() { expect_passes_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - query Query($booleanArg: Boolean) - { - complicatedArgs { - booleanArgField(booleanArg: $booleanArg) + query Query($booleanArg: Boolean) { + complicatedArgs { + booleanArgField(booleanArg: $booleanArg) + } } - } - "#, + "#, ); } @@ -217,32 +217,32 @@ mod tests { fn boolean_into_boolean_within_fragment() { expect_passes_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - fragment booleanArgFrag on ComplicatedArgs { - booleanArgField(booleanArg: $booleanArg) - } - query Query($booleanArg: Boolean) - { - complicatedArgs { - ...booleanArgFrag + fragment booleanArgFrag on ComplicatedArgs { + booleanArgField(booleanArg: $booleanArg) + } + query Query($booleanArg: Boolean) { + complicatedArgs { + ...booleanArgFrag + } } - } "#, ); expect_passes_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - query Query($booleanArg: Boolean) - { - complicatedArgs { - ...booleanArgFrag + query Query($booleanArg: Boolean) { + complicatedArgs { + ...booleanArgFrag + } } - } - fragment booleanArgFrag on ComplicatedArgs { - booleanArgField(booleanArg: $booleanArg) - } - "#, + fragment booleanArgFrag on ComplicatedArgs { + booleanArgField(booleanArg: $booleanArg) + } + "#, ); } @@ -250,14 +250,14 @@ mod tests { fn non_null_boolean_into_boolean() { expect_passes_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - query Query($nonNullBooleanArg: Boolean!) - { - complicatedArgs { - booleanArgField(booleanArg: $nonNullBooleanArg) + query Query($nonNullBooleanArg: Boolean!) { + complicatedArgs { + booleanArgField(booleanArg: $nonNullBooleanArg) + } } - } - "#, + "#, ); } @@ -265,33 +265,48 @@ mod tests { fn non_null_boolean_into_boolean_within_fragment() { expect_passes_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - fragment booleanArgFrag on ComplicatedArgs { - booleanArgField(booleanArg: $nonNullBooleanArg) - } - - query Query($nonNullBooleanArg: Boolean!) - { - complicatedArgs { - ...booleanArgFrag + fragment booleanArgFrag on ComplicatedArgs { + booleanArgField(booleanArg: $nonNullBooleanArg) } - } - "#, + + query Query($nonNullBooleanArg: Boolean!) { + complicatedArgs { + ...booleanArgFrag + } + } + "#, ); } #[test] - fn int_into_non_null_int_with_default() { + fn int_into_non_null_int_with_arg_default() { expect_passes_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - query Query($intArg: Int = 1) - { - complicatedArgs { - nonNullIntArgField(nonNullIntArg: $intArg) + query Query($intArg: Int) { + complicatedArgs { + nonNullIntArgFieldWithDefault(nonNullIntArg: $intArg) + } } - } - "#, + "#, + ); + } + + #[test] + fn int_into_non_null_int_with_var_default() { + expect_passes_rule::<_, _, DefaultScalarValue>( + factory, + // language=GraphQL + r#" + query Query($intArg: Int = 1) { + complicatedArgs { + nonNullIntArgField(nonNullIntArg: $intArg) + } + } + "#, ); } @@ -299,14 +314,14 @@ mod tests { fn string_list_into_string_list() { expect_passes_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - query Query($stringListVar: [String]) - { - complicatedArgs { - stringListArgField(stringListArg: $stringListVar) + query Query($stringListVar: [String]) { + complicatedArgs { + stringListArgField(stringListArg: $stringListVar) + } } - } - "#, + "#, ); } @@ -314,14 +329,14 @@ mod tests { fn non_null_string_list_into_string_list() { expect_passes_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - query Query($stringListVar: [String!]) - { - complicatedArgs { - stringListArgField(stringListArg: $stringListVar) + query Query($stringListVar: [String!]) { + complicatedArgs { + stringListArgField(stringListArg: $stringListVar) + } } - } - "#, + "#, ); } @@ -329,14 +344,14 @@ mod tests { fn string_into_string_list_in_item_position() { expect_passes_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - query Query($stringVar: String) - { - complicatedArgs { - stringListArgField(stringListArg: [$stringVar]) + query Query($stringVar: String) { + complicatedArgs { + stringListArgField(stringListArg: [$stringVar]) + } } - } - "#, + "#, ); } @@ -344,14 +359,14 @@ mod tests { fn non_null_string_into_string_list_in_item_position() { expect_passes_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - query Query($stringVar: String!) - { - complicatedArgs { - stringListArgField(stringListArg: [$stringVar]) + query Query($stringVar: String!) { + complicatedArgs { + stringListArgField(stringListArg: [$stringVar]) + } } - } - "#, + "#, ); } @@ -359,14 +374,14 @@ mod tests { fn complex_input_into_complex_input() { expect_passes_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - query Query($complexVar: ComplexInput) - { - complicatedArgs { - complexArgField(complexArg: $complexVar) + query Query($complexVar: ComplexInput) { + complicatedArgs { + complexArgField(complexArg: $complexVar) + } } - } - "#, + "#, ); } @@ -374,14 +389,14 @@ mod tests { fn complex_input_into_complex_input_in_field_position() { expect_passes_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - query Query($boolVar: Boolean = false) - { - complicatedArgs { - complexArgField(complexArg: {requiredArg: $boolVar}) + query Query($boolVar: Boolean = false) { + complicatedArgs { + complexArgField(complexArg: {requiredArg: $boolVar}) + } } - } - "#, + "#, ); } @@ -389,12 +404,12 @@ mod tests { fn non_null_boolean_into_non_null_boolean_in_directive() { expect_passes_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - query Query($boolVar: Boolean!) - { - dog @include(if: $boolVar) - } - "#, + query Query($boolVar: Boolean!) { + dog @include(if: $boolVar) + } + "#, ); } @@ -402,12 +417,12 @@ mod tests { fn boolean_in_non_null_in_directive_with_default() { expect_passes_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - query Query($boolVar: Boolean = false) - { - dog @include(if: $boolVar) - } - "#, + query Query($boolVar: Boolean = false) { + dog @include(if: $boolVar) + } + "#, ); } @@ -415,18 +430,19 @@ mod tests { fn int_into_non_null_int() { expect_fails_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - query Query($intArg: Int) { - complicatedArgs { - nonNullIntArgField(nonNullIntArg: $intArg) + query Query($intArg: Int) { + complicatedArgs { + nonNullIntArgField(nonNullIntArg: $intArg) + } } - } - "#, + "#, &[RuleError::new( &error_message("intArg", "Int", "Int!"), &[ - SourcePosition::new(23, 1, 22), - SourcePosition::new(117, 3, 48), + SourcePosition::new(25, 1, 24), + SourcePosition::new(129, 3, 54), ], )], ); @@ -436,22 +452,22 @@ mod tests { fn int_into_non_null_int_within_fragment() { expect_fails_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - fragment nonNullIntArgFieldFrag on ComplicatedArgs { - nonNullIntArgField(nonNullIntArg: $intArg) - } - - query Query($intArg: Int) { - complicatedArgs { - ...nonNullIntArgFieldFrag + fragment nonNullIntArgFieldFrag on ComplicatedArgs { + nonNullIntArgField(nonNullIntArg: $intArg) } - } - "#, + query Query($intArg: Int) { + complicatedArgs { + ...nonNullIntArgFieldFrag + } + } + "#, &[RuleError::new( &error_message("intArg", "Int", "Int!"), &[ - SourcePosition::new(154, 5, 22), - SourcePosition::new(110, 2, 46), + SourcePosition::new(163, 4, 24), + SourcePosition::new(116, 2, 50), ], )], ); @@ -461,26 +477,25 @@ mod tests { fn int_into_non_null_int_within_nested_fragment() { expect_fails_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - fragment outerFrag on ComplicatedArgs { - ...nonNullIntArgFieldFrag - } - - fragment nonNullIntArgFieldFrag on ComplicatedArgs { - nonNullIntArgField(nonNullIntArg: $intArg) - } - - query Query($intArg: Int) { - complicatedArgs { - ...outerFrag + fragment outerFrag on ComplicatedArgs { + ...nonNullIntArgFieldFrag } - } - "#, + fragment nonNullIntArgFieldFrag on ComplicatedArgs { + nonNullIntArgField(nonNullIntArg: $intArg) + } + query Query($intArg: Int) { + complicatedArgs { + ...outerFrag + } + } + "#, &[RuleError::new( &error_message("intArg", "Int", "Int!"), &[ - SourcePosition::new(255, 9, 22), - SourcePosition::new(211, 6, 46), + SourcePosition::new(271, 7, 24), + SourcePosition::new(224, 5, 50), ], )], ); @@ -490,18 +505,19 @@ mod tests { fn string_over_boolean() { expect_fails_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - query Query($stringVar: String) { - complicatedArgs { - booleanArgField(booleanArg: $stringVar) + query Query($stringVar: String) { + complicatedArgs { + booleanArgField(booleanArg: $stringVar) + } } - } - "#, + "#, &[RuleError::new( &error_message("stringVar", "String", "Boolean"), &[ - SourcePosition::new(23, 1, 22), - SourcePosition::new(117, 3, 42), + SourcePosition::new(25, 1, 24), + SourcePosition::new(129, 3, 48), ], )], ); @@ -511,18 +527,19 @@ mod tests { fn string_into_string_list() { expect_fails_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - query Query($stringVar: String) { - complicatedArgs { - stringListArgField(stringListArg: $stringVar) + query Query($stringVar: String) { + complicatedArgs { + stringListArgField(stringListArg: $stringVar) + } } - } - "#, + "#, &[RuleError::new( &error_message("stringVar", "String", "[String]"), &[ - SourcePosition::new(23, 1, 22), - SourcePosition::new(123, 3, 48), + SourcePosition::new(25, 1, 24), + SourcePosition::new(135, 3, 54), ], )], ); @@ -532,16 +549,17 @@ mod tests { fn boolean_into_non_null_boolean_in_directive() { expect_fails_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - query Query($boolVar: Boolean) { - dog @include(if: $boolVar) - } - "#, + query Query($boolVar: Boolean) { + dog @include(if: $boolVar) + } + "#, &[RuleError::new( &error_message("boolVar", "Boolean", "Boolean!"), &[ - SourcePosition::new(23, 1, 22), - SourcePosition::new(73, 2, 29), + SourcePosition::new(25, 1, 24), + SourcePosition::new(80, 2, 34), ], )], ); @@ -551,16 +569,17 @@ mod tests { fn string_into_non_null_boolean_in_directive() { expect_fails_rule::<_, _, DefaultScalarValue>( factory, + // language=GraphQL r#" - query Query($stringVar: String) { - dog @include(if: $stringVar) - } - "#, + query Query($stringVar: String) { + dog @include(if: $stringVar) + } + "#, &[RuleError::new( &error_message("stringVar", "String", "Boolean!"), &[ - SourcePosition::new(23, 1, 22), - SourcePosition::new(74, 2, 29), + SourcePosition::new(25, 1, 24), + SourcePosition::new(80, 2, 33), ], )], ); diff --git a/juniper/src/validation/test_harness.rs b/juniper/src/validation/test_harness.rs index dcf765017..7e13a0470 100644 --- a/juniper/src/validation/test_harness.rs +++ b/juniper/src/validation/test_harness.rs @@ -660,6 +660,13 @@ where registry .field::>(arcstr::literal!("nonNullIntArgField"), i) .argument(registry.arg::(arcstr::literal!("nonNullIntArg"), i)), + registry + .field::>(arcstr::literal!("nonNullIntArgFieldWithDefault"), i) + .argument(registry.arg_with_default::( + arcstr::literal!("nonNullIntArg"), + &3, + i, + )), registry .field::>(arcstr::literal!("stringArgField"), i) .argument(registry.arg::>(arcstr::literal!("stringArg"), i)),