# load_all(); testthat::test_file(file.path("tests", "testthat", "test-validation-5.4-fragment.R")) # nolint
test_that("5.4.1.1 - Fragment Name Uniqueness", {
# "
# {
# dog {
# ... on Dog {
# name
# }
# ... on Dog {
# owner {
# name
# }
# }
# }
# }
# "
"
{
dog {
...fragmentOne
...fragmentTwo
}
}
fragment fragmentOne on Dog {
name
}
fragment fragmentTwo on Dog {
owner {
name
}
}
" %>%
expect_r6()
"
{
dog {
...fragmentOne
}
}
fragment fragmentOne on Dog {
name
}
fragment fragmentOne on Dog {
owner {
name
}
}
" %>%
expect_err("Found duplicate fragment: fragmentOne")
})
test_that("5.4.1.2 - Fragment Spread Type Existence", {
"
{
dog {
...correctType
...inlineFragment
...inlineFragment2
}
}
fragment correctType on Dog {
name
}
fragment inlineFragment on Dog {
... on Dog {
name
}
}
fragment inlineFragment2 on Dog {
... @include(if: true) {
name
}
}
" %>%
expect_r6()
"
{
dog {
...notOnExistingType
}
}
fragment notOnExistingType on NotInSchema {
name
}
" %>%
expect_err("Can not find match for typeCondition")
})
test_that("5.4.1.3 - Fragments On Composite Types", {
"
{
dog {
...fragOnObject
...fragOnInterface
...fragOnUnion
}
}
fragment fragOnObject on Dog {
name
}
fragment fragOnInterface on Pet {
name
}
fragment fragOnUnion on CatOrDog {
... on Dog {
name
}
}
" %>%
expect_r6()
})
test_that("5.4.1.4 - Fragments Must Be Used", {
"
fragment nameFragment on Dog { # unused
name
}
{
dog {
name
}
}
" %>%
expect_err("all fragments must be used")
})
test_that("5.4.2.1 - Fragment spread target defined", {
"
{
dog {
...undefinedFragment
}
}
" %>%
expect_err("Can not find fragment named")
})
test_that("5.4.2.2 - Fragment spreads must not form cycles", {
"
{
dog {
...nameFragment
}
}
fragment nameFragment on Dog {
name
...barkVolumeFragment
}
fragment barkVolumeFragment on Dog {
barkVolume
...nameFragment
}
" %>%
expect_err("fragments can not be circularly defined")
"
{
dog {
...dogFragment
}
}
fragment dogFragment on Dog {
name
owner {
...ownerFragment
}
}
fragment ownerFragment on Human {
name
pet {
...dogFragment
}
}
" %>%
expect_err("fragments can not be circularly defined")
})
test_that("5.4.2.3.1 - Object Spreads In Object Scope", {
"
{
dog {
...dogFragment
}
}
fragment dogFragment on Dog {
... on Dog {
barkVolume
}
}
" %>%
expect_r6()
"
{
dog {
...catInDogFragmentInvalid
}
}
fragment catInDogFragmentInvalid on Dog {
... on Cat {
meowVolume
}
}
" %>%
expect_err("must be an intersection")
})
test_that("5.4.2.3.2 - Abstract Spreads In Object Scope", {
"
{
dog {
...interfaceWithinObjectFragment
}
}
fragment petNameFragment on Pet {
name
}
fragment interfaceWithinObjectFragment on Dog {
...petNameFragment
}
" %>%
expect_r6()
"
{
dog {
...unionWithObjectFragment
}
}
fragment catOrDogNameFragment on CatOrDog {
... on Cat {
meowVolume
}
}
fragment unionWithObjectFragment on Dog {
...catOrDogNameFragment
}
" %>%
expect_r6()
})
test_that("5.4.2.3.3 - Object Spreads In Abstract Scope", {
"
{
dog {
...petFragment
...catOrDogFragment
}
}
fragment petFragment on Pet {
name
... on Dog {
barkVolume
}
}
fragment catOrDogFragment on CatOrDog {
... on Cat {
meowVolume
}
}
" %>%
expect_r6()
"
{
dog {
owner {
...sentientFragment
}
}
}
fragment sentientFragment on Sentient {
... on Dog {
barkVolume
}
}
" %>%
expect_err("must be an intersection")
"
{
dog {
owner {
...humanOrAlienFragment
}
}
}
fragment humanOrAlienFragment on HumanOrAlien {
... on Cat {
meowVolume
}
}
" %>%
expect_err("must be an intersection")
})
test_that("5.4.2.3.4 - Abstract Spreads In Abstract Scope", {
"
{
dog {
...unionWithInterface
}
}
fragment unionWithInterface on Pet {
...dogOrHumanFragment
}
fragment dogOrHumanFragment on DogOrHuman {
... on Dog {
barkVolume
}
}
" %>%
expect_r6()
"
{
dog {
...nonIntersectingInterfaces
}
}
fragment nonIntersectingInterfaces on Pet {
...sentientFragment
}
fragment sentientFragment on Sentient {
name
}
" %>%
expect_err("must be an intersection")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.