Ai
1 Star 0 Fork 0

麦冬果果/graphql-go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
rules_possible_fragment_spreads_test.go 8.20 KB
一键复制 编辑 原始数据 按行查看 历史
Hafiz Ismail 提交于 2015-11-18 22:01 +08:00 . Added missing rule tests
package graphql_test
import (
"testing"
"github.com/graphql-go/graphql"
"github.com/graphql-go/graphql/gqlerrors"
"github.com/graphql-go/graphql/testutil"
)
func TestValidate_PossibleFragmentSpreads_OfTheSameObject(t *testing.T) {
testutil.ExpectPassesRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment objectWithinObject on Dog { ...dogFragment }
fragment dogFragment on Dog { barkVolume }
`)
}
func TestValidate_PossibleFragmentSpreads_OfTheSameObjectWithInlineFragment(t *testing.T) {
testutil.ExpectPassesRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment objectWithinObjectAnon on Dog { ... on Dog { barkVolume } }
`)
}
func TestValidate_PossibleFragmentSpreads_ObjectIntoAnImplementedInterface(t *testing.T) {
testutil.ExpectPassesRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment objectWithinInterface on Pet { ...dogFragment }
fragment dogFragment on Dog { barkVolume }
`)
}
func TestValidate_PossibleFragmentSpreads_ObjectIntoContainingUnion(t *testing.T) {
testutil.ExpectPassesRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment objectWithinUnion on CatOrDog { ...dogFragment }
fragment dogFragment on Dog { barkVolume }
`)
}
func TestValidate_PossibleFragmentSpreads_UnionIntoContainedObject(t *testing.T) {
testutil.ExpectPassesRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment unionWithinObject on Dog { ...catOrDogFragment }
fragment catOrDogFragment on CatOrDog { __typename }
`)
}
func TestValidate_PossibleFragmentSpreads_UnionIntoOverlappingInterface(t *testing.T) {
testutil.ExpectPassesRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment unionWithinInterface on Pet { ...catOrDogFragment }
fragment catOrDogFragment on CatOrDog { __typename }
`)
}
func TestValidate_PossibleFragmentSpreads_UnionIntoOverlappingUnion(t *testing.T) {
testutil.ExpectPassesRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment unionWithinUnion on DogOrHuman { ...catOrDogFragment }
fragment catOrDogFragment on CatOrDog { __typename }
`)
}
func TestValidate_PossibleFragmentSpreads_InterfaceIntoImplementedObject(t *testing.T) {
testutil.ExpectPassesRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment interfaceWithinObject on Dog { ...petFragment }
fragment petFragment on Pet { name }
`)
}
func TestValidate_PossibleFragmentSpreads_InterfaceIntoOverlappingInterface(t *testing.T) {
testutil.ExpectPassesRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment interfaceWithinInterface on Pet { ...beingFragment }
fragment beingFragment on Being { name }
`)
}
func TestValidate_PossibleFragmentSpreads_InterfaceIntoOverlappingInterfaceInInlineFragment(t *testing.T) {
testutil.ExpectPassesRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment interfaceWithinInterface on Pet { ... on Being { name } }
`)
}
func TestValidate_PossibleFragmentSpreads_InterfaceIntoOverlappingUnion(t *testing.T) {
testutil.ExpectPassesRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment interfaceWithinUnion on CatOrDog { ...petFragment }
fragment petFragment on Pet { name }
`)
}
func TestValidate_PossibleFragmentSpreads_DifferentObjectIntoObject(t *testing.T) {
testutil.ExpectFailsRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment invalidObjectWithinObject on Cat { ...dogFragment }
fragment dogFragment on Dog { barkVolume }
`, []gqlerrors.FormattedError{
testutil.RuleError(`Fragment "dogFragment" cannot be spread here as objects of `+
`type "Cat" can never be of type "Dog".`, 2, 51),
})
}
func TestValidate_PossibleFragmentSpreads_DifferentObjectIntoObjectInInlineFragment(t *testing.T) {
testutil.ExpectFailsRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment invalidObjectWithinObjectAnon on Cat {
... on Dog { barkVolume }
}
`, []gqlerrors.FormattedError{
testutil.RuleError(`Fragment cannot be spread here as objects of `+
`type "Cat" can never be of type "Dog".`, 3, 9),
})
}
func TestValidate_PossibleFragmentSpreads_ObjectIntoNotImplementingInterface(t *testing.T) {
testutil.ExpectFailsRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment invalidObjectWithinInterface on Pet { ...humanFragment }
fragment humanFragment on Human { pets { name } }
`, []gqlerrors.FormattedError{
testutil.RuleError(`Fragment "humanFragment" cannot be spread here as objects of `+
`type "Pet" can never be of type "Human".`, 2, 54),
})
}
func TestValidate_PossibleFragmentSpreads_ObjectIntoNotContainingUnion(t *testing.T) {
testutil.ExpectFailsRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment invalidObjectWithinUnion on CatOrDog { ...humanFragment }
fragment humanFragment on Human { pets { name } }
`, []gqlerrors.FormattedError{
testutil.RuleError(`Fragment "humanFragment" cannot be spread here as objects of `+
`type "CatOrDog" can never be of type "Human".`, 2, 55),
})
}
func TestValidate_PossibleFragmentSpreads_UnionIntoNotContainedObject(t *testing.T) {
testutil.ExpectFailsRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment invalidUnionWithinObject on Human { ...catOrDogFragment }
fragment catOrDogFragment on CatOrDog { __typename }
`, []gqlerrors.FormattedError{
testutil.RuleError(`Fragment "catOrDogFragment" cannot be spread here as objects of `+
`type "Human" can never be of type "CatOrDog".`, 2, 52),
})
}
func TestValidate_PossibleFragmentSpreads_UnionIntoNonOverlappingInterface(t *testing.T) {
testutil.ExpectFailsRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment invalidUnionWithinInterface on Pet { ...humanOrAlienFragment }
fragment humanOrAlienFragment on HumanOrAlien { __typename }
`, []gqlerrors.FormattedError{
testutil.RuleError(`Fragment "humanOrAlienFragment" cannot be spread here as objects of `+
`type "Pet" can never be of type "HumanOrAlien".`, 2, 53),
})
}
func TestValidate_PossibleFragmentSpreads_UnionIntoNonOverlappingUnion(t *testing.T) {
testutil.ExpectFailsRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment invalidUnionWithinUnion on CatOrDog { ...humanOrAlienFragment }
fragment humanOrAlienFragment on HumanOrAlien { __typename }
`, []gqlerrors.FormattedError{
testutil.RuleError(`Fragment "humanOrAlienFragment" cannot be spread here as objects of `+
`type "CatOrDog" can never be of type "HumanOrAlien".`, 2, 54),
})
}
func TestValidate_PossibleFragmentSpreads_InterfaceIntoNonImplementingObject(t *testing.T) {
testutil.ExpectFailsRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment invalidInterfaceWithinObject on Cat { ...intelligentFragment }
fragment intelligentFragment on Intelligent { iq }
`, []gqlerrors.FormattedError{
testutil.RuleError(`Fragment "intelligentFragment" cannot be spread here as objects of `+
`type "Cat" can never be of type "Intelligent".`, 2, 54),
})
}
func TestValidate_PossibleFragmentSpreads_InterfaceIntoNonOverlappingInterface(t *testing.T) {
testutil.ExpectFailsRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment invalidInterfaceWithinInterface on Pet {
...intelligentFragment
}
fragment intelligentFragment on Intelligent { iq }
`, []gqlerrors.FormattedError{
testutil.RuleError(`Fragment "intelligentFragment" cannot be spread here as objects of `+
`type "Pet" can never be of type "Intelligent".`, 3, 9),
})
}
func TestValidate_PossibleFragmentSpreads_InterfaceIntoNonOverlappingInterfaceInInlineFragment(t *testing.T) {
testutil.ExpectFailsRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment invalidInterfaceWithinInterfaceAnon on Pet {
...on Intelligent { iq }
}
`, []gqlerrors.FormattedError{
testutil.RuleError(`Fragment cannot be spread here as objects of `+
`type "Pet" can never be of type "Intelligent".`, 3, 9),
})
}
func TestValidate_PossibleFragmentSpreads_InterfaceIntoNonOverlappingUnion(t *testing.T) {
testutil.ExpectFailsRule(t, graphql.PossibleFragmentSpreadsRule, `
fragment invalidInterfaceWithinUnion on HumanOrAlien { ...petFragment }
fragment petFragment on Pet { name }
`, []gqlerrors.FormattedError{
testutil.RuleError(`Fragment "petFragment" cannot be spread here as objects of `+
`type "HumanOrAlien" can never be of type "Pet".`, 2, 62),
})
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/mdgg0816/graphql-go.git
git@gitee.com:mdgg0816/graphql-go.git
mdgg0816
graphql-go
graphql-go
v0.7.6

搜索帮助