1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
from functools import partial
from graphql.validation import UniqueOperationNamesRule
from .harness import assert_validation_errors
assert_errors = partial(assert_validation_errors, UniqueOperationNamesRule)
assert_valid = partial(assert_errors, errors=[])
def describe_validate_unique_operation_names():
def no_operations():
assert_valid(
"""
fragment fragA on Type {
field
}
"""
)
def one_anon_operation():
assert_valid(
"""
{
field
}
"""
)
def one_named_operation():
assert_valid(
"""
query Foo {
field
}
"""
)
def multiple_operations():
assert_valid(
"""
query Foo {
field
}
query Bar {
field
}
"""
)
def multiple_operations_of_different_types():
assert_valid(
"""
query Foo {
field
}
mutation Bar {
field
}
subscription Baz {
field
}
"""
)
def fragment_and_operation_named_the_same():
assert_valid(
"""
query Foo {
...Foo
}
fragment Foo on Type {
field
}
"""
)
def multiple_operations_of_same_name():
assert_errors(
"""
query Foo {
fieldA
}
query Foo {
fieldB
}
""",
[
{
"message": "There can be only one operation named 'Foo'.",
"locations": [(2, 19), (5, 19)],
},
],
)
def multiple_ops_of_same_name_of_different_types_mutation():
assert_errors(
"""
query Foo {
fieldA
}
mutation Foo {
fieldB
}
""",
[
{
"message": "There can be only one operation named 'Foo'.",
"locations": [(2, 19), (5, 22)],
},
],
)
def multiple_ops_of_same_name_of_different_types_subscription():
assert_errors(
"""
query Foo {
fieldA
}
subscription Foo {
fieldB
}
""",
[
{
"message": "There can be only one operation named 'Foo'.",
"locations": [(2, 19), (5, 26)],
},
],
)
|