1package graphql_test 2 3import ( 4 "testing" 5 6 "github.com/dennwc/graphql" 7 "github.com/dennwc/graphql/gqlerrors" 8 "github.com/dennwc/graphql/testutil" 9) 10 11func TestValidate_UniqueFragmentNames_NoFragments(t *testing.T) { 12 testutil.ExpectPassesRule(t, graphql.UniqueFragmentNamesRule, ` 13 { 14 field 15 } 16 `) 17} 18func TestValidate_UniqueFragmentNames_OneFragment(t *testing.T) { 19 testutil.ExpectPassesRule(t, graphql.UniqueFragmentNamesRule, ` 20 { 21 ...fragA 22 } 23 24 fragment fragA on Type { 25 field 26 } 27 `) 28} 29func TestValidate_UniqueFragmentNames_ManyFragments(t *testing.T) { 30 testutil.ExpectPassesRule(t, graphql.UniqueFragmentNamesRule, ` 31 { 32 ...fragA 33 ...fragB 34 ...fragC 35 } 36 fragment fragA on Type { 37 fieldA 38 } 39 fragment fragB on Type { 40 fieldB 41 } 42 fragment fragC on Type { 43 fieldC 44 } 45 `) 46} 47func TestValidate_UniqueFragmentNames_InlineFragmentsAreAlwaysUnique(t *testing.T) { 48 testutil.ExpectPassesRule(t, graphql.UniqueFragmentNamesRule, ` 49 { 50 ...on Type { 51 fieldA 52 } 53 ...on Type { 54 fieldB 55 } 56 } 57 `) 58} 59func TestValidate_UniqueFragmentNames_FragmentAndOperationNamedTheSame(t *testing.T) { 60 testutil.ExpectPassesRule(t, graphql.UniqueFragmentNamesRule, ` 61 query Foo { 62 ...Foo 63 } 64 fragment Foo on Type { 65 field 66 } 67 `) 68} 69func TestValidate_UniqueFragmentNames_FragmentsNamedTheSame(t *testing.T) { 70 testutil.ExpectFailsRule(t, graphql.UniqueFragmentNamesRule, ` 71 { 72 ...fragA 73 } 74 fragment fragA on Type { 75 fieldA 76 } 77 fragment fragA on Type { 78 fieldB 79 } 80 `, []gqlerrors.FormattedError{ 81 testutil.RuleError(`There can only be one fragment named "fragA".`, 5, 16, 8, 16), 82 }) 83} 84func TestValidate_UniqueFragmentNames_FragmentsNamedTheSameWithoutBeingReferenced(t *testing.T) { 85 testutil.ExpectFailsRule(t, graphql.UniqueFragmentNamesRule, ` 86 fragment fragA on Type { 87 fieldA 88 } 89 fragment fragA on Type { 90 fieldB 91 } 92 `, []gqlerrors.FormattedError{ 93 testutil.RuleError(`There can only be one fragment named "fragA".`, 2, 16, 5, 16), 94 }) 95} 96