...

Text file src/github.com/vektah/gqlparser/validator/imported/spec/NoFragmentCycles.spec.yml

Documentation: github.com/vektah/gqlparser/validator/imported/spec

     1- name: single reference is valid
     2  rule: NoFragmentCycles
     3  schema: 0
     4  query: |2-
     5          
     6          fragment fragA on Dog { ...fragB }
     7          fragment fragB on Dog { name }
     8          
     9  errors: []
    10- name: spreading twice is not circular
    11  rule: NoFragmentCycles
    12  schema: 0
    13  query: |2-
    14          
    15          fragment fragA on Dog { ...fragB, ...fragB }
    16          fragment fragB on Dog { name }
    17          
    18  errors: []
    19- name: spreading twice indirectly is not circular
    20  rule: NoFragmentCycles
    21  schema: 0
    22  query: |2-
    23          
    24          fragment fragA on Dog { ...fragB, ...fragC }
    25          fragment fragB on Dog { ...fragC }
    26          fragment fragC on Dog { name }
    27          
    28  errors: []
    29- name: double spread within abstract types
    30  rule: NoFragmentCycles
    31  schema: 0
    32  query: |2-
    33          
    34          fragment nameFragment on Pet {
    35            ... on Dog { name }
    36            ... on Cat { name }
    37          }
    38          
    39          fragment spreadsInAnon on Pet {
    40            ... on Dog { ...nameFragment }
    41            ... on Cat { ...nameFragment }
    42          }
    43          
    44  errors: []
    45- name: does not false positive on unknown fragment
    46  rule: NoFragmentCycles
    47  schema: 0
    48  query: |2-
    49          
    50          fragment nameFragment on Pet {
    51            ...UnknownFragment
    52          }
    53          
    54  errors: []
    55- name: spreading recursively within field fails
    56  rule: NoFragmentCycles
    57  schema: 0
    58  query: |2-
    59          
    60          fragment fragA on Human { relatives { ...fragA } },
    61          
    62  errors:
    63    - message: Cannot spread fragment "fragA" within itself.
    64      locations:
    65        - {line: 2, column: 45}
    66- name: no spreading itself directly
    67  rule: NoFragmentCycles
    68  schema: 0
    69  query: |2-
    70          
    71          fragment fragA on Dog { ...fragA }
    72          
    73  errors:
    74    - message: Cannot spread fragment "fragA" within itself.
    75      locations:
    76        - {line: 2, column: 31}
    77- name: no spreading itself directly within inline fragment
    78  rule: NoFragmentCycles
    79  schema: 0
    80  query: |2-
    81          
    82          fragment fragA on Pet {
    83            ... on Dog {
    84              ...fragA
    85            }
    86          }
    87          
    88  errors:
    89    - message: Cannot spread fragment "fragA" within itself.
    90      locations:
    91        - {line: 4, column: 11}
    92- name: no spreading itself indirectly
    93  rule: NoFragmentCycles
    94  schema: 0
    95  query: |2-
    96          
    97          fragment fragA on Dog { ...fragB }
    98          fragment fragB on Dog { ...fragA }
    99          
   100  errors:
   101    - message: Cannot spread fragment "fragA" within itself via fragB.
   102      locations:
   103        - {line: 2, column: 31}
   104        - {line: 3, column: 31}
   105- name: no spreading itself indirectly reports opposite order
   106  rule: NoFragmentCycles
   107  schema: 0
   108  query: |2-
   109          
   110          fragment fragB on Dog { ...fragA }
   111          fragment fragA on Dog { ...fragB }
   112          
   113  errors:
   114    - message: Cannot spread fragment "fragB" within itself via fragA.
   115      locations:
   116        - {line: 2, column: 31}
   117        - {line: 3, column: 31}
   118- name: no spreading itself indirectly within inline fragment
   119  rule: NoFragmentCycles
   120  schema: 0
   121  query: |2-
   122          
   123          fragment fragA on Pet {
   124            ... on Dog {
   125              ...fragB
   126            }
   127          }
   128          fragment fragB on Pet {
   129            ... on Dog {
   130              ...fragA
   131            }
   132          }
   133          
   134  errors:
   135    - message: Cannot spread fragment "fragA" within itself via fragB.
   136      locations:
   137        - {line: 4, column: 11}
   138        - {line: 9, column: 11}
   139- name: no spreading itself deeply
   140  rule: NoFragmentCycles
   141  schema: 0
   142  query: |2-
   143          
   144          fragment fragA on Dog { ...fragB }
   145          fragment fragB on Dog { ...fragC }
   146          fragment fragC on Dog { ...fragO }
   147          fragment fragX on Dog { ...fragY }
   148          fragment fragY on Dog { ...fragZ }
   149          fragment fragZ on Dog { ...fragO }
   150          fragment fragO on Dog { ...fragP }
   151          fragment fragP on Dog { ...fragA, ...fragX }
   152          
   153  errors:
   154    - message: 'Cannot spread fragment "fragA" within itself via fragB, fragC, fragO, fragP.'
   155      locations:
   156        - {line: 2, column: 31}
   157        - {line: 3, column: 31}
   158        - {line: 4, column: 31}
   159        - {line: 8, column: 31}
   160        - {line: 9, column: 31}
   161    - message: 'Cannot spread fragment "fragO" within itself via fragP, fragX, fragY, fragZ.'
   162      locations:
   163        - {line: 8, column: 31}
   164        - {line: 9, column: 41}
   165        - {line: 5, column: 31}
   166        - {line: 6, column: 31}
   167        - {line: 7, column: 31}
   168- name: no spreading itself deeply two paths
   169  rule: NoFragmentCycles
   170  schema: 0
   171  query: |2-
   172          
   173          fragment fragA on Dog { ...fragB, ...fragC }
   174          fragment fragB on Dog { ...fragA }
   175          fragment fragC on Dog { ...fragA }
   176          
   177  errors:
   178    - message: Cannot spread fragment "fragA" within itself via fragB.
   179      locations:
   180        - {line: 2, column: 31}
   181        - {line: 3, column: 31}
   182    - message: Cannot spread fragment "fragA" within itself via fragC.
   183      locations:
   184        - {line: 2, column: 41}
   185        - {line: 4, column: 31}
   186- name: no spreading itself deeply two paths -- alt traverse order
   187  rule: NoFragmentCycles
   188  schema: 0
   189  query: |2-
   190          
   191          fragment fragA on Dog { ...fragC }
   192          fragment fragB on Dog { ...fragC }
   193          fragment fragC on Dog { ...fragA, ...fragB }
   194          
   195  errors:
   196    - message: Cannot spread fragment "fragA" within itself via fragC.
   197      locations:
   198        - {line: 2, column: 31}
   199        - {line: 4, column: 31}
   200    - message: Cannot spread fragment "fragC" within itself via fragB.
   201      locations:
   202        - {line: 4, column: 41}
   203        - {line: 3, column: 31}
   204- name: no spreading itself deeply and immediately
   205  rule: NoFragmentCycles
   206  schema: 0
   207  query: |2-
   208          
   209          fragment fragA on Dog { ...fragB }
   210          fragment fragB on Dog { ...fragB, ...fragC }
   211          fragment fragC on Dog { ...fragA, ...fragB }
   212          
   213  errors:
   214    - message: Cannot spread fragment "fragB" within itself.
   215      locations:
   216        - {line: 3, column: 31}
   217    - message: 'Cannot spread fragment "fragA" within itself via fragB, fragC.'
   218      locations:
   219        - {line: 2, column: 31}
   220        - {line: 3, column: 41}
   221        - {line: 4, column: 31}
   222    - message: Cannot spread fragment "fragB" within itself via fragC.
   223      locations:
   224        - {line: 3, column: 41}
   225        - {line: 4, column: 41}

View as plain text