test_that("5.7.1 - Variable Uniqueness", {
"
query houseTrainedQuery($atOtherHomes: Boolean, $atOtherHomes: Boolean) {
dog {
isHousetrained(atOtherHomes: $atOtherHomes)
}
}
" %>%
expect_err("All defined variables must be unique")
"
query A($atOtherHomes: Boolean) {
...HouseTrainedFragment
}
query B($atOtherHomes: Boolean) {
...HouseTrainedFragment
}
fragment HouseTrainedFragment on SearchRoot {
dog {
isHousetrained(atOtherHomes: $atOtherHomes)
}
}
" %>%
expect_r6()
})
test_that("5.7.2 - Default Values Are Correctly Typed", {
"
query houseTrainedQuery($atOtherHomes: Boolean = true) {
dog {
isHousetrained(atOtherHomes: $atOtherHomes)
}
}
" %>%
expect_r6()
"
query houseTrainedQuery($atOtherHomes: Boolean! = true) {
dog {
isHousetrained(atOtherHomes: $atOtherHomes)
}
}
" %>%
expect_err("Non-Null Variables are not allowed to have default values")
"
query houseTrainedQuery($atOtherHomes: Boolean = \"true\") {
dog {
isHousetrained(atOtherHomes: $atOtherHomes)
}
}
" %>%
expect_err("found StringValue")
"
query intToFloatQuery($floatVar: Float = 1) {
arguments {
floatArgField(floatArg: $floatVar)
}
}
" %>%
expect_r6()
})
test_that("5.7.3 - Variables are Input Types", {
"
query takesBoolean($atOtherHomes: Boolean) {
dog {
isHousetrained(atOtherHomes: $atOtherHomes)
}
}
query takesComplexInput($complexInput: ComplexInput) {
findDog(complex: $complexInput) {
name
}
}
query TakesListOfBooleanBang($booleans: [Boolean!]) {
booleanList(booleanListArg: $booleans)
}
" %>%
expect_r6()
"
query takesCat($cat: Cat) {
dog { name }
}
" %>%
expect_err("Can not find matching")
"
query takesDogBang($dog: Dog!) {
dog { name }
}
" %>%
expect_err("Can not find matching")
"
query takesListOfPet($pets: [Pet]) {
dog { name }
}
" %>%
expect_err("Can not find matching")
"
query takesCatOrDog($catOrDog: CatOrDog) {
dog { name }
}
" %>%
expect_err("Can not find matching")
})
test_that("5.7.4 - All Variable Uses Defined", {
"
query variableIsDefined($atOtherHomes: Boolean) {
dog {
isHousetrained(atOtherHomes: $atOtherHomes)
}
}
" %>%
expect_r6()
"
query variableIsNotDefined {
dog {
isHousetrained(atOtherHomes: $atOtherHomes)
}
}
" %>%
expect_err("variable definition can not be found")
"
query variableIsDefinedUsedInSingleFragment($atOtherHomes: Boolean) {
dog {
...isHousetrainedFragment
}
}
fragment isHousetrainedFragment on Dog {
isHousetrained(atOtherHomes: $atOtherHomes)
}
" %>%
expect_r6()
"
query variableIsNotDefinedUsedInSingleFragment {
dog {
...isHousetrainedFragment
}
}
fragment isHousetrainedFragment on Dog {
isHousetrained(atOtherHomes: $atOtherHomes)
}
" %>%
expect_err("variable definition can not be found")
"
query variableIsNotDefinedUsedInNestedFragment {
dog {
...outerHousetrainedFragment
}
}
fragment outerHousetrainedFragment on Dog {
...isHousetrainedFragment
}
fragment isHousetrainedFragment on Dog {
isHousetrained(atOtherHomes: $atOtherHomes)
}
" %>%
expect_err("variable definition can not be found")
"
query housetrainedQueryOne($atOtherHomes: Boolean) {
dog {
...isHousetrainedFragment
}
}
query housetrainedQueryTwo($atOtherHomes: Boolean) {
dog {
...isHousetrainedFragment
}
}
fragment isHousetrainedFragment on Dog {
isHousetrained(atOtherHomes: $atOtherHomes)
}
" %>%
expect_r6()
"
query housetrainedQueryOne($atOtherHomes: Boolean) {
dog {
...isHousetrainedFragment
}
}
query housetrainedQueryTwoNotDefined {
dog {
...isHousetrainedFragment
}
}
fragment isHousetrainedFragment on Dog {
isHousetrained(atOtherHomes: $atOtherHomes)
}
" %>%
expect_err("variable definition can not be found")
})
test_that("5.7.5 - All Variables Used", {
"
query variableUsedInFragment($atOtherHomes: Boolean) {
dog {
...isHousetrainedFragment
}
}
fragment isHousetrainedFragment on Dog {
isHousetrained(atOtherHomes: $atOtherHomes)
}
" %>%
expect_r6()
"
query variableUnused($atOtherHomes: Boolean) {
dog {
isHousetrained
}
}
" %>%
expect_err("Unused variables")
"
query variableNotUsedWithinFragment($atOtherHomes: Boolean) {
dog {
...isHousetrainedWithoutVariableFragment
}
}
fragment isHousetrainedWithoutVariableFragment on Dog {
isHousetrained
}
" %>%
expect_err("Unused variables")
"
query queryWithUsedVar($atOtherHomes: Boolean) {
dog {
...isHousetrainedFragment
}
}
query queryWithExtraVar($atOtherHomes: Boolean, $extra: Int) {
dog {
...isHousetrainedFragment
}
}
fragment isHousetrainedFragment on Dog {
isHousetrained(atOtherHomes: $atOtherHomes)
}
" %>%
expect_err("Unused variables")
})
test_that("5.7.6 - All Variables Usages are Allowed", {
"
query intCannotGoIntoBoolean($intArg: Int) {
arguments {
booleanArgField(booleanArg: $intArg)
}
}
" %>%
expect_err("inner types do not match")
"
query booleanListCannotGoIntoBoolean($booleanListArg: [Boolean]) {
arguments {
booleanArgField(booleanArg: $booleanListArg)
}
}
" %>%
expect_err("Variable list dimensions")
"
query booleanArgQuery($booleanArg: Boolean) {
arguments {
nonNullBooleanArgField(nonNullBooleanArg: $booleanArg)
}
}
" %>%
expect_err("nullible argument to a non-nullible")
"
query booleanArgQueryWithDefault($booleanArg: Boolean = true) {
arguments {
nonNullBooleanArgField(nonNullBooleanArg: $booleanArg)
}
}
" %>%
expect_r6()
"
query nonNullListToList($nonNullBooleanList: [Boolean!]) {
arguments {
booleanListArgField(booleanListArg: $nonNullBooleanList)
}
}
query nonNullListToNonNullList($nonNullBooleanList: [Boolean!]) {
arguments {
nonNullBooleanListArgField(nonNullBooleanListArg: $nonNullBooleanList)
}
}
" %>%
expect_r6()
"
query listToNonNullList($booleanList: [Boolean]) {
arguments {
booleanNonNullListArgField(booleanNonNullListArg: $booleanList)
}
}
" %>%
expect_err("nullible argument to a non-nullible definition")
"
query listToNonNullList($booleanList: [Boolean]) {
arguments {
nonNullBooleanListArgField(nonNullBooleanListArg: $booleanList)
}
}
" %>%
expect_err("nullible argument to a non-nullible definition")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.