graphql 1.9.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of graphql might be problematic. Click here for more details.

Files changed (723) hide show
  1. checksums.yaml +5 -5
  2. data/lib/generators/graphql/core.rb +21 -9
  3. data/lib/generators/graphql/enum_generator.rb +4 -10
  4. data/lib/generators/graphql/field_extractor.rb +31 -0
  5. data/lib/generators/graphql/input_generator.rb +50 -0
  6. data/lib/generators/graphql/install/mutation_root_generator.rb +34 -0
  7. data/lib/generators/graphql/install/templates/base_mutation.erb +12 -0
  8. data/lib/generators/graphql/{templates → install/templates}/mutation_type.erb +4 -0
  9. data/lib/generators/graphql/install_generator.rb +49 -9
  10. data/lib/generators/graphql/interface_generator.rb +7 -7
  11. data/lib/generators/graphql/loader_generator.rb +1 -0
  12. data/lib/generators/graphql/mutation_create_generator.rb +22 -0
  13. data/lib/generators/graphql/mutation_delete_generator.rb +22 -0
  14. data/lib/generators/graphql/mutation_generator.rb +6 -30
  15. data/lib/generators/graphql/mutation_update_generator.rb +22 -0
  16. data/lib/generators/graphql/object_generator.rb +28 -12
  17. data/lib/generators/graphql/orm_mutations_base.rb +40 -0
  18. data/lib/generators/graphql/relay.rb +66 -0
  19. data/lib/generators/graphql/relay_generator.rb +21 -0
  20. data/lib/generators/graphql/scalar_generator.rb +4 -2
  21. data/lib/generators/graphql/templates/base_argument.erb +8 -0
  22. data/lib/generators/graphql/templates/base_connection.erb +10 -0
  23. data/lib/generators/graphql/templates/base_edge.erb +10 -0
  24. data/lib/generators/graphql/templates/base_enum.erb +4 -0
  25. data/lib/generators/graphql/templates/base_field.erb +9 -0
  26. data/lib/generators/graphql/templates/base_input_object.erb +5 -0
  27. data/lib/generators/graphql/templates/base_interface.erb +6 -0
  28. data/lib/generators/graphql/templates/base_object.erb +5 -0
  29. data/lib/generators/graphql/templates/base_scalar.erb +4 -0
  30. data/lib/generators/graphql/templates/base_union.erb +4 -0
  31. data/lib/generators/graphql/templates/enum.erb +7 -1
  32. data/lib/generators/graphql/templates/graphql_controller.erb +23 -12
  33. data/lib/generators/graphql/templates/input.erb +9 -0
  34. data/lib/generators/graphql/templates/interface.erb +6 -2
  35. data/lib/generators/graphql/templates/loader.erb +4 -0
  36. data/lib/generators/graphql/templates/mutation.erb +5 -1
  37. data/lib/generators/graphql/templates/mutation_create.erb +20 -0
  38. data/lib/generators/graphql/templates/mutation_delete.erb +20 -0
  39. data/lib/generators/graphql/templates/mutation_update.erb +21 -0
  40. data/lib/generators/graphql/templates/node_type.erb +11 -0
  41. data/lib/generators/graphql/templates/object.erb +7 -3
  42. data/lib/generators/graphql/templates/query_type.erb +5 -3
  43. data/lib/generators/graphql/templates/scalar.erb +5 -1
  44. data/lib/generators/graphql/templates/schema.erb +27 -27
  45. data/lib/generators/graphql/templates/union.erb +6 -2
  46. data/lib/generators/graphql/type_generator.rb +47 -10
  47. data/lib/generators/graphql/union_generator.rb +5 -5
  48. data/lib/graphql/analysis/ast/analyzer.rb +41 -12
  49. data/lib/graphql/analysis/ast/field_usage.rb +32 -3
  50. data/lib/graphql/analysis/ast/max_query_complexity.rb +4 -5
  51. data/lib/graphql/analysis/ast/max_query_depth.rb +7 -3
  52. data/lib/graphql/analysis/ast/query_complexity.rb +182 -66
  53. data/lib/graphql/analysis/ast/query_depth.rb +15 -26
  54. data/lib/graphql/analysis/ast/visitor.rb +83 -62
  55. data/lib/graphql/analysis/ast.rb +23 -20
  56. data/lib/graphql/analysis.rb +0 -7
  57. data/lib/graphql/backtrace/inspect_result.rb +0 -1
  58. data/lib/graphql/backtrace/table.rb +37 -16
  59. data/lib/graphql/backtrace/trace.rb +96 -0
  60. data/lib/graphql/backtrace/traced_error.rb +0 -1
  61. data/lib/graphql/backtrace/tracer.rb +39 -9
  62. data/lib/graphql/backtrace.rb +22 -18
  63. data/lib/graphql/coercion_error.rb +8 -0
  64. data/lib/graphql/dataloader/null_dataloader.rb +24 -0
  65. data/lib/graphql/dataloader/request.rb +19 -0
  66. data/lib/graphql/dataloader/request_all.rb +19 -0
  67. data/lib/graphql/dataloader/source.rb +195 -0
  68. data/lib/graphql/dataloader.rb +320 -0
  69. data/lib/graphql/date_encoding_error.rb +16 -0
  70. data/lib/graphql/deprecation.rb +9 -0
  71. data/lib/graphql/dig.rb +1 -1
  72. data/lib/graphql/execution/directive_checks.rb +2 -2
  73. data/lib/graphql/execution/errors.rb +93 -0
  74. data/lib/graphql/execution/interpreter/argument_value.rb +28 -0
  75. data/lib/graphql/execution/interpreter/arguments.rb +88 -0
  76. data/lib/graphql/execution/interpreter/arguments_cache.rb +105 -0
  77. data/lib/graphql/execution/interpreter/handles_raw_value.rb +18 -0
  78. data/lib/graphql/execution/interpreter/resolve.rb +62 -24
  79. data/lib/graphql/execution/interpreter/runtime/graphql_result.rb +170 -0
  80. data/lib/graphql/execution/interpreter/runtime.rb +695 -392
  81. data/lib/graphql/execution/interpreter.rb +199 -74
  82. data/lib/graphql/execution/lazy/lazy_method_map.rb +4 -0
  83. data/lib/graphql/execution/lazy.rb +11 -21
  84. data/lib/graphql/execution/lookahead.rb +110 -150
  85. data/lib/graphql/execution/multiplex.rb +6 -148
  86. data/lib/graphql/execution.rb +12 -4
  87. data/lib/graphql/execution_error.rb +3 -2
  88. data/lib/graphql/integer_decoding_error.rb +17 -0
  89. data/lib/graphql/integer_encoding_error.rb +26 -2
  90. data/lib/graphql/introspection/base_object.rb +2 -5
  91. data/lib/graphql/introspection/directive_location_enum.rb +2 -2
  92. data/lib/graphql/introspection/directive_type.rb +12 -6
  93. data/lib/graphql/introspection/dynamic_fields.rb +3 -8
  94. data/lib/graphql/introspection/entry_points.rb +6 -18
  95. data/lib/graphql/introspection/enum_value_type.rb +2 -2
  96. data/lib/graphql/introspection/field_type.rb +9 -5
  97. data/lib/graphql/introspection/input_value_type.rb +41 -7
  98. data/lib/graphql/introspection/introspection_query.rb +6 -92
  99. data/lib/graphql/introspection/schema_type.rb +13 -12
  100. data/lib/graphql/introspection/type_type.rb +34 -17
  101. data/lib/graphql/introspection.rb +100 -0
  102. data/lib/graphql/invalid_null_error.rb +18 -0
  103. data/lib/graphql/language/block_string.rb +50 -23
  104. data/lib/graphql/language/cache.rb +37 -0
  105. data/lib/graphql/language/definition_slice.rb +21 -10
  106. data/lib/graphql/language/document_from_schema_definition.rb +153 -87
  107. data/lib/graphql/language/lexer.rb +249 -1450
  108. data/lib/graphql/language/nodes.rb +152 -142
  109. data/lib/graphql/language/parser.rb +1036 -953
  110. data/lib/graphql/language/parser.y +159 -120
  111. data/lib/graphql/language/printer.rb +342 -154
  112. data/lib/graphql/language/sanitized_printer.rb +220 -0
  113. data/lib/graphql/language/static_visitor.rb +167 -0
  114. data/lib/graphql/language/token.rb +2 -2
  115. data/lib/graphql/language/visitor.rb +196 -140
  116. data/lib/graphql/language.rb +4 -1
  117. data/lib/graphql/load_application_object_failed_error.rb +22 -0
  118. data/lib/graphql/name_validator.rb +2 -7
  119. data/lib/graphql/pagination/active_record_relation_connection.rb +77 -0
  120. data/lib/graphql/pagination/array_connection.rb +79 -0
  121. data/lib/graphql/pagination/connection.rb +275 -0
  122. data/lib/graphql/pagination/connections.rb +135 -0
  123. data/lib/graphql/pagination/mongoid_relation_connection.rb +25 -0
  124. data/lib/graphql/pagination/relation_connection.rb +228 -0
  125. data/lib/graphql/pagination/sequel_dataset_connection.rb +28 -0
  126. data/lib/graphql/pagination.rb +6 -0
  127. data/lib/graphql/parse_error.rb +0 -1
  128. data/lib/graphql/query/context/scoped_context.rb +101 -0
  129. data/lib/graphql/query/context.rb +157 -187
  130. data/lib/graphql/query/fingerprint.rb +26 -0
  131. data/lib/graphql/query/input_validation_result.rb +33 -7
  132. data/lib/graphql/query/null_context.rb +21 -14
  133. data/lib/graphql/query/validation_pipeline.rb +17 -38
  134. data/lib/graphql/query/variable_validation_error.rb +17 -3
  135. data/lib/graphql/query/variables.rb +49 -14
  136. data/lib/graphql/query.rb +142 -61
  137. data/lib/graphql/railtie.rb +6 -102
  138. data/lib/graphql/rake_task/validate.rb +5 -2
  139. data/lib/graphql/rake_task.rb +42 -20
  140. data/lib/graphql/relay/range_add.rb +17 -10
  141. data/lib/graphql/relay.rb +0 -15
  142. data/lib/graphql/rubocop/graphql/base_cop.rb +36 -0
  143. data/lib/graphql/rubocop/graphql/default_null_true.rb +43 -0
  144. data/lib/graphql/rubocop/graphql/default_required_true.rb +43 -0
  145. data/lib/graphql/rubocop.rb +4 -0
  146. data/lib/graphql/schema/addition.rb +271 -0
  147. data/lib/graphql/schema/always_visible.rb +10 -0
  148. data/lib/graphql/schema/argument.rb +301 -32
  149. data/lib/graphql/schema/base_64_bp.rb +3 -2
  150. data/lib/graphql/schema/base_64_encoder.rb +2 -0
  151. data/lib/graphql/schema/build_from_definition/resolve_map/default_resolve.rb +1 -1
  152. data/lib/graphql/schema/build_from_definition/resolve_map.rb +13 -5
  153. data/lib/graphql/schema/build_from_definition.rb +349 -203
  154. data/lib/graphql/schema/built_in_types.rb +5 -5
  155. data/lib/graphql/schema/directive/deprecated.rb +18 -0
  156. data/lib/graphql/schema/directive/feature.rb +2 -2
  157. data/lib/graphql/schema/directive/flagged.rb +57 -0
  158. data/lib/graphql/schema/directive/include.rb +2 -2
  159. data/lib/graphql/schema/directive/one_of.rb +12 -0
  160. data/lib/graphql/schema/directive/skip.rb +2 -2
  161. data/lib/graphql/schema/directive/specified_by.rb +14 -0
  162. data/lib/graphql/schema/directive/transform.rb +14 -2
  163. data/lib/graphql/schema/directive.rb +134 -15
  164. data/lib/graphql/schema/enum.rb +137 -39
  165. data/lib/graphql/schema/enum_value.rb +17 -23
  166. data/lib/graphql/schema/field/connection_extension.rb +36 -20
  167. data/lib/graphql/schema/field/scope_extension.rb +15 -5
  168. data/lib/graphql/schema/field.rb +570 -334
  169. data/lib/graphql/schema/field_extension.rb +88 -4
  170. data/lib/graphql/schema/find_inherited_value.rb +31 -0
  171. data/lib/graphql/schema/finder.rb +16 -14
  172. data/lib/graphql/schema/has_single_input_argument.rb +156 -0
  173. data/lib/graphql/schema/input_object.rb +190 -48
  174. data/lib/graphql/schema/interface.rb +24 -49
  175. data/lib/graphql/schema/introspection_system.rb +109 -36
  176. data/lib/graphql/schema/late_bound_type.rb +9 -2
  177. data/lib/graphql/schema/list.rb +61 -3
  178. data/lib/graphql/schema/loader.rb +146 -97
  179. data/lib/graphql/schema/member/base_dsl_methods.rb +45 -51
  180. data/lib/graphql/schema/member/build_type.rb +34 -17
  181. data/lib/graphql/schema/member/has_arguments.rb +385 -10
  182. data/lib/graphql/schema/member/has_ast_node.rb +32 -0
  183. data/lib/graphql/schema/member/has_deprecation_reason.rb +24 -0
  184. data/lib/graphql/schema/member/has_directives.rb +118 -0
  185. data/lib/graphql/schema/member/has_fields.rb +180 -35
  186. data/lib/graphql/schema/member/has_interfaces.rb +143 -0
  187. data/lib/graphql/schema/member/has_unresolved_type_error.rb +15 -0
  188. data/lib/graphql/schema/member/has_validators.rb +57 -0
  189. data/lib/graphql/schema/member/relay_shortcuts.rb +47 -2
  190. data/lib/graphql/schema/member/scoped.rb +19 -0
  191. data/lib/graphql/schema/member/type_system_helpers.rb +20 -3
  192. data/lib/graphql/schema/member/validates_input.rb +33 -0
  193. data/lib/graphql/schema/member.rb +11 -6
  194. data/lib/graphql/schema/mutation.rb +4 -9
  195. data/lib/graphql/schema/non_null.rb +34 -4
  196. data/lib/graphql/schema/object.rb +55 -64
  197. data/lib/graphql/schema/printer.rb +26 -40
  198. data/lib/graphql/schema/relay_classic_mutation.rb +13 -80
  199. data/lib/graphql/schema/resolver/has_payload_type.rb +53 -12
  200. data/lib/graphql/schema/resolver.rb +182 -162
  201. data/lib/graphql/schema/scalar.rb +40 -15
  202. data/lib/graphql/schema/subscription.rb +85 -27
  203. data/lib/graphql/schema/timeout.rb +119 -0
  204. data/lib/graphql/schema/type_expression.rb +21 -13
  205. data/lib/graphql/schema/type_membership.rb +51 -0
  206. data/lib/graphql/schema/union.rb +69 -15
  207. data/lib/graphql/schema/unique_within_type.rb +1 -2
  208. data/lib/graphql/schema/validator/allow_blank_validator.rb +29 -0
  209. data/lib/graphql/schema/validator/allow_null_validator.rb +26 -0
  210. data/lib/graphql/schema/validator/exclusion_validator.rb +33 -0
  211. data/lib/graphql/schema/validator/format_validator.rb +48 -0
  212. data/lib/graphql/schema/validator/inclusion_validator.rb +35 -0
  213. data/lib/graphql/schema/validator/length_validator.rb +59 -0
  214. data/lib/graphql/schema/validator/numericality_validator.rb +82 -0
  215. data/lib/graphql/schema/validator/required_validator.rb +82 -0
  216. data/lib/graphql/schema/validator.rb +171 -0
  217. data/lib/graphql/schema/warden.rb +330 -59
  218. data/lib/graphql/schema/wrapper.rb +0 -5
  219. data/lib/graphql/schema.rb +985 -858
  220. data/lib/graphql/static_validation/all_rules.rb +4 -1
  221. data/lib/graphql/static_validation/base_visitor.rb +33 -32
  222. data/lib/graphql/static_validation/definition_dependencies.rb +28 -14
  223. data/lib/graphql/static_validation/error.rb +3 -1
  224. data/lib/graphql/static_validation/literal_validator.rb +71 -28
  225. data/lib/graphql/static_validation/rules/argument_literals_are_compatible.rb +46 -79
  226. data/lib/graphql/static_validation/rules/argument_literals_are_compatible_error.rb +23 -6
  227. data/lib/graphql/static_validation/rules/arguments_are_defined.rb +35 -26
  228. data/lib/graphql/static_validation/rules/arguments_are_defined_error.rb +4 -2
  229. data/lib/graphql/static_validation/rules/directives_are_defined.rb +12 -6
  230. data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +14 -14
  231. data/lib/graphql/static_validation/rules/fields_are_defined_on_type.rb +4 -4
  232. data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +15 -7
  233. data/lib/graphql/static_validation/rules/fields_will_merge.rb +107 -57
  234. data/lib/graphql/static_validation/rules/fields_will_merge_error.rb +25 -4
  235. data/lib/graphql/static_validation/rules/fragment_spreads_are_possible.rb +3 -3
  236. data/lib/graphql/static_validation/rules/fragments_are_finite.rb +2 -2
  237. data/lib/graphql/static_validation/rules/input_object_names_are_unique.rb +30 -0
  238. data/lib/graphql/static_validation/rules/input_object_names_are_unique_error.rb +30 -0
  239. data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid.rb +66 -0
  240. data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid_error.rb +29 -0
  241. data/lib/graphql/static_validation/rules/query_root_exists.rb +17 -0
  242. data/lib/graphql/static_validation/rules/query_root_exists_error.rb +26 -0
  243. data/lib/graphql/static_validation/rules/required_arguments_are_present.rb +6 -4
  244. data/lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb +22 -10
  245. data/lib/graphql/static_validation/rules/unique_directives_per_location.rb +13 -7
  246. data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed.rb +12 -13
  247. data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +19 -14
  248. data/lib/graphql/static_validation/rules/variables_are_input_types.rb +1 -1
  249. data/lib/graphql/static_validation/rules/variables_are_used_and_defined.rb +5 -3
  250. data/lib/graphql/static_validation/validation_context.rb +17 -7
  251. data/lib/graphql/static_validation/validation_timeout_error.rb +25 -0
  252. data/lib/graphql/static_validation/validator.rb +32 -20
  253. data/lib/graphql/static_validation.rb +1 -3
  254. data/lib/graphql/string_encoding_error.rb +13 -3
  255. data/lib/graphql/subscriptions/action_cable_subscriptions.rb +134 -24
  256. data/lib/graphql/subscriptions/broadcast_analyzer.rb +81 -0
  257. data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +58 -0
  258. data/lib/graphql/subscriptions/event.rb +90 -27
  259. data/lib/graphql/subscriptions/instrumentation.rb +0 -47
  260. data/lib/graphql/subscriptions/serialize.rb +53 -6
  261. data/lib/graphql/subscriptions.rb +147 -62
  262. data/lib/graphql/tracing/active_support_notifications_trace.rb +16 -0
  263. data/lib/graphql/tracing/active_support_notifications_tracing.rb +8 -17
  264. data/lib/graphql/tracing/appoptics_trace.rb +251 -0
  265. data/lib/graphql/tracing/appoptics_tracing.rb +173 -0
  266. data/lib/graphql/tracing/appsignal_trace.rb +77 -0
  267. data/lib/graphql/tracing/appsignal_tracing.rb +23 -0
  268. data/lib/graphql/tracing/data_dog_trace.rb +196 -0
  269. data/lib/graphql/tracing/data_dog_tracing.rb +53 -2
  270. data/lib/graphql/tracing/legacy_trace.rb +69 -0
  271. data/lib/graphql/tracing/new_relic_trace.rb +75 -0
  272. data/lib/graphql/tracing/new_relic_tracing.rb +9 -12
  273. data/lib/graphql/tracing/notifications_trace.rb +45 -0
  274. data/lib/graphql/tracing/notifications_tracing.rb +59 -0
  275. data/lib/graphql/tracing/platform_trace.rb +118 -0
  276. data/lib/graphql/tracing/platform_tracing.rb +77 -31
  277. data/lib/graphql/tracing/prometheus_trace.rb +89 -0
  278. data/lib/graphql/tracing/prometheus_tracing/graphql_collector.rb +5 -2
  279. data/lib/graphql/tracing/prometheus_tracing.rb +11 -3
  280. data/lib/graphql/tracing/scout_trace.rb +72 -0
  281. data/lib/graphql/tracing/scout_tracing.rb +19 -0
  282. data/lib/graphql/tracing/statsd_trace.rb +56 -0
  283. data/lib/graphql/tracing/statsd_tracing.rb +42 -0
  284. data/lib/graphql/tracing/trace.rb +75 -0
  285. data/lib/graphql/tracing.rb +24 -67
  286. data/lib/graphql/type_kinds.rb +6 -3
  287. data/lib/graphql/types/big_int.rb +23 -0
  288. data/lib/graphql/types/int.rb +11 -3
  289. data/lib/graphql/types/iso_8601_date.rb +45 -0
  290. data/lib/graphql/types/iso_8601_date_time.rb +36 -8
  291. data/lib/graphql/types/json.rb +25 -0
  292. data/lib/graphql/types/relay/base_connection.rb +18 -90
  293. data/lib/graphql/types/relay/base_edge.rb +2 -36
  294. data/lib/graphql/types/relay/connection_behaviors.rb +193 -0
  295. data/lib/graphql/types/relay/edge_behaviors.rb +82 -0
  296. data/lib/graphql/types/relay/has_node_field.rb +41 -0
  297. data/lib/graphql/types/relay/has_nodes_field.rb +41 -0
  298. data/lib/graphql/types/relay/node.rb +2 -4
  299. data/lib/graphql/types/relay/node_behaviors.rb +25 -0
  300. data/lib/graphql/types/relay/page_info.rb +2 -14
  301. data/lib/graphql/types/relay/page_info_behaviors.rb +30 -0
  302. data/lib/graphql/types/relay.rb +10 -5
  303. data/lib/graphql/types/string.rb +8 -2
  304. data/lib/graphql/types.rb +3 -0
  305. data/lib/graphql/unauthorized_error.rb +3 -3
  306. data/lib/graphql/unauthorized_field_error.rb +1 -1
  307. data/lib/graphql/unresolved_type_error.rb +2 -2
  308. data/lib/graphql/version.rb +1 -1
  309. data/lib/graphql.rb +68 -54
  310. data/readme.md +4 -7
  311. metadata +150 -822
  312. data/lib/graphql/analysis/analyze_query.rb +0 -91
  313. data/lib/graphql/analysis/field_usage.rb +0 -45
  314. data/lib/graphql/analysis/max_query_complexity.rb +0 -26
  315. data/lib/graphql/analysis/max_query_depth.rb +0 -26
  316. data/lib/graphql/analysis/query_complexity.rb +0 -88
  317. data/lib/graphql/analysis/query_depth.rb +0 -56
  318. data/lib/graphql/analysis/reducer_state.rb +0 -48
  319. data/lib/graphql/argument.rb +0 -153
  320. data/lib/graphql/authorization.rb +0 -82
  321. data/lib/graphql/backwards_compatibility.rb +0 -60
  322. data/lib/graphql/base_type.rb +0 -226
  323. data/lib/graphql/boolean_type.rb +0 -2
  324. data/lib/graphql/compatibility/execution_specification/counter_schema.rb +0 -53
  325. data/lib/graphql/compatibility/execution_specification/specification_schema.rb +0 -200
  326. data/lib/graphql/compatibility/execution_specification.rb +0 -435
  327. data/lib/graphql/compatibility/lazy_execution_specification/lazy_schema.rb +0 -111
  328. data/lib/graphql/compatibility/lazy_execution_specification.rb +0 -213
  329. data/lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb +0 -91
  330. data/lib/graphql/compatibility/query_parser_specification/query_assertions.rb +0 -79
  331. data/lib/graphql/compatibility/query_parser_specification.rb +0 -264
  332. data/lib/graphql/compatibility/schema_parser_specification.rb +0 -680
  333. data/lib/graphql/compatibility.rb +0 -5
  334. data/lib/graphql/define/assign_argument.rb +0 -12
  335. data/lib/graphql/define/assign_connection.rb +0 -13
  336. data/lib/graphql/define/assign_enum_value.rb +0 -18
  337. data/lib/graphql/define/assign_global_id_field.rb +0 -11
  338. data/lib/graphql/define/assign_mutation_function.rb +0 -34
  339. data/lib/graphql/define/assign_object_field.rb +0 -42
  340. data/lib/graphql/define/defined_object_proxy.rb +0 -50
  341. data/lib/graphql/define/instance_definable.rb +0 -300
  342. data/lib/graphql/define/no_definition_error.rb +0 -7
  343. data/lib/graphql/define/non_null_with_bang.rb +0 -16
  344. data/lib/graphql/define/type_definer.rb +0 -31
  345. data/lib/graphql/define.rb +0 -31
  346. data/lib/graphql/deprecated_dsl.rb +0 -42
  347. data/lib/graphql/directive/deprecated_directive.rb +0 -13
  348. data/lib/graphql/directive/include_directive.rb +0 -2
  349. data/lib/graphql/directive/skip_directive.rb +0 -2
  350. data/lib/graphql/directive.rb +0 -104
  351. data/lib/graphql/enum_type.rb +0 -193
  352. data/lib/graphql/execution/execute.rb +0 -319
  353. data/lib/graphql/execution/flatten.rb +0 -40
  354. data/lib/graphql/execution/instrumentation.rb +0 -92
  355. data/lib/graphql/execution/interpreter/hash_response.rb +0 -46
  356. data/lib/graphql/execution/lazy/resolve.rb +0 -91
  357. data/lib/graphql/execution/typecast.rb +0 -50
  358. data/lib/graphql/field/resolve.rb +0 -59
  359. data/lib/graphql/field.rb +0 -330
  360. data/lib/graphql/filter.rb +0 -53
  361. data/lib/graphql/float_type.rb +0 -2
  362. data/lib/graphql/function.rb +0 -153
  363. data/lib/graphql/id_type.rb +0 -2
  364. data/lib/graphql/input_object_type.rb +0 -153
  365. data/lib/graphql/int_type.rb +0 -2
  366. data/lib/graphql/interface_type.rb +0 -86
  367. data/lib/graphql/internal_representation/document.rb +0 -27
  368. data/lib/graphql/internal_representation/node.rb +0 -206
  369. data/lib/graphql/internal_representation/print.rb +0 -51
  370. data/lib/graphql/internal_representation/rewrite.rb +0 -184
  371. data/lib/graphql/internal_representation/scope.rb +0 -88
  372. data/lib/graphql/internal_representation/visit.rb +0 -36
  373. data/lib/graphql/internal_representation.rb +0 -7
  374. data/lib/graphql/language/lexer.rl +0 -236
  375. data/lib/graphql/list_type.rb +0 -80
  376. data/lib/graphql/literal_validation_error.rb +0 -6
  377. data/lib/graphql/non_null_type.rb +0 -81
  378. data/lib/graphql/object_type.rb +0 -141
  379. data/lib/graphql/query/arguments.rb +0 -179
  380. data/lib/graphql/query/arguments_cache.rb +0 -25
  381. data/lib/graphql/query/executor.rb +0 -53
  382. data/lib/graphql/query/literal_input.rb +0 -115
  383. data/lib/graphql/query/serial_execution/field_resolution.rb +0 -92
  384. data/lib/graphql/query/serial_execution/operation_resolution.rb +0 -19
  385. data/lib/graphql/query/serial_execution/selection_resolution.rb +0 -23
  386. data/lib/graphql/query/serial_execution/value_resolution.rb +0 -87
  387. data/lib/graphql/query/serial_execution.rb +0 -39
  388. data/lib/graphql/relay/array_connection.rb +0 -85
  389. data/lib/graphql/relay/base_connection.rb +0 -172
  390. data/lib/graphql/relay/connection_instrumentation.rb +0 -54
  391. data/lib/graphql/relay/connection_resolve.rb +0 -43
  392. data/lib/graphql/relay/connection_type.rb +0 -40
  393. data/lib/graphql/relay/edge.rb +0 -27
  394. data/lib/graphql/relay/edge_type.rb +0 -18
  395. data/lib/graphql/relay/edges_instrumentation.rb +0 -40
  396. data/lib/graphql/relay/global_id_resolve.rb +0 -18
  397. data/lib/graphql/relay/mongo_relation_connection.rb +0 -50
  398. data/lib/graphql/relay/mutation/instrumentation.rb +0 -23
  399. data/lib/graphql/relay/mutation/resolve.rb +0 -56
  400. data/lib/graphql/relay/mutation/result.rb +0 -38
  401. data/lib/graphql/relay/mutation.rb +0 -190
  402. data/lib/graphql/relay/node.rb +0 -36
  403. data/lib/graphql/relay/page_info.rb +0 -7
  404. data/lib/graphql/relay/relation_connection.rb +0 -186
  405. data/lib/graphql/relay/type_extensions.rb +0 -30
  406. data/lib/graphql/scalar_type.rb +0 -135
  407. data/lib/graphql/schema/catchall_middleware.rb +0 -35
  408. data/lib/graphql/schema/default_parse_error.rb +0 -10
  409. data/lib/graphql/schema/default_type_error.rb +0 -15
  410. data/lib/graphql/schema/member/accepts_definition.rb +0 -152
  411. data/lib/graphql/schema/member/cached_graphql_definition.rb +0 -26
  412. data/lib/graphql/schema/member/instrumentation.rb +0 -121
  413. data/lib/graphql/schema/middleware_chain.rb +0 -82
  414. data/lib/graphql/schema/possible_types.rb +0 -39
  415. data/lib/graphql/schema/rescue_middleware.rb +0 -55
  416. data/lib/graphql/schema/timeout_middleware.rb +0 -85
  417. data/lib/graphql/schema/traversal.rb +0 -228
  418. data/lib/graphql/schema/validation.rb +0 -286
  419. data/lib/graphql/static_validation/default_visitor.rb +0 -15
  420. data/lib/graphql/static_validation/no_validate_visitor.rb +0 -10
  421. data/lib/graphql/static_validation/type_stack.rb +0 -216
  422. data/lib/graphql/string_type.rb +0 -2
  423. data/lib/graphql/subscriptions/subscription_root.rb +0 -66
  424. data/lib/graphql/tracing/skylight_tracing.rb +0 -61
  425. data/lib/graphql/types/relay/base_field.rb +0 -22
  426. data/lib/graphql/types/relay/base_interface.rb +0 -29
  427. data/lib/graphql/types/relay/base_object.rb +0 -26
  428. data/lib/graphql/types/relay/node_field.rb +0 -43
  429. data/lib/graphql/types/relay/nodes_field.rb +0 -45
  430. data/lib/graphql/union_type.rb +0 -100
  431. data/lib/graphql/upgrader/member.rb +0 -899
  432. data/lib/graphql/upgrader/schema.rb +0 -37
  433. data/spec/dummy/Gemfile +0 -12
  434. data/spec/dummy/Gemfile.lock +0 -157
  435. data/spec/dummy/README.md +0 -24
  436. data/spec/dummy/Rakefile +0 -7
  437. data/spec/dummy/app/assets/config/manifest.js +0 -1
  438. data/spec/dummy/app/assets/javascripts/application.js +0 -66
  439. data/spec/dummy/app/channels/application_cable/channel.rb +0 -5
  440. data/spec/dummy/app/channels/application_cable/connection.rb +0 -5
  441. data/spec/dummy/app/channels/graphql_channel.rb +0 -116
  442. data/spec/dummy/app/controllers/application_controller.rb +0 -4
  443. data/spec/dummy/app/controllers/pages_controller.rb +0 -5
  444. data/spec/dummy/app/helpers/application_helper.rb +0 -3
  445. data/spec/dummy/app/jobs/application_job.rb +0 -3
  446. data/spec/dummy/app/views/layouts/application.html.erb +0 -12
  447. data/spec/dummy/app/views/pages/show.html +0 -16
  448. data/spec/dummy/bin/bundle +0 -4
  449. data/spec/dummy/bin/rails +0 -5
  450. data/spec/dummy/bin/rake +0 -5
  451. data/spec/dummy/bin/setup +0 -31
  452. data/spec/dummy/bin/update +0 -27
  453. data/spec/dummy/bin/yarn +0 -12
  454. data/spec/dummy/config/application.rb +0 -30
  455. data/spec/dummy/config/boot.rb +0 -4
  456. data/spec/dummy/config/cable.yml +0 -10
  457. data/spec/dummy/config/environment.rb +0 -6
  458. data/spec/dummy/config/environments/development.rb +0 -40
  459. data/spec/dummy/config/environments/production.rb +0 -76
  460. data/spec/dummy/config/environments/test.rb +0 -37
  461. data/spec/dummy/config/initializers/application_controller_renderer.rb +0 -9
  462. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -8
  463. data/spec/dummy/config/initializers/cookies_serializer.rb +0 -6
  464. data/spec/dummy/config/initializers/filter_parameter_logging.rb +0 -5
  465. data/spec/dummy/config/initializers/inflections.rb +0 -17
  466. data/spec/dummy/config/initializers/mime_types.rb +0 -5
  467. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -10
  468. data/spec/dummy/config/locales/en.yml +0 -33
  469. data/spec/dummy/config/puma.rb +0 -57
  470. data/spec/dummy/config/routes.rb +0 -4
  471. data/spec/dummy/config/secrets.yml +0 -32
  472. data/spec/dummy/config.ru +0 -6
  473. data/spec/dummy/log/test.log +0 -199
  474. data/spec/dummy/package.json +0 -5
  475. data/spec/dummy/public/404.html +0 -67
  476. data/spec/dummy/public/422.html +0 -67
  477. data/spec/dummy/public/500.html +0 -66
  478. data/spec/dummy/public/apple-touch-icon-precomposed.png +0 -0
  479. data/spec/dummy/public/apple-touch-icon.png +0 -0
  480. data/spec/dummy/public/favicon.ico +0 -0
  481. data/spec/dummy/public/robots.txt +0 -1
  482. data/spec/dummy/test/application_system_test_case.rb +0 -6
  483. data/spec/dummy/test/system/action_cable_subscription_test.rb +0 -45
  484. data/spec/dummy/test/test_helper.rb +0 -4
  485. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4w/4wzXRZrAkwKdgYaSE0pid5eB-fer8vSfSku_NPg4rMA.cache +0 -0
  486. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7I/7IHVBiJT06QSpgLpLoJIxboQ0B-D_tMTxsvoezBTV3Q.cache +0 -1
  487. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8w/8wY_SKagj8wHuwGNAAf6JnQ8joMbC6cEYpHrTAI8Urc.cache +0 -1
  488. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AK/AKzz1u6bGb4auXcrObA_g5LL-oV0ejNGa448AgAi_WQ.cache +0 -1
  489. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ET/ETW4uxvaYpruL8y6_ZptUH82ZowMaHIqvg5WexBFdEM.cache +0 -3
  490. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F1/F1TWpjjyA56k9Z90n5B3xRn7DUdGjX73QCkYC6k07JQ.cache +0 -0
  491. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F8/F8MUNRzORGFgr329fNM0xLaoWCXdv3BIalT7dsvLfjs.cache +0 -2
  492. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KB/KB07ZaKNC5uXJ7TjLi-WqnY6g7dq8wWp_8N3HNjBNxg.cache +0 -2
  493. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ms/MsKSimH_UCB-H1tLvDABDHuvGciuoW6kVqQWDrXU5FQ.cache +0 -0
  494. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Mt/Mtci-Kim50aPOmeClD4AIicKn1d1WJ0n454IjSd94sk.cache +0 -0
  495. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QH/QHt3Tc1Y6M66Oo_pDuMyWrQNs4Pp3SMeZR5K1wJj2Ts.cache +0 -1
  496. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XU/XU4k1OXnfMils5SrirorPvDSyDSqiOWLZNtmAH1HH8k.cache +0 -0
  497. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZI/ZIof7mZxWWCnraIFOCuV6a8QRWzKJXJnx2Xd7C0ZyX0.cache +0 -1
  498. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cG/cGc_puuPS5pZKgUcy1Y_i1L6jl5UtsiIrMH59rTzR6c.cache +0 -3
  499. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/df/dfro_B6bx3KP1Go-7jEOqqZ2j4hVRseXIc3es9PKQno.cache +0 -1
  500. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jO/jO1DfbqnG0mTULsjJJANc3fefrG2zt7DIMmcptMT628.cache +0 -1
  501. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pE/pE7gO6pQ-z187Swb4hT554wmqsq-cNzgPWLrCz-LQQQ.cache +0 -0
  502. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/r9/r9iU1l58a6rxkZSW5RSC52_tD-_UQuHxoMVnkfJ7Mhs.cache +0 -1
  503. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xi/xitPPFfPIyDMpaznV0sBBcw8eSCV8PJcLLWin78sCgE.cache +0 -0
  504. data/spec/dummy/tmp/screenshots/failures_test_it_handles_subscriptions.png +0 -0
  505. data/spec/fixtures/upgrader/account.original.rb +0 -19
  506. data/spec/fixtures/upgrader/account.transformed.rb +0 -20
  507. data/spec/fixtures/upgrader/blame_range.original.rb +0 -43
  508. data/spec/fixtures/upgrader/blame_range.transformed.rb +0 -30
  509. data/spec/fixtures/upgrader/date_time.original.rb +0 -24
  510. data/spec/fixtures/upgrader/date_time.transformed.rb +0 -23
  511. data/spec/fixtures/upgrader/delete_project.original.rb +0 -28
  512. data/spec/fixtures/upgrader/delete_project.transformed.rb +0 -27
  513. data/spec/fixtures/upgrader/gist_order_field.original.rb +0 -14
  514. data/spec/fixtures/upgrader/gist_order_field.transformed.rb +0 -13
  515. data/spec/fixtures/upgrader/increment_count.original.rb +0 -59
  516. data/spec/fixtures/upgrader/increment_count.transformed.rb +0 -50
  517. data/spec/fixtures/upgrader/photo.original.rb +0 -10
  518. data/spec/fixtures/upgrader/photo.transformed.rb +0 -12
  519. data/spec/fixtures/upgrader/release_order.original.rb +0 -15
  520. data/spec/fixtures/upgrader/release_order.transformed.rb +0 -14
  521. data/spec/fixtures/upgrader/starrable.original.rb +0 -49
  522. data/spec/fixtures/upgrader/starrable.transformed.rb +0 -46
  523. data/spec/fixtures/upgrader/subscribable.original.rb +0 -55
  524. data/spec/fixtures/upgrader/subscribable.transformed.rb +0 -51
  525. data/spec/fixtures/upgrader/type_x.original.rb +0 -65
  526. data/spec/fixtures/upgrader/type_x.transformed.rb +0 -56
  527. data/spec/graphql/analysis/analyze_query_spec.rb +0 -272
  528. data/spec/graphql/analysis/ast/field_usage_spec.rb +0 -51
  529. data/spec/graphql/analysis/ast/max_query_complexity_spec.rb +0 -120
  530. data/spec/graphql/analysis/ast/max_query_depth_spec.rb +0 -114
  531. data/spec/graphql/analysis/ast/query_complexity_spec.rb +0 -299
  532. data/spec/graphql/analysis/ast/query_depth_spec.rb +0 -108
  533. data/spec/graphql/analysis/ast_spec.rb +0 -269
  534. data/spec/graphql/analysis/field_usage_spec.rb +0 -62
  535. data/spec/graphql/analysis/max_query_complexity_spec.rb +0 -102
  536. data/spec/graphql/analysis/max_query_depth_spec.rb +0 -101
  537. data/spec/graphql/analysis/query_complexity_spec.rb +0 -301
  538. data/spec/graphql/analysis/query_depth_spec.rb +0 -81
  539. data/spec/graphql/argument_spec.rb +0 -159
  540. data/spec/graphql/authorization_spec.rb +0 -901
  541. data/spec/graphql/backtrace_spec.rb +0 -206
  542. data/spec/graphql/base_type_spec.rb +0 -171
  543. data/spec/graphql/boolean_type_spec.rb +0 -21
  544. data/spec/graphql/compatibility/execution_specification_spec.rb +0 -4
  545. data/spec/graphql/compatibility/lazy_execution_specification_spec.rb +0 -4
  546. data/spec/graphql/compatibility/query_parser_specification_spec.rb +0 -6
  547. data/spec/graphql/compatibility/schema_parser_specification_spec.rb +0 -6
  548. data/spec/graphql/define/assign_argument_spec.rb +0 -61
  549. data/spec/graphql/define/instance_definable_spec.rb +0 -203
  550. data/spec/graphql/directive/skip_directive_spec.rb +0 -9
  551. data/spec/graphql/directive_spec.rb +0 -295
  552. data/spec/graphql/enum_type_spec.rb +0 -158
  553. data/spec/graphql/execution/execute_spec.rb +0 -303
  554. data/spec/graphql/execution/instrumentation_spec.rb +0 -184
  555. data/spec/graphql/execution/interpreter_spec.rb +0 -485
  556. data/spec/graphql/execution/lazy/lazy_method_map_spec.rb +0 -57
  557. data/spec/graphql/execution/lazy_spec.rb +0 -240
  558. data/spec/graphql/execution/lookahead_spec.rb +0 -363
  559. data/spec/graphql/execution/multiplex_spec.rb +0 -211
  560. data/spec/graphql/execution/typecast_spec.rb +0 -47
  561. data/spec/graphql/execution_error_spec.rb +0 -325
  562. data/spec/graphql/field_spec.rb +0 -246
  563. data/spec/graphql/float_type_spec.rb +0 -16
  564. data/spec/graphql/function_spec.rb +0 -129
  565. data/spec/graphql/id_type_spec.rb +0 -33
  566. data/spec/graphql/input_object_type_spec.rb +0 -25
  567. data/spec/graphql/int_type_spec.rb +0 -35
  568. data/spec/graphql/interface_type_spec.rb +0 -196
  569. data/spec/graphql/internal_representation/print_spec.rb +0 -41
  570. data/spec/graphql/internal_representation/rewrite_spec.rb +0 -376
  571. data/spec/graphql/introspection/directive_type_spec.rb +0 -61
  572. data/spec/graphql/introspection/input_value_type_spec.rb +0 -105
  573. data/spec/graphql/introspection/introspection_query_spec.rb +0 -59
  574. data/spec/graphql/introspection/schema_type_spec.rb +0 -56
  575. data/spec/graphql/introspection/type_type_spec.rb +0 -155
  576. data/spec/graphql/language/block_string_spec.rb +0 -70
  577. data/spec/graphql/language/definition_slice_spec.rb +0 -226
  578. data/spec/graphql/language/document_from_schema_definition_spec.rb +0 -770
  579. data/spec/graphql/language/equality_spec.rb +0 -84
  580. data/spec/graphql/language/generation_spec.rb +0 -38
  581. data/spec/graphql/language/lexer_spec.rb +0 -135
  582. data/spec/graphql/language/nodes_spec.rb +0 -67
  583. data/spec/graphql/language/parser_spec.rb +0 -175
  584. data/spec/graphql/language/printer_spec.rb +0 -215
  585. data/spec/graphql/language/visitor_spec.rb +0 -400
  586. data/spec/graphql/list_type_spec.rb +0 -57
  587. data/spec/graphql/non_null_type_spec.rb +0 -48
  588. data/spec/graphql/object_type_spec.rb +0 -197
  589. data/spec/graphql/query/arguments_spec.rb +0 -346
  590. data/spec/graphql/query/context_spec.rb +0 -292
  591. data/spec/graphql/query/executor_spec.rb +0 -314
  592. data/spec/graphql/query/literal_input_spec.rb +0 -91
  593. data/spec/graphql/query/result_spec.rb +0 -29
  594. data/spec/graphql/query/serial_execution/value_resolution_spec.rb +0 -109
  595. data/spec/graphql/query_spec.rb +0 -800
  596. data/spec/graphql/rake_task_spec.rb +0 -59
  597. data/spec/graphql/scalar_type_spec.rb +0 -66
  598. data/spec/graphql/schema/argument_spec.rb +0 -127
  599. data/spec/graphql/schema/build_from_definition_spec.rb +0 -1187
  600. data/spec/graphql/schema/catchall_middleware_spec.rb +0 -35
  601. data/spec/graphql/schema/directive/feature_spec.rb +0 -81
  602. data/spec/graphql/schema/directive/transform_spec.rb +0 -39
  603. data/spec/graphql/schema/enum_spec.rb +0 -83
  604. data/spec/graphql/schema/enum_value_spec.rb +0 -24
  605. data/spec/graphql/schema/field_extension_spec.rb +0 -115
  606. data/spec/graphql/schema/field_spec.rb +0 -301
  607. data/spec/graphql/schema/finder_spec.rb +0 -135
  608. data/spec/graphql/schema/input_object_spec.rb +0 -238
  609. data/spec/graphql/schema/instrumentation_spec.rb +0 -43
  610. data/spec/graphql/schema/interface_spec.rb +0 -215
  611. data/spec/graphql/schema/introspection_system_spec.rb +0 -47
  612. data/spec/graphql/schema/list_spec.rb +0 -46
  613. data/spec/graphql/schema/loader_spec.rb +0 -286
  614. data/spec/graphql/schema/member/accepts_definition_spec.rb +0 -115
  615. data/spec/graphql/schema/member/build_type_spec.rb +0 -63
  616. data/spec/graphql/schema/member/scoped_spec.rb +0 -177
  617. data/spec/graphql/schema/member/type_system_helpers_spec.rb +0 -63
  618. data/spec/graphql/schema/middleware_chain_spec.rb +0 -57
  619. data/spec/graphql/schema/mutation_spec.rb +0 -150
  620. data/spec/graphql/schema/non_null_spec.rb +0 -46
  621. data/spec/graphql/schema/object_spec.rb +0 -244
  622. data/spec/graphql/schema/printer_spec.rb +0 -869
  623. data/spec/graphql/schema/relay_classic_mutation_spec.rb +0 -234
  624. data/spec/graphql/schema/rescue_middleware_spec.rb +0 -74
  625. data/spec/graphql/schema/resolver_spec.rb +0 -640
  626. data/spec/graphql/schema/scalar_spec.rb +0 -101
  627. data/spec/graphql/schema/subscription_spec.rb +0 -416
  628. data/spec/graphql/schema/timeout_middleware_spec.rb +0 -188
  629. data/spec/graphql/schema/traversal_spec.rb +0 -222
  630. data/spec/graphql/schema/type_expression_spec.rb +0 -39
  631. data/spec/graphql/schema/union_spec.rb +0 -72
  632. data/spec/graphql/schema/unique_within_type_spec.rb +0 -44
  633. data/spec/graphql/schema/validation_spec.rb +0 -355
  634. data/spec/graphql/schema/warden_spec.rb +0 -926
  635. data/spec/graphql/static_validation/rules/argument_literals_are_compatible_spec.rb +0 -413
  636. data/spec/graphql/static_validation/rules/argument_names_are_unique_spec.rb +0 -44
  637. data/spec/graphql/static_validation/rules/arguments_are_defined_spec.rb +0 -112
  638. data/spec/graphql/static_validation/rules/directives_are_defined_spec.rb +0 -35
  639. data/spec/graphql/static_validation/rules/directives_are_in_valid_locations_spec.rb +0 -42
  640. data/spec/graphql/static_validation/rules/fields_are_defined_on_type_spec.rb +0 -167
  641. data/spec/graphql/static_validation/rules/fields_have_appropriate_selections_spec.rb +0 -66
  642. data/spec/graphql/static_validation/rules/fields_will_merge_spec.rb +0 -740
  643. data/spec/graphql/static_validation/rules/fragment_names_are_unique_spec.rb +0 -28
  644. data/spec/graphql/static_validation/rules/fragment_spreads_are_possible_spec.rb +0 -52
  645. data/spec/graphql/static_validation/rules/fragment_types_exist_spec.rb +0 -42
  646. data/spec/graphql/static_validation/rules/fragments_are_finite_spec.rb +0 -123
  647. data/spec/graphql/static_validation/rules/fragments_are_named_spec.rb +0 -24
  648. data/spec/graphql/static_validation/rules/fragments_are_on_composite_types_spec.rb +0 -56
  649. data/spec/graphql/static_validation/rules/fragments_are_used_spec.rb +0 -61
  650. data/spec/graphql/static_validation/rules/mutation_root_exists_spec.rb +0 -39
  651. data/spec/graphql/static_validation/rules/no_definitions_are_present_spec.rb +0 -62
  652. data/spec/graphql/static_validation/rules/operation_names_are_valid_spec.rb +0 -82
  653. data/spec/graphql/static_validation/rules/required_arguments_are_present_spec.rb +0 -73
  654. data/spec/graphql/static_validation/rules/required_input_object_attributes_are_present_spec.rb +0 -58
  655. data/spec/graphql/static_validation/rules/subscription_root_exists_spec.rb +0 -34
  656. data/spec/graphql/static_validation/rules/unique_directives_per_location_spec.rb +0 -188
  657. data/spec/graphql/static_validation/rules/variable_default_values_are_correctly_typed_spec.rb +0 -196
  658. data/spec/graphql/static_validation/rules/variable_names_are_unique_spec.rb +0 -23
  659. data/spec/graphql/static_validation/rules/variable_usages_are_allowed_spec.rb +0 -236
  660. data/spec/graphql/static_validation/rules/variables_are_input_types_spec.rb +0 -78
  661. data/spec/graphql/static_validation/rules/variables_are_used_and_defined_spec.rb +0 -81
  662. data/spec/graphql/static_validation/type_stack_spec.rb +0 -29
  663. data/spec/graphql/static_validation/validator_spec.rb +0 -204
  664. data/spec/graphql/string_type_spec.rb +0 -80
  665. data/spec/graphql/subscriptions/serialize_spec.rb +0 -49
  666. data/spec/graphql/subscriptions_spec.rb +0 -502
  667. data/spec/graphql/tracing/new_relic_tracing_spec.rb +0 -63
  668. data/spec/graphql/tracing/platform_tracing_spec.rb +0 -137
  669. data/spec/graphql/tracing/prometheus_tracing_spec.rb +0 -42
  670. data/spec/graphql/tracing/scout_tracing_spec.rb +0 -17
  671. data/spec/graphql/tracing/skylight_tracing_spec.rb +0 -63
  672. data/spec/graphql/tracing_spec.rb +0 -52
  673. data/spec/graphql/types/iso_8601_date_time_spec.rb +0 -137
  674. data/spec/graphql/union_type_spec.rb +0 -211
  675. data/spec/graphql/upgrader/member_spec.rb +0 -583
  676. data/spec/graphql/upgrader/schema_spec.rb +0 -82
  677. data/spec/integration/mongoid/graphql/relay/mongo_relation_connection_spec.rb +0 -528
  678. data/spec/integration/mongoid/spec_helper.rb +0 -2
  679. data/spec/integration/mongoid/star_trek/data.rb +0 -126
  680. data/spec/integration/mongoid/star_trek/schema.rb +0 -425
  681. data/spec/integration/rails/data.rb +0 -110
  682. data/spec/integration/rails/generators/base_generator_test.rb +0 -7
  683. data/spec/integration/rails/generators/graphql/enum_generator_spec.rb +0 -30
  684. data/spec/integration/rails/generators/graphql/install_generator_spec.rb +0 -218
  685. data/spec/integration/rails/generators/graphql/interface_generator_spec.rb +0 -34
  686. data/spec/integration/rails/generators/graphql/loader_generator_spec.rb +0 -59
  687. data/spec/integration/rails/generators/graphql/mutation_generator_spec.rb +0 -71
  688. data/spec/integration/rails/generators/graphql/object_generator_spec.rb +0 -54
  689. data/spec/integration/rails/generators/graphql/scalar_generator_spec.rb +0 -28
  690. data/spec/integration/rails/generators/graphql/union_generator_spec.rb +0 -67
  691. data/spec/integration/rails/graphql/input_object_type_spec.rb +0 -364
  692. data/spec/integration/rails/graphql/query/variables_spec.rb +0 -375
  693. data/spec/integration/rails/graphql/relay/array_connection_spec.rb +0 -290
  694. data/spec/integration/rails/graphql/relay/base_connection_spec.rb +0 -101
  695. data/spec/integration/rails/graphql/relay/connection_instrumentation_spec.rb +0 -80
  696. data/spec/integration/rails/graphql/relay/connection_resolve_spec.rb +0 -79
  697. data/spec/integration/rails/graphql/relay/connection_type_spec.rb +0 -106
  698. data/spec/integration/rails/graphql/relay/edge_spec.rb +0 -10
  699. data/spec/integration/rails/graphql/relay/mutation_spec.rb +0 -387
  700. data/spec/integration/rails/graphql/relay/node_spec.rb +0 -263
  701. data/spec/integration/rails/graphql/relay/page_info_spec.rb +0 -111
  702. data/spec/integration/rails/graphql/relay/range_add_spec.rb +0 -117
  703. data/spec/integration/rails/graphql/relay/relation_connection_spec.rb +0 -837
  704. data/spec/integration/rails/graphql/schema_spec.rb +0 -476
  705. data/spec/integration/rails/graphql/tracing/active_support_notifications_tracing_spec.rb +0 -62
  706. data/spec/integration/rails/spec_helper.rb +0 -25
  707. data/spec/integration/tmp/app/graphql/types/family_type.rb +0 -9
  708. data/spec/spec_helper.rb +0 -116
  709. data/spec/support/dummy/data.rb +0 -45
  710. data/spec/support/dummy/schema.rb +0 -492
  711. data/spec/support/error_bubbling_helpers.rb +0 -23
  712. data/spec/support/global_id.rb +0 -23
  713. data/spec/support/jazz.rb +0 -759
  714. data/spec/support/lazy_helpers.rb +0 -192
  715. data/spec/support/magic_cards/schema.graphql +0 -33
  716. data/spec/support/minimum_input_object.rb +0 -21
  717. data/spec/support/new_relic.rb +0 -27
  718. data/spec/support/parser/filename_example.graphql +0 -5
  719. data/spec/support/parser/filename_example_error_1.graphql +0 -4
  720. data/spec/support/parser/filename_example_error_2.graphql +0 -5
  721. data/spec/support/skylight.rb +0 -39
  722. data/spec/support/star_wars/schema.rb +0 -465
  723. data/spec/support/static_validation_helpers.rb +0 -32
@@ -1,1187 +0,0 @@
1
- # frozen_string_literal: true
2
- require "spec_helper"
3
-
4
- describe GraphQL::Schema::BuildFromDefinition do
5
- # Build a schema from `definition` and assert that it
6
- # prints out the same string.
7
- # Then return the built schema.
8
- def build_schema_and_compare_output(definition)
9
- built_schema = GraphQL::Schema.from_definition(definition)
10
- assert_equal definition, GraphQL::Schema::Printer.print_schema(built_schema)
11
- built_schema
12
- end
13
-
14
- describe '.build' do
15
- it 'can build a schema with a simple type' do
16
- schema = <<-SCHEMA
17
- schema {
18
- query: HelloScalars
19
- }
20
-
21
- type HelloScalars {
22
- bool: Boolean
23
- float: Float
24
- id: ID
25
- int: Int
26
- str: String!
27
- }
28
- SCHEMA
29
-
30
- build_schema_and_compare_output(schema.chop)
31
- end
32
-
33
- it 'can build a schema with default input object values' do
34
- schema = <<-SCHEMA
35
- input InputObject {
36
- a: Int
37
- }
38
-
39
- type Query {
40
- a(input: InputObject = {a: 1}): String
41
- }
42
- SCHEMA
43
-
44
- build_schema_and_compare_output(schema.chop)
45
- end
46
-
47
- it 'can build a schema with directives' do
48
- schema = <<-SCHEMA
49
- schema {
50
- query: Hello
51
- }
52
-
53
- directive @foo(arg: Int, nullDefault: Int = null) on FIELD
54
-
55
- type Hello {
56
- str: String
57
- }
58
- SCHEMA
59
-
60
- build_schema_and_compare_output(schema.chop)
61
- end
62
-
63
- it 'supports descriptions and definition_line' do
64
- schema = <<-SCHEMA
65
- schema {
66
- query: Hello
67
- }
68
-
69
- """
70
- This is a directive
71
- """
72
- directive @foo(
73
- """
74
- It has an argument
75
- """
76
- arg: Int
77
- ) on FIELD
78
-
79
- """
80
- With an enum
81
- """
82
- enum Color {
83
- BLUE
84
-
85
- """
86
- Not a creative color
87
- """
88
- GREEN
89
- RED
90
- }
91
-
92
- """
93
- What a great type
94
- """
95
- type Hello implements I {
96
- anEnum(s: S): Color
97
-
98
- """
99
- And a field to boot
100
- """
101
- str(i: Input): String
102
- }
103
-
104
- """
105
- An interface
106
- """
107
- interface I {
108
- str(i: Input): String
109
- }
110
-
111
- """
112
- And an Input
113
- """
114
- input Input {
115
- s: String
116
- }
117
-
118
- """
119
- A scalar
120
- """
121
- scalar S
122
-
123
- """
124
- And a union
125
- """
126
- union U = Hello
127
- SCHEMA
128
-
129
- build_schema_and_compare_output(schema.chop)
130
-
131
- built_schema = GraphQL::Schema.from_definition(schema)
132
- # The schema's are the same since there's no description
133
- assert_equal 1, built_schema.ast_node.line
134
- assert_equal 1, built_schema.ast_node.definition_line
135
-
136
- # These account for description:
137
- assert_equal 5, built_schema.directives["foo"].ast_node.line, "The ast_node.line points to the description"
138
- assert_equal 8, built_schema.directives["foo"].ast_node.definition_line, "The ast_node.definition_line points to the definition"
139
-
140
- arg = built_schema.directives["foo"].arguments["arg"]
141
- assert_equal 9, arg.ast_node.line
142
- assert_equal 12, arg.ast_node.definition_line
143
-
144
- enum_type = built_schema.types["Color"]
145
- assert_equal 15, enum_type.ast_node.line, "The ast_node.line points to the description"
146
- assert_equal 18, enum_type.ast_node.definition_line, "The ast_node.definition_line points to the definition"
147
-
148
- enum_value = enum_type.values["GREEN"]
149
- assert_equal 21, enum_value.ast_node.line
150
- assert_equal 24, enum_value.ast_node.definition_line
151
-
152
- obj_type = built_schema.types["Hello"]
153
- assert_equal 28, obj_type.ast_node.line, "The ast_node.line points to the description"
154
- assert_equal 31, obj_type.ast_node.definition_line, "The ast_node.definition_line points to the definition"
155
-
156
- field = obj_type.fields["str"]
157
- assert_equal 34, field.ast_node.line
158
- assert_equal 37, field.ast_node.definition_line
159
-
160
- assert_equal 40, built_schema.types["I"].ast_node.line
161
- assert_equal 43, built_schema.types["I"].ast_node.definition_line
162
-
163
- assert_equal 47, built_schema.types["Input"].ast_node.line
164
- assert_equal 50, built_schema.types["Input"].ast_node.definition_line
165
-
166
- assert_equal 54, built_schema.types["S"].ast_node.line
167
- assert_equal 57, built_schema.types["S"].ast_node.definition_line
168
-
169
- assert_equal 59, built_schema.types["U"].ast_node.line
170
- assert_equal 62, built_schema.types["U"].ast_node.definition_line
171
- end
172
-
173
- it 'maintains built-in directives' do
174
- schema = <<-SCHEMA
175
- schema {
176
- query: Hello
177
- }
178
-
179
- type Hello {
180
- str: String
181
- }
182
- SCHEMA
183
-
184
- built_schema = GraphQL::Schema.from_definition(schema)
185
- assert_equal ['deprecated', 'include', 'skip'], built_schema.directives.keys.sort
186
- end
187
-
188
- it 'supports overriding built-in directives' do
189
- schema = <<-SCHEMA
190
- schema {
191
- query: Hello
192
- }
193
-
194
- directive @skip on FIELD
195
- directive @include on FIELD
196
- directive @deprecated on FIELD_DEFINITION
197
-
198
- type Hello {
199
- str: String
200
- }
201
- SCHEMA
202
-
203
- built_schema = GraphQL::Schema.from_definition(schema)
204
-
205
- refute built_schema.directives['skip'] == GraphQL::Directive::SkipDirective
206
- refute built_schema.directives['include'] == GraphQL::Directive::IncludeDirective
207
- refute built_schema.directives['deprecated'] == GraphQL::Directive::DeprecatedDirective
208
- end
209
-
210
- it 'supports adding directives while maintaining built-in directives' do
211
- schema = <<-SCHEMA
212
- schema @custom(thing: true) {
213
- query: Hello
214
- }
215
-
216
- directive @foo(arg: Int) on FIELD
217
- directive @custom(thing: Boolean) on SCHEMA
218
-
219
- type Hello {
220
- str: String
221
- }
222
- SCHEMA
223
-
224
- built_schema = GraphQL::Schema.from_definition(schema)
225
-
226
- assert built_schema.directives.keys.include?('skip')
227
- assert built_schema.directives.keys.include?('include')
228
- assert built_schema.directives.keys.include?('deprecated')
229
- assert built_schema.directives.keys.include?('foo')
230
- end
231
-
232
- it 'supports type modifiers' do
233
- schema = <<-SCHEMA
234
- schema {
235
- query: HelloScalars
236
- }
237
-
238
- type HelloScalars {
239
- listOfNonNullStrs: [String!]
240
- listOfStrs: [String]
241
- nonNullListOfNonNullStrs: [String!]!
242
- nonNullListOfStrs: [String]!
243
- nonNullStr: String!
244
- }
245
- SCHEMA
246
-
247
- build_schema_and_compare_output(schema.chop)
248
- end
249
-
250
- it 'supports recursive type' do
251
- schema = <<-SCHEMA
252
- schema {
253
- query: Recurse
254
- }
255
-
256
- type Recurse {
257
- recurse: Recurse
258
- str: String
259
- }
260
- SCHEMA
261
-
262
- build_schema_and_compare_output(schema.chop)
263
- end
264
-
265
- it 'supports two types circular' do
266
- schema = <<-SCHEMA
267
- schema {
268
- query: TypeOne
269
- }
270
-
271
- type TypeOne {
272
- str: String
273
- typeTwo: TypeTwo
274
- }
275
-
276
- type TypeTwo {
277
- str: String
278
- typeOne: TypeOne
279
- }
280
- SCHEMA
281
-
282
- build_schema_and_compare_output(schema.chop)
283
- end
284
-
285
- it 'supports single argument fields' do
286
- schema = <<-SCHEMA
287
- schema {
288
- query: Hello
289
- }
290
-
291
- type Hello {
292
- booleanToStr(bool: Boolean): String
293
- floatToStr(float: Float): String
294
- idToStr(id: ID): String
295
- str(int: Int): String
296
- strToStr(bool: String): String
297
- }
298
- SCHEMA
299
-
300
- build_schema_and_compare_output(schema.chop)
301
- end
302
-
303
- it 'properly understands connections' do
304
- schema = <<-SCHEMA
305
- schema {
306
- query: Type
307
- }
308
-
309
- type Organization {
310
- email: String
311
- }
312
-
313
- """
314
- The connection type for Organization.
315
- """
316
- type OrganizationConnection {
317
- """
318
- A list of edges.
319
- """
320
- edges: [OrganizationEdge]
321
-
322
- """
323
- A list of nodes.
324
- """
325
- nodes: [Organization]
326
-
327
- """
328
- Information to aid in pagination.
329
- """
330
- pageInfo: PageInfo!
331
-
332
- """
333
- Identifies the total count of items in the connection.
334
- """
335
- totalCount: Int!
336
- }
337
-
338
- """
339
- An edge in a connection.
340
- """
341
- type OrganizationEdge {
342
- """
343
- A cursor for use in pagination.
344
- """
345
- cursor: String!
346
-
347
- """
348
- The item at the end of the edge.
349
- """
350
- node: Organization
351
- }
352
-
353
- """
354
- Information about pagination in a connection.
355
- """
356
- type PageInfo {
357
- """
358
- When paginating forwards, the cursor to continue.
359
- """
360
- endCursor: String
361
-
362
- """
363
- When paginating forwards, are there more items?
364
- """
365
- hasNextPage: Boolean!
366
-
367
- """
368
- When paginating backwards, are there more items?
369
- """
370
- hasPreviousPage: Boolean!
371
-
372
- """
373
- When paginating backwards, the cursor to continue.
374
- """
375
- startCursor: String
376
- }
377
-
378
- type Type {
379
- name: String
380
- organization(
381
- """
382
- The login of the organization to find.
383
- """
384
- login: String!
385
- ): Organization
386
-
387
- """
388
- A list of organizations the user belongs to.
389
- """
390
- organizations(
391
- """
392
- Returns the elements in the list that come after the specified cursor.
393
- """
394
- after: String
395
-
396
- """
397
- Returns the elements in the list that come before the specified cursor.
398
- """
399
- before: String
400
-
401
- """
402
- Returns the first _n_ elements from the list.
403
- """
404
- first: Int
405
-
406
- """
407
- Returns the last _n_ elements from the list.
408
- """
409
- last: Int
410
- ): OrganizationConnection!
411
- }
412
- SCHEMA
413
-
414
- built_schema = build_schema_and_compare_output(schema.chop)
415
- obj = built_schema.types["Type"]
416
- refute obj.fields["organization"].connection?
417
- assert obj.fields["organizations"].connection?
418
- end
419
-
420
- it 'supports simple type with multiple arguments' do
421
- schema = <<-SCHEMA
422
- schema {
423
- query: Hello
424
- }
425
-
426
- type Hello {
427
- str(bool: Boolean, int: Int): String
428
- }
429
- SCHEMA
430
-
431
- build_schema_and_compare_output(schema.chop)
432
- end
433
-
434
- it 'supports simple type with interface' do
435
- schema = <<-SCHEMA
436
- schema {
437
- query: Hello
438
- }
439
-
440
- type Hello implements WorldInterface {
441
- str: String
442
- }
443
-
444
- interface WorldInterface {
445
- str: String
446
- }
447
- SCHEMA
448
-
449
- build_schema_and_compare_output(schema.chop)
450
- end
451
-
452
- it 'supports simple output enum' do
453
- schema = <<-SCHEMA
454
- schema {
455
- query: OutputEnumRoot
456
- }
457
-
458
- enum Hello {
459
- WORLD
460
- }
461
-
462
- type OutputEnumRoot {
463
- hello: Hello
464
- }
465
- SCHEMA
466
-
467
- build_schema_and_compare_output(schema.chop)
468
- end
469
-
470
- it 'supports simple input enum' do
471
- schema = <<-SCHEMA
472
- schema {
473
- query: InputEnumRoot
474
- }
475
-
476
- enum Hello {
477
- WORLD
478
- }
479
-
480
- type InputEnumRoot {
481
- str(hello: Hello): String
482
- }
483
- SCHEMA
484
-
485
- build_schema_and_compare_output(schema.chop)
486
- end
487
-
488
- it 'supports multiple value enum' do
489
- schema = <<-SCHEMA
490
- schema {
491
- query: OutputEnumRoot
492
- }
493
-
494
- enum Hello {
495
- RLD
496
- WO
497
- }
498
-
499
- type OutputEnumRoot {
500
- hello: Hello
501
- }
502
- SCHEMA
503
-
504
- build_schema_and_compare_output(schema.chop)
505
- end
506
-
507
- it 'supports simple union' do
508
- schema = <<-SCHEMA
509
- schema {
510
- query: Root
511
- }
512
-
513
- union Hello = World
514
-
515
- type Root {
516
- hello: Hello
517
- }
518
-
519
- type World {
520
- str: String
521
- }
522
- SCHEMA
523
-
524
- build_schema_and_compare_output(schema.chop)
525
- end
526
-
527
- it 'supports multiple union' do
528
- schema = <<-SCHEMA
529
- schema {
530
- query: Root
531
- }
532
-
533
- union Hello = WorldOne | WorldTwo
534
-
535
- type Root {
536
- hello: Hello
537
- }
538
-
539
- type WorldOne {
540
- str: String
541
- }
542
-
543
- type WorldTwo {
544
- str: String
545
- }
546
- SCHEMA
547
-
548
- build_schema_and_compare_output(schema.chop)
549
- end
550
-
551
- it 'supports custom scalar' do
552
- schema = <<-SCHEMA
553
- schema {
554
- query: Root
555
- }
556
-
557
- scalar CustomScalar
558
-
559
- type Root {
560
- customScalar: CustomScalar
561
- }
562
- SCHEMA
563
-
564
- built_schema = build_schema_and_compare_output(schema.chop)
565
- custom_scalar = built_schema.types["CustomScalar"]
566
- assert_equal true, custom_scalar.valid_isolated_input?("anything")
567
- assert_equal true, custom_scalar.valid_isolated_input?(12345)
568
- end
569
-
570
- it 'supports input object' do
571
- schema = <<-SCHEMA
572
- schema {
573
- query: Root
574
- }
575
-
576
- input Input {
577
- int: Int
578
- nullDefault: Int = null
579
- }
580
-
581
- type Root {
582
- field(in: Input): String
583
- }
584
- SCHEMA
585
-
586
- build_schema_and_compare_output(schema.chop)
587
- end
588
-
589
- it 'supports simple argument field with default value' do
590
- schema = <<-SCHEMA
591
- schema {
592
- query: Hello
593
- }
594
-
595
- enum Color {
596
- BLUE
597
- RED
598
- }
599
-
600
- type Hello {
601
- hello(color: Color = RED): String
602
- nullable(color: Color = null): String
603
- str(int: Int = 2): String
604
- }
605
- SCHEMA
606
-
607
- build_schema_and_compare_output(schema.chop)
608
- end
609
-
610
- it 'supports simple type with mutation' do
611
- schema = <<-SCHEMA
612
- schema {
613
- query: HelloScalars
614
- mutation: Mutation
615
- }
616
-
617
- type HelloScalars {
618
- bool: Boolean
619
- int: Int
620
- str: String
621
- }
622
-
623
- type Mutation {
624
- addHelloScalars(bool: Boolean, int: Int, str: String): HelloScalars
625
- }
626
- SCHEMA
627
-
628
- build_schema_and_compare_output(schema.chop)
629
- end
630
-
631
- it 'supports simple type with mutation and default values' do
632
- schema = <<-SCHEMA
633
- enum Color {
634
- BLUE
635
- RED
636
- }
637
-
638
- type Mutation {
639
- hello(color: Color = RED, int: Int, nullDefault: Int = null, str: String): String
640
- }
641
-
642
- type Query {
643
- str: String
644
- }
645
- SCHEMA
646
-
647
- build_schema_and_compare_output(schema.chop)
648
- end
649
-
650
- it 'supports simple type with subscription' do
651
- schema = <<-SCHEMA
652
- schema {
653
- query: HelloScalars
654
- subscription: Subscription
655
- }
656
-
657
- type HelloScalars {
658
- bool: Boolean
659
- int: Int
660
- str: String
661
- }
662
-
663
- type Subscription {
664
- subscribeHelloScalars(bool: Boolean, int: Int, str: String): HelloScalars
665
- }
666
- SCHEMA
667
-
668
- build_schema_and_compare_output(schema.chop)
669
- end
670
-
671
- it 'supports unreferenced type implementing referenced interface' do
672
- schema = <<-SCHEMA
673
- type Concrete implements Iface {
674
- key: String
675
- }
676
-
677
- interface Iface {
678
- key: String
679
- }
680
-
681
- type Query {
682
- iface: Iface
683
- }
684
- SCHEMA
685
-
686
- build_schema_and_compare_output(schema.chop)
687
- end
688
-
689
- it 'supports unreferenced type implementing referenced union' do
690
- schema = <<-SCHEMA
691
- type Concrete {
692
- key: String
693
- }
694
-
695
- type Query {
696
- union: Union
697
- }
698
-
699
- union Union = Concrete
700
- SCHEMA
701
-
702
- build_schema_and_compare_output(schema.chop)
703
- end
704
-
705
- it 'supports @deprecated' do
706
- schema = <<-SCHEMA
707
- enum MyEnum {
708
- OLD_VALUE @deprecated
709
- OTHER_VALUE @deprecated(reason: "Terrible reasons")
710
- VALUE
711
- }
712
-
713
- type Query {
714
- enum: MyEnum
715
- field1: String @deprecated
716
- field2: Int @deprecated(reason: "Because I said so")
717
- }
718
- SCHEMA
719
-
720
- build_schema_and_compare_output(schema.chop)
721
- end
722
-
723
- it 'supports empty types' do
724
- schema = <<-SCHEMA
725
- type Query {
726
- }
727
- SCHEMA
728
-
729
- build_schema_and_compare_output(schema.chop)
730
- end
731
-
732
- it "tracks original AST node" do
733
- schema_definition = <<-GRAPHQL
734
- schema @custom(thing: true) {
735
- query: Query
736
- }
737
-
738
- enum Enum {
739
- VALUE
740
- }
741
-
742
- type Query {
743
- field(argument: String): String
744
- deprecatedField(argument: String): String @deprecated(reason: "Test")
745
- }
746
-
747
- interface Interface {
748
- field(argument: String): String
749
- }
750
-
751
- union Union = Query
752
-
753
- scalar Scalar
754
-
755
- input Input {
756
- argument: String
757
- }
758
-
759
- directive @Directive (
760
- # Argument
761
- argument: String
762
- ) on SCHEMA
763
-
764
- type Type implements Interface {
765
- field(argument: String): String
766
- }
767
- GRAPHQL
768
-
769
- schema = GraphQL::Schema.from_definition(schema_definition)
770
-
771
- assert_equal [1, 1], schema.ast_node.position
772
- assert_equal [1, 8], schema.ast_node.directives.first.position
773
- assert_equal [5, 1], schema.types["Enum"].ast_node.position
774
- assert_equal [6, 3], schema.types["Enum"].values["VALUE"].ast_node.position
775
- assert_equal [9, 1], schema.types["Query"].ast_node.position
776
- assert_equal [10, 3], schema.types["Query"].fields["field"].ast_node.position
777
- assert_equal [10, 9], schema.types["Query"].fields["field"].arguments["argument"].ast_node.position
778
- assert_equal [11, 45], schema.types["Query"].fields["deprecatedField"].ast_node.directives[0].position
779
- assert_equal [11, 57], schema.types["Query"].fields["deprecatedField"].ast_node.directives[0].arguments[0].position
780
- assert_equal [14, 1], schema.types["Interface"].ast_node.position
781
- assert_equal [15, 3], schema.types["Interface"].fields["field"].ast_node.position
782
- assert_equal [15, 9], schema.types["Interface"].fields["field"].arguments["argument"].ast_node.position
783
- assert_equal [18, 1], schema.types["Union"].ast_node.position
784
- assert_equal [20, 1], schema.types["Scalar"].ast_node.position
785
- assert_equal [22, 1], schema.types["Input"].ast_node.position
786
- assert_equal [23, 3], schema.types["Input"].arguments["argument"].ast_node.position
787
- assert_equal [26, 1], schema.directives["Directive"].ast_node.position
788
- assert_equal [28, 3], schema.directives["Directive"].arguments["argument"].ast_node.position
789
- assert_equal [31, 22], schema.types["Type"].ast_node.interfaces[0].position
790
- end
791
- end
792
-
793
- describe 'Failures' do
794
- it 'Requires a schema definition or Query type' do
795
- schema = <<-SCHEMA
796
- type Hello {
797
- bar: Bar
798
- }
799
- SCHEMA
800
- err = assert_raises(GraphQL::Schema::InvalidDocumentError) do
801
- GraphQL::Schema.from_definition(schema)
802
- end
803
- assert_equal 'Must provide schema definition with query type or a type named Query.', err.message
804
- end
805
-
806
- it 'Allows only a single schema definition' do
807
- schema = <<-SCHEMA
808
- schema {
809
- query: Hello
810
- }
811
-
812
- schema {
813
- query: Hello
814
- }
815
-
816
- type Hello {
817
- bar: Bar
818
- }
819
- SCHEMA
820
-
821
- err = assert_raises(GraphQL::Schema::InvalidDocumentError) do
822
- GraphQL::Schema.from_definition(schema)
823
- end
824
- assert_equal 'Must provide only one schema definition.', err.message
825
- end
826
-
827
- it 'Requires a query type' do
828
- schema = <<-SCHEMA
829
- schema {
830
- mutation: Hello
831
- }
832
-
833
- type Hello {
834
- bar: Bar
835
- }
836
- SCHEMA
837
-
838
- err = assert_raises(GraphQL::Schema::InvalidDocumentError) do
839
- GraphQL::Schema.from_definition(schema)
840
- end
841
- assert_equal 'Must provide schema definition with query type or a type named Query.', err.message
842
- end
843
-
844
- it 'Unknown type referenced' do
845
- schema = <<-SCHEMA
846
- schema {
847
- query: Hello
848
- }
849
-
850
- type Hello {
851
- bar: Bar
852
- }
853
- SCHEMA
854
-
855
- err = assert_raises(GraphQL::Schema::InvalidDocumentError) do
856
- GraphQL::Schema.from_definition(schema)
857
- end
858
- assert_equal 'Type "Bar" not found in document.', err.message
859
- end
860
-
861
- it 'Unknown type in interface list' do
862
- schema = <<-SCHEMA
863
- schema {
864
- query: Hello
865
- }
866
-
867
- type Hello implements Bar {
868
- str: String
869
- }
870
- SCHEMA
871
-
872
- err = assert_raises(GraphQL::Schema::InvalidDocumentError) do
873
- GraphQL::Schema.from_definition(schema)
874
- end
875
- assert_equal 'Type "Bar" not found in document.', err.message
876
- end
877
-
878
- it 'Unknown type in union list' do
879
- schema = <<-SCHEMA
880
- schema {
881
- query: Hello
882
- }
883
-
884
- union TestUnion = Bar
885
-
886
- type Hello { testUnion: TestUnion }
887
- SCHEMA
888
-
889
- err = assert_raises(GraphQL::Schema::InvalidDocumentError) do
890
- GraphQL::Schema.from_definition(schema)
891
- end
892
- assert_equal 'Type "Bar" not found in document.', err.message
893
- end
894
-
895
- it 'Unknown query type' do
896
- schema = <<-SCHEMA
897
- schema {
898
- query: Wat
899
- }
900
-
901
- type Hello {
902
- str: String
903
- }
904
- SCHEMA
905
-
906
- err = assert_raises(GraphQL::Schema::InvalidDocumentError) do
907
- GraphQL::Schema.from_definition(schema)
908
- end
909
- assert_equal 'Specified query type "Wat" not found in document.', err.message
910
- end
911
-
912
- it 'Unknown mutation type' do
913
- schema = <<-SCHEMA
914
- schema {
915
- query: Hello
916
- mutation: Wat
917
- }
918
-
919
- type Hello {
920
- str: String
921
- }
922
- SCHEMA
923
-
924
- err = assert_raises(GraphQL::Schema::InvalidDocumentError) do
925
- GraphQL::Schema.from_definition(schema)
926
- end
927
- assert_equal 'Specified mutation type "Wat" not found in document.', err.message
928
- end
929
-
930
- it 'Unknown subscription type' do
931
- schema = <<-SCHEMA
932
- schema {
933
- query: Hello
934
- mutation: Wat
935
- subscription: Awesome
936
- }
937
-
938
- type Hello {
939
- str: String
940
- }
941
-
942
- type Wat {
943
- str: String
944
- }
945
- SCHEMA
946
-
947
- err = assert_raises(GraphQL::Schema::InvalidDocumentError) do
948
- GraphQL::Schema.from_definition(schema)
949
- end
950
- assert_equal 'Specified subscription type "Awesome" not found in document.', err.message
951
- end
952
-
953
- it 'Does not consider operation names' do
954
- schema = <<-SCHEMA
955
- schema {
956
- query: Foo
957
- }
958
-
959
- query Foo { field }
960
- SCHEMA
961
-
962
- err = assert_raises(GraphQL::Schema::InvalidDocumentError) do
963
- GraphQL::Schema.from_definition(schema)
964
- end
965
- assert_equal 'Specified query type "Foo" not found in document.', err.message
966
- end
967
-
968
- it 'Does not consider fragment names' do
969
- schema = <<-SCHEMA
970
- schema {
971
- query: Foo
972
- }
973
-
974
- fragment Foo on Type { field }
975
- SCHEMA
976
-
977
- err = assert_raises(GraphQL::Schema::InvalidDocumentError) do
978
- GraphQL::Schema.from_definition(schema)
979
- end
980
- assert_equal 'Specified query type "Foo" not found in document.', err.message
981
- end
982
- end
983
-
984
- describe "executable schema with resolver maps" do
985
- class Something
986
- def capitalize(args)
987
- args[:word].upcase
988
- end
989
- end
990
-
991
- let(:definition) {
992
- <<-GRAPHQL
993
- scalar Date
994
- scalar UndefinedScalar
995
- type Something { capitalize(word:String!): String }
996
- type A { a: String }
997
- type B { b: String }
998
- union Thing = A | B
999
- type Query {
1000
- hello: Something
1001
- thing: Thing
1002
- add_week(in: Date!): Date!
1003
- undefined_scalar(str: String, int: Int): UndefinedScalar
1004
- }
1005
- GRAPHQL
1006
- }
1007
-
1008
- let(:resolvers) {
1009
- {
1010
- Date: {
1011
- coerce_input: ->(val, ctx) {
1012
- Time.at(Float(val))
1013
- },
1014
- coerce_result: ->(val, ctx) {
1015
- val.to_f
1016
- }
1017
- },
1018
- resolve_type: ->(type, obj, ctx) {
1019
- return ctx.schema.types['A']
1020
- },
1021
- Query: {
1022
- add_week: ->(o,a,c) {
1023
- raise "No Time" unless a[:in].is_a? Time
1024
- a[:in]
1025
- },
1026
- hello: ->(o,a,c) {
1027
- Something.new
1028
- },
1029
- thing: ->(o,a,c) {
1030
- OpenStruct.new({a: "a"})
1031
- },
1032
- undefined_scalar: ->(o,a,c) {
1033
- a.values.first
1034
- }
1035
- }
1036
- }
1037
- }
1038
-
1039
- let(:schema) { GraphQL::Schema.from_definition(definition, default_resolve: resolvers) }
1040
-
1041
- it "resolves unions" do
1042
- result = schema.execute("query { thing { ... on A { a } } }")
1043
- assert_equal(result.to_json,'{"data":{"thing":{"a":"a"}}}')
1044
- end
1045
-
1046
- it "resolves scalars" do
1047
- result = schema.execute("query { add_week(in: 392277600.0) }")
1048
- assert_equal(result.to_json,'{"data":{"add_week":392277600.0}}')
1049
- end
1050
-
1051
- it "passes args from graphql to the object" do
1052
- result = schema.execute("query { hello { capitalize(word: \"hello\") }}")
1053
- assert_equal(result.to_json,'{"data":{"hello":{"capitalize":"HELLO"}}}')
1054
- end
1055
-
1056
- it "handles undefined scalar resolution with identity function" do
1057
- result = schema.execute <<-GRAPHQL
1058
- {
1059
- str: undefined_scalar(str: "abc")
1060
- int: undefined_scalar(int: 123)
1061
- }
1062
- GRAPHQL
1063
-
1064
- assert_equal({ "str" => "abc", "int" => 123 }, result["data"])
1065
- end
1066
- end
1067
-
1068
- describe "executable schemas from string" do
1069
- let(:schema_defn) {
1070
- <<-GRAPHQL
1071
- type Todo {text: String, from_context: String}
1072
- type Query { all_todos: [Todo]}
1073
- type Mutation { todo_add(text: String!): Todo}
1074
- GRAPHQL
1075
- }
1076
-
1077
- Todo = Struct.new(:text, :from_context)
1078
-
1079
- class RootResolver
1080
- attr_accessor :todos
1081
-
1082
- def initialize
1083
- @todos = [Todo.new("Pay the bills.")]
1084
- end
1085
-
1086
- def all_todos
1087
- @todos
1088
- end
1089
-
1090
- def todo_add(args, ctx) # this is a method and accepting arguments
1091
- todo = Todo.new(args[:text], ctx[:context_value])
1092
- @todos << todo
1093
- todo
1094
- end
1095
- end
1096
-
1097
- it "calls methods with args if args are defined" do
1098
- schema = GraphQL::Schema.from_definition(schema_defn)
1099
- root_values = RootResolver.new
1100
- schema.execute("mutation { todoAdd: todo_add(text: \"Buy Milk\") { text } }", root_value: root_values, context: {context_value: "bar"})
1101
- result = schema.execute("query { allTodos: all_todos { text, from_context } }", root_value: root_values)
1102
- assert_equal(result.to_json, '{"data":{"allTodos":[{"text":"Pay the bills.","from_context":null},{"text":"Buy Milk","from_context":"bar"}]}}')
1103
- end
1104
-
1105
- describe "hash of resolvers with defaults" do
1106
- let(:todos) { [Todo.new("Pay the bills.")] }
1107
- let(:schema) { GraphQL::Schema.from_definition(schema_defn, default_resolve: resolve_hash) }
1108
- let(:resolve_hash) {
1109
- h = base_hash
1110
- h["Query"] ||= {}
1111
- h["Query"]["all_todos"] = ->(obj, args, ctx) { obj }
1112
- h["Mutation"] ||= {}
1113
- h["Mutation"]["todo_add"] = ->(obj, args, ctx) {
1114
- todo = Todo.new(args[:text], ctx[:context_value])
1115
- obj << todo
1116
- todo
1117
- }
1118
- h
1119
- }
1120
-
1121
- let(:base_hash) {
1122
- # Fallback is to resolve by sending the field name
1123
- Hash.new { |h, k| h[k] = Hash.new { |h2, k2| ->(obj, args, ctx) { obj.public_send(k2) } } }
1124
- }
1125
-
1126
- it "accepts a hash of resolve functions" do
1127
- schema.execute("mutation { todoAdd: todo_add(text: \"Buy Milk\") { text } }", context: {context_value: "bar"}, root_value: todos)
1128
- result = schema.execute("query { allTodos: all_todos { text, from_context } }", root_value: todos)
1129
- assert_equal(result.to_json, '{"data":{"allTodos":[{"text":"Pay the bills.","from_context":null},{"text":"Buy Milk","from_context":"bar"}]}}')
1130
- end
1131
- end
1132
-
1133
- describe "custom resolve behavior" do
1134
- class AppResolver
1135
- def initialize
1136
- @todos = [Todo.new("Pay the bills.")]
1137
- @resolves = {
1138
- "Query" => {
1139
- "all_todos" => ->(obj, args, ctx) { @todos },
1140
- },
1141
- "Mutation" => {
1142
- "todo_add" => ->(obj, args, ctx) {
1143
- todo = Todo.new(args[:text], ctx[:context_value])
1144
- @todos << todo
1145
- todo
1146
- },
1147
- },
1148
- "Todo" => {
1149
- "text" => ->(obj, args, ctx) { obj.text },
1150
- "from_context" => ->(obj, args, ctx) { obj.from_context },
1151
- }
1152
- }
1153
- end
1154
-
1155
- def call(type, field, obj, args, ctx)
1156
- @resolves
1157
- .fetch(type.name)
1158
- .fetch(field.name)
1159
- .call(obj, args, ctx)
1160
- end
1161
- end
1162
-
1163
- it "accepts a default_resolve callable" do
1164
- schema = GraphQL::Schema.from_definition(schema_defn, default_resolve: AppResolver.new)
1165
- schema.execute("mutation { todoAdd: todo_add(text: \"Buy Milk\") { text } }", context: {context_value: "bar"})
1166
- result = schema.execute("query { allTodos: all_todos { text, from_context } }")
1167
- assert_equal(result.to_json, '{"data":{"allTodos":[{"text":"Pay the bills.","from_context":null},{"text":"Buy Milk","from_context":"bar"}]}}')
1168
- end
1169
- end
1170
-
1171
- describe "custom parser behavior" do
1172
- module BadParser
1173
- ParseError = Class.new(StandardError)
1174
-
1175
- def self.parse(string)
1176
- raise ParseError
1177
- end
1178
- end
1179
-
1180
- it 'accepts a parser callable' do
1181
- assert_raises(BadParser::ParseError) do
1182
- GraphQL::Schema.from_definition(schema_defn, parser: BadParser)
1183
- end
1184
- end
1185
- end
1186
- end
1187
- end