graphql 1.9.11 → 1.9.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (286) hide show
  1. checksums.yaml +4 -4
  2. data/lib/graphql/analysis/ast/query_complexity.rb +0 -8
  3. data/lib/graphql/analysis/ast/query_depth.rb +0 -8
  4. data/lib/graphql/analysis/ast/visitor.rb +26 -24
  5. data/lib/graphql/execution.rb +1 -0
  6. data/lib/graphql/execution/errors.rb +60 -0
  7. data/lib/graphql/execution/interpreter/runtime.rb +21 -17
  8. data/lib/graphql/static_validation/rules/fields_will_merge.rb +15 -8
  9. data/lib/graphql/version.rb +1 -1
  10. metadata +5 -556
  11. data/spec/dummy/Gemfile +0 -12
  12. data/spec/dummy/README.md +0 -24
  13. data/spec/dummy/Rakefile +0 -7
  14. data/spec/dummy/app/assets/config/manifest.js +0 -1
  15. data/spec/dummy/app/assets/javascripts/application.js +0 -66
  16. data/spec/dummy/app/channels/application_cable/channel.rb +0 -5
  17. data/spec/dummy/app/channels/application_cable/connection.rb +0 -5
  18. data/spec/dummy/app/channels/graphql_channel.rb +0 -116
  19. data/spec/dummy/app/controllers/application_controller.rb +0 -4
  20. data/spec/dummy/app/controllers/pages_controller.rb +0 -5
  21. data/spec/dummy/app/helpers/application_helper.rb +0 -3
  22. data/spec/dummy/app/jobs/application_job.rb +0 -3
  23. data/spec/dummy/app/views/layouts/application.html.erb +0 -12
  24. data/spec/dummy/app/views/pages/show.html +0 -16
  25. data/spec/dummy/bin/bundle +0 -4
  26. data/spec/dummy/bin/rails +0 -5
  27. data/spec/dummy/bin/rake +0 -5
  28. data/spec/dummy/bin/setup +0 -31
  29. data/spec/dummy/bin/update +0 -27
  30. data/spec/dummy/bin/yarn +0 -12
  31. data/spec/dummy/config.ru +0 -6
  32. data/spec/dummy/config/application.rb +0 -30
  33. data/spec/dummy/config/boot.rb +0 -4
  34. data/spec/dummy/config/cable.yml +0 -10
  35. data/spec/dummy/config/environment.rb +0 -6
  36. data/spec/dummy/config/environments/development.rb +0 -40
  37. data/spec/dummy/config/environments/production.rb +0 -76
  38. data/spec/dummy/config/environments/test.rb +0 -37
  39. data/spec/dummy/config/initializers/application_controller_renderer.rb +0 -9
  40. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -8
  41. data/spec/dummy/config/initializers/cookies_serializer.rb +0 -6
  42. data/spec/dummy/config/initializers/filter_parameter_logging.rb +0 -5
  43. data/spec/dummy/config/initializers/inflections.rb +0 -17
  44. data/spec/dummy/config/initializers/mime_types.rb +0 -5
  45. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -10
  46. data/spec/dummy/config/locales/en.yml +0 -33
  47. data/spec/dummy/config/puma.rb +0 -57
  48. data/spec/dummy/config/routes.rb +0 -4
  49. data/spec/dummy/config/secrets.yml +0 -32
  50. data/spec/dummy/package.json +0 -5
  51. data/spec/dummy/public/404.html +0 -67
  52. data/spec/dummy/public/422.html +0 -67
  53. data/spec/dummy/public/500.html +0 -66
  54. data/spec/dummy/public/apple-touch-icon-precomposed.png +0 -0
  55. data/spec/dummy/public/apple-touch-icon.png +0 -0
  56. data/spec/dummy/public/favicon.ico +0 -0
  57. data/spec/dummy/public/robots.txt +0 -1
  58. data/spec/dummy/test/application_system_test_case.rb +0 -6
  59. data/spec/dummy/test/system/action_cable_subscription_test.rb +0 -45
  60. data/spec/dummy/test/test_helper.rb +0 -4
  61. data/spec/fixtures/upgrader/account.original.rb +0 -19
  62. data/spec/fixtures/upgrader/account.transformed.rb +0 -20
  63. data/spec/fixtures/upgrader/blame_range.original.rb +0 -43
  64. data/spec/fixtures/upgrader/blame_range.transformed.rb +0 -30
  65. data/spec/fixtures/upgrader/date_time.original.rb +0 -24
  66. data/spec/fixtures/upgrader/date_time.transformed.rb +0 -23
  67. data/spec/fixtures/upgrader/delete_project.original.rb +0 -28
  68. data/spec/fixtures/upgrader/delete_project.transformed.rb +0 -27
  69. data/spec/fixtures/upgrader/gist_order_field.original.rb +0 -14
  70. data/spec/fixtures/upgrader/gist_order_field.transformed.rb +0 -13
  71. data/spec/fixtures/upgrader/increment_count.original.rb +0 -59
  72. data/spec/fixtures/upgrader/increment_count.transformed.rb +0 -50
  73. data/spec/fixtures/upgrader/mutation.original.rb +0 -28
  74. data/spec/fixtures/upgrader/mutation.transformed.rb +0 -28
  75. data/spec/fixtures/upgrader/photo.original.rb +0 -10
  76. data/spec/fixtures/upgrader/photo.transformed.rb +0 -12
  77. data/spec/fixtures/upgrader/release_order.original.rb +0 -15
  78. data/spec/fixtures/upgrader/release_order.transformed.rb +0 -14
  79. data/spec/fixtures/upgrader/starrable.original.rb +0 -49
  80. data/spec/fixtures/upgrader/starrable.transformed.rb +0 -46
  81. data/spec/fixtures/upgrader/subscribable.original.rb +0 -55
  82. data/spec/fixtures/upgrader/subscribable.transformed.rb +0 -51
  83. data/spec/fixtures/upgrader/type_x.original.rb +0 -65
  84. data/spec/fixtures/upgrader/type_x.transformed.rb +0 -56
  85. data/spec/graphql/analysis/analyze_query_spec.rb +0 -261
  86. data/spec/graphql/analysis/ast/field_usage_spec.rb +0 -51
  87. data/spec/graphql/analysis/ast/max_query_complexity_spec.rb +0 -120
  88. data/spec/graphql/analysis/ast/max_query_depth_spec.rb +0 -134
  89. data/spec/graphql/analysis/ast/query_complexity_spec.rb +0 -299
  90. data/spec/graphql/analysis/ast/query_depth_spec.rb +0 -108
  91. data/spec/graphql/analysis/ast_spec.rb +0 -296
  92. data/spec/graphql/analysis/field_usage_spec.rb +0 -62
  93. data/spec/graphql/analysis/max_query_complexity_spec.rb +0 -102
  94. data/spec/graphql/analysis/max_query_depth_spec.rb +0 -103
  95. data/spec/graphql/analysis/query_complexity_spec.rb +0 -301
  96. data/spec/graphql/analysis/query_depth_spec.rb +0 -81
  97. data/spec/graphql/argument_spec.rb +0 -159
  98. data/spec/graphql/authorization_spec.rb +0 -974
  99. data/spec/graphql/backtrace_spec.rb +0 -206
  100. data/spec/graphql/base_type_spec.rb +0 -171
  101. data/spec/graphql/boolean_type_spec.rb +0 -21
  102. data/spec/graphql/compatibility/execution_specification_spec.rb +0 -4
  103. data/spec/graphql/compatibility/lazy_execution_specification_spec.rb +0 -4
  104. data/spec/graphql/compatibility/query_parser_specification_spec.rb +0 -6
  105. data/spec/graphql/compatibility/schema_parser_specification_spec.rb +0 -6
  106. data/spec/graphql/define/assign_argument_spec.rb +0 -61
  107. data/spec/graphql/define/instance_definable_spec.rb +0 -203
  108. data/spec/graphql/directive/skip_directive_spec.rb +0 -9
  109. data/spec/graphql/directive_spec.rb +0 -295
  110. data/spec/graphql/enum_type_spec.rb +0 -158
  111. data/spec/graphql/execution/execute_spec.rb +0 -303
  112. data/spec/graphql/execution/instrumentation_spec.rb +0 -212
  113. data/spec/graphql/execution/interpreter_spec.rb +0 -485
  114. data/spec/graphql/execution/lazy/lazy_method_map_spec.rb +0 -57
  115. data/spec/graphql/execution/lazy_spec.rb +0 -247
  116. data/spec/graphql/execution/lookahead_spec.rb +0 -390
  117. data/spec/graphql/execution/multiplex_spec.rb +0 -222
  118. data/spec/graphql/execution/typecast_spec.rb +0 -47
  119. data/spec/graphql/execution_error_spec.rb +0 -329
  120. data/spec/graphql/field_spec.rb +0 -246
  121. data/spec/graphql/float_type_spec.rb +0 -16
  122. data/spec/graphql/function_spec.rb +0 -152
  123. data/spec/graphql/id_type_spec.rb +0 -33
  124. data/spec/graphql/input_object_type_spec.rb +0 -25
  125. data/spec/graphql/int_type_spec.rb +0 -35
  126. data/spec/graphql/interface_type_spec.rb +0 -196
  127. data/spec/graphql/internal_representation/print_spec.rb +0 -41
  128. data/spec/graphql/internal_representation/rewrite_spec.rb +0 -381
  129. data/spec/graphql/introspection/directive_type_spec.rb +0 -66
  130. data/spec/graphql/introspection/input_value_type_spec.rb +0 -144
  131. data/spec/graphql/introspection/introspection_query_spec.rb +0 -64
  132. data/spec/graphql/introspection/schema_type_spec.rb +0 -57
  133. data/spec/graphql/introspection/type_type_spec.rb +0 -155
  134. data/spec/graphql/language/block_string_spec.rb +0 -70
  135. data/spec/graphql/language/definition_slice_spec.rb +0 -226
  136. data/spec/graphql/language/document_from_schema_definition_spec.rb +0 -770
  137. data/spec/graphql/language/equality_spec.rb +0 -84
  138. data/spec/graphql/language/generation_spec.rb +0 -38
  139. data/spec/graphql/language/lexer_spec.rb +0 -153
  140. data/spec/graphql/language/nodes_spec.rb +0 -67
  141. data/spec/graphql/language/parser_spec.rb +0 -183
  142. data/spec/graphql/language/printer_spec.rb +0 -215
  143. data/spec/graphql/language/visitor_spec.rb +0 -419
  144. data/spec/graphql/list_type_spec.rb +0 -57
  145. data/spec/graphql/non_null_type_spec.rb +0 -48
  146. data/spec/graphql/object_type_spec.rb +0 -197
  147. data/spec/graphql/query/arguments_spec.rb +0 -346
  148. data/spec/graphql/query/context_spec.rb +0 -292
  149. data/spec/graphql/query/executor_spec.rb +0 -341
  150. data/spec/graphql/query/literal_input_spec.rb +0 -91
  151. data/spec/graphql/query/result_spec.rb +0 -29
  152. data/spec/graphql/query/serial_execution/value_resolution_spec.rb +0 -109
  153. data/spec/graphql/query_spec.rb +0 -803
  154. data/spec/graphql/rake_task_spec.rb +0 -59
  155. data/spec/graphql/scalar_type_spec.rb +0 -66
  156. data/spec/graphql/schema/argument_spec.rb +0 -186
  157. data/spec/graphql/schema/build_from_definition_spec.rb +0 -1197
  158. data/spec/graphql/schema/catchall_middleware_spec.rb +0 -32
  159. data/spec/graphql/schema/directive/feature_spec.rb +0 -81
  160. data/spec/graphql/schema/directive/transform_spec.rb +0 -39
  161. data/spec/graphql/schema/enum_spec.rb +0 -83
  162. data/spec/graphql/schema/enum_value_spec.rb +0 -24
  163. data/spec/graphql/schema/field_extension_spec.rb +0 -159
  164. data/spec/graphql/schema/field_spec.rb +0 -319
  165. data/spec/graphql/schema/finder_spec.rb +0 -135
  166. data/spec/graphql/schema/input_object_spec.rb +0 -421
  167. data/spec/graphql/schema/instrumentation_spec.rb +0 -43
  168. data/spec/graphql/schema/interface_spec.rb +0 -215
  169. data/spec/graphql/schema/introspection_system_spec.rb +0 -80
  170. data/spec/graphql/schema/list_spec.rb +0 -73
  171. data/spec/graphql/schema/loader_spec.rb +0 -350
  172. data/spec/graphql/schema/member/accepts_definition_spec.rb +0 -115
  173. data/spec/graphql/schema/member/build_type_spec.rb +0 -63
  174. data/spec/graphql/schema/member/scoped_spec.rb +0 -217
  175. data/spec/graphql/schema/member/type_system_helpers_spec.rb +0 -63
  176. data/spec/graphql/schema/middleware_chain_spec.rb +0 -57
  177. data/spec/graphql/schema/mutation_spec.rb +0 -150
  178. data/spec/graphql/schema/non_null_spec.rb +0 -46
  179. data/spec/graphql/schema/object_spec.rb +0 -355
  180. data/spec/graphql/schema/printer_spec.rb +0 -883
  181. data/spec/graphql/schema/relay_classic_mutation_spec.rb +0 -252
  182. data/spec/graphql/schema/rescue_middleware_spec.rb +0 -88
  183. data/spec/graphql/schema/resolver_spec.rb +0 -743
  184. data/spec/graphql/schema/scalar_spec.rb +0 -101
  185. data/spec/graphql/schema/subscription_spec.rb +0 -505
  186. data/spec/graphql/schema/timeout_middleware_spec.rb +0 -188
  187. data/spec/graphql/schema/timeout_spec.rb +0 -206
  188. data/spec/graphql/schema/traversal_spec.rb +0 -222
  189. data/spec/graphql/schema/type_expression_spec.rb +0 -39
  190. data/spec/graphql/schema/union_spec.rb +0 -72
  191. data/spec/graphql/schema/unique_within_type_spec.rb +0 -44
  192. data/spec/graphql/schema/validation_spec.rb +0 -355
  193. data/spec/graphql/schema/warden_spec.rb +0 -926
  194. data/spec/graphql/schema_spec.rb +0 -169
  195. data/spec/graphql/static_validation/rules/argument_literals_are_compatible_spec.rb +0 -466
  196. data/spec/graphql/static_validation/rules/argument_names_are_unique_spec.rb +0 -44
  197. data/spec/graphql/static_validation/rules/arguments_are_defined_spec.rb +0 -112
  198. data/spec/graphql/static_validation/rules/directives_are_defined_spec.rb +0 -35
  199. data/spec/graphql/static_validation/rules/directives_are_in_valid_locations_spec.rb +0 -42
  200. data/spec/graphql/static_validation/rules/fields_are_defined_on_type_spec.rb +0 -167
  201. data/spec/graphql/static_validation/rules/fields_have_appropriate_selections_spec.rb +0 -66
  202. data/spec/graphql/static_validation/rules/fields_will_merge_spec.rb +0 -740
  203. data/spec/graphql/static_validation/rules/fragment_names_are_unique_spec.rb +0 -28
  204. data/spec/graphql/static_validation/rules/fragment_spreads_are_possible_spec.rb +0 -52
  205. data/spec/graphql/static_validation/rules/fragment_types_exist_spec.rb +0 -42
  206. data/spec/graphql/static_validation/rules/fragments_are_finite_spec.rb +0 -123
  207. data/spec/graphql/static_validation/rules/fragments_are_named_spec.rb +0 -24
  208. data/spec/graphql/static_validation/rules/fragments_are_on_composite_types_spec.rb +0 -56
  209. data/spec/graphql/static_validation/rules/fragments_are_used_spec.rb +0 -61
  210. data/spec/graphql/static_validation/rules/mutation_root_exists_spec.rb +0 -39
  211. data/spec/graphql/static_validation/rules/no_definitions_are_present_spec.rb +0 -62
  212. data/spec/graphql/static_validation/rules/operation_names_are_valid_spec.rb +0 -82
  213. data/spec/graphql/static_validation/rules/required_arguments_are_present_spec.rb +0 -98
  214. data/spec/graphql/static_validation/rules/required_input_object_attributes_are_present_spec.rb +0 -86
  215. data/spec/graphql/static_validation/rules/subscription_root_exists_spec.rb +0 -34
  216. data/spec/graphql/static_validation/rules/unique_directives_per_location_spec.rb +0 -188
  217. data/spec/graphql/static_validation/rules/variable_default_values_are_correctly_typed_spec.rb +0 -196
  218. data/spec/graphql/static_validation/rules/variable_names_are_unique_spec.rb +0 -23
  219. data/spec/graphql/static_validation/rules/variable_usages_are_allowed_spec.rb +0 -236
  220. data/spec/graphql/static_validation/rules/variables_are_input_types_spec.rb +0 -78
  221. data/spec/graphql/static_validation/rules/variables_are_used_and_defined_spec.rb +0 -81
  222. data/spec/graphql/static_validation/type_stack_spec.rb +0 -29
  223. data/spec/graphql/static_validation/validator_spec.rb +0 -204
  224. data/spec/graphql/string_type_spec.rb +0 -80
  225. data/spec/graphql/subscriptions/serialize_spec.rb +0 -49
  226. data/spec/graphql/subscriptions_spec.rb +0 -540
  227. data/spec/graphql/tracing/new_relic_tracing_spec.rb +0 -84
  228. data/spec/graphql/tracing/platform_tracing_spec.rb +0 -141
  229. data/spec/graphql/tracing/prometheus_tracing_spec.rb +0 -42
  230. data/spec/graphql/tracing/scout_tracing_spec.rb +0 -17
  231. data/spec/graphql/tracing/skylight_tracing_spec.rb +0 -63
  232. data/spec/graphql/tracing_spec.rb +0 -52
  233. data/spec/graphql/types/big_int_spec.rb +0 -24
  234. data/spec/graphql/types/iso_8601_date_time_spec.rb +0 -137
  235. data/spec/graphql/types/relay/base_edge_spec.rb +0 -33
  236. data/spec/graphql/union_type_spec.rb +0 -211
  237. data/spec/graphql/upgrader/member_spec.rb +0 -583
  238. data/spec/graphql/upgrader/schema_spec.rb +0 -82
  239. data/spec/integration/mongoid/graphql/relay/mongo_relation_connection_spec.rb +0 -528
  240. data/spec/integration/mongoid/spec_helper.rb +0 -2
  241. data/spec/integration/mongoid/star_trek/data.rb +0 -126
  242. data/spec/integration/mongoid/star_trek/schema.rb +0 -424
  243. data/spec/integration/rails/data.rb +0 -110
  244. data/spec/integration/rails/generators/base_generator_test.rb +0 -7
  245. data/spec/integration/rails/generators/graphql/enum_generator_spec.rb +0 -30
  246. data/spec/integration/rails/generators/graphql/install_generator_spec.rb +0 -238
  247. data/spec/integration/rails/generators/graphql/interface_generator_spec.rb +0 -34
  248. data/spec/integration/rails/generators/graphql/loader_generator_spec.rb +0 -59
  249. data/spec/integration/rails/generators/graphql/mutation_generator_spec.rb +0 -71
  250. data/spec/integration/rails/generators/graphql/object_generator_spec.rb +0 -54
  251. data/spec/integration/rails/generators/graphql/scalar_generator_spec.rb +0 -28
  252. data/spec/integration/rails/generators/graphql/union_generator_spec.rb +0 -67
  253. data/spec/integration/rails/graphql/input_object_spec.rb +0 -19
  254. data/spec/integration/rails/graphql/input_object_type_spec.rb +0 -364
  255. data/spec/integration/rails/graphql/query/variables_spec.rb +0 -375
  256. data/spec/integration/rails/graphql/relay/array_connection_spec.rb +0 -309
  257. data/spec/integration/rails/graphql/relay/base_connection_spec.rb +0 -101
  258. data/spec/integration/rails/graphql/relay/connection_instrumentation_spec.rb +0 -80
  259. data/spec/integration/rails/graphql/relay/connection_resolve_spec.rb +0 -79
  260. data/spec/integration/rails/graphql/relay/connection_type_spec.rb +0 -106
  261. data/spec/integration/rails/graphql/relay/edge_spec.rb +0 -10
  262. data/spec/integration/rails/graphql/relay/mutation_spec.rb +0 -387
  263. data/spec/integration/rails/graphql/relay/node_spec.rb +0 -263
  264. data/spec/integration/rails/graphql/relay/page_info_spec.rb +0 -111
  265. data/spec/integration/rails/graphql/relay/range_add_spec.rb +0 -117
  266. data/spec/integration/rails/graphql/relay/relation_connection_spec.rb +0 -837
  267. data/spec/integration/rails/graphql/schema_spec.rb +0 -507
  268. data/spec/integration/rails/graphql/tracing/active_support_notifications_tracing_spec.rb +0 -62
  269. data/spec/integration/rails/spec_helper.rb +0 -25
  270. data/spec/spec_helper.rb +0 -116
  271. data/spec/support/dummy/data.rb +0 -45
  272. data/spec/support/dummy/schema.rb +0 -519
  273. data/spec/support/error_bubbling_helpers.rb +0 -23
  274. data/spec/support/global_id.rb +0 -23
  275. data/spec/support/jazz.rb +0 -778
  276. data/spec/support/lazy_helpers.rb +0 -192
  277. data/spec/support/magic_cards/schema.graphql +0 -33
  278. data/spec/support/minimum_input_object.rb +0 -21
  279. data/spec/support/new_relic.rb +0 -27
  280. data/spec/support/parser/filename_example.graphql +0 -5
  281. data/spec/support/parser/filename_example_error_1.graphql +0 -4
  282. data/spec/support/parser/filename_example_error_2.graphql +0 -5
  283. data/spec/support/parser/filename_example_invalid_utf8.graphql +0 -1
  284. data/spec/support/skylight.rb +0 -39
  285. data/spec/support/star_wars/schema.rb +0 -464
  286. data/spec/support/static_validation_helpers.rb +0 -32
@@ -1,115 +0,0 @@
1
- # frozen_string_literal: true
2
- require "spec_helper"
3
-
4
- describe GraphQL::Schema::Member::AcceptsDefinition do
5
- class AcceptsDefinitionSchema < GraphQL::Schema
6
- accepts_definition :set_metadata
7
- set_metadata :a, 999
8
-
9
- if TESTING_INTERPRETER
10
- use GraphQL::Execution::Interpreter
11
- end
12
-
13
- class BaseField < GraphQL::Schema::Field
14
- class BaseField < GraphQL::Schema::Argument
15
- accepts_definition :metadata
16
- end
17
- argument_class BaseField
18
- accepts_definition :metadata
19
- end
20
-
21
- GraphQL::Schema::Object.accepts_definition(:metadata2)
22
-
23
- class BaseObject < GraphQL::Schema::Object
24
- field_class BaseField
25
- accepts_definition :metadata
26
- end
27
-
28
- GraphQL::Schema::Interface.accepts_definition(:metadata2)
29
-
30
- module BaseInterface
31
- include GraphQL::Schema::Interface
32
- field_class BaseField
33
- accepts_definition :metadata
34
- end
35
-
36
- class Option < GraphQL::Schema::Enum
37
- class EnumValue < GraphQL::Schema::EnumValue
38
- accepts_definition :metadata
39
- end
40
- enum_value_class EnumValue
41
- accepts_definition :metadata
42
- metadata :a, 123
43
- value "A", metadata: [:a, 456]
44
- value "B"
45
- end
46
-
47
- module Thing
48
- include BaseInterface
49
- metadata :z, 888
50
- metadata2 :a, :bc
51
- end
52
-
53
- module Thing2
54
- include Thing
55
- end
56
-
57
- class SomeObject < BaseObject
58
- metadata :a, :aaa
59
- end
60
-
61
- class SomeObject2 < SomeObject
62
- end
63
-
64
- class Query < BaseObject
65
- metadata :a, :abc
66
- metadata2 :xyz, :zyx
67
-
68
- field :option, Option, null: false do
69
- metadata :a, :def
70
- argument :value, Integer, required: true, metadata: [:a, :ghi]
71
- end
72
-
73
- field :thing, Thing, null: false
74
- field :thing2, Thing2, null: false
75
- field :some_object, SomeObject, null: false
76
- field :some_object2, SomeObject2, null: false
77
- end
78
-
79
- query(Query)
80
- end
81
-
82
- it "passes along configs for types" do
83
- assert_equal [:a, 123], AcceptsDefinitionSchema::Option.metadata
84
- assert_equal 123, AcceptsDefinitionSchema::Option.graphql_definition.metadata[:a]
85
- assert_equal [:a, :abc], AcceptsDefinitionSchema::Query.metadata
86
- assert_equal :abc, AcceptsDefinitionSchema::Query.graphql_definition.metadata[:a]
87
- assert_equal :zyx, AcceptsDefinitionSchema::Query.graphql_definition.metadata[:xyz]
88
-
89
- assert_equal [:z, 888], AcceptsDefinitionSchema::Thing.metadata
90
- assert_equal 888, AcceptsDefinitionSchema::Thing.graphql_definition.metadata[:z]
91
- assert_equal :bc, AcceptsDefinitionSchema::Thing.graphql_definition.metadata[:a]
92
- # Interface inheritance
93
- assert_equal [:z, 888], AcceptsDefinitionSchema::Thing2.metadata
94
- assert_equal 888, AcceptsDefinitionSchema::Thing2.graphql_definition.metadata[:z]
95
- assert_equal :bc, AcceptsDefinitionSchema::Thing2.graphql_definition.metadata[:a]
96
-
97
- # Object inheritance
98
- assert_equal :aaa, AcceptsDefinitionSchema::SomeObject.graphql_definition.metadata[:a]
99
- assert_equal :aaa, AcceptsDefinitionSchema::SomeObject2.graphql_definition.metadata[:a]
100
- end
101
-
102
- it "passes along configs for fields and arguments" do
103
- assert_equal :def, AcceptsDefinitionSchema.find("Query.option").metadata[:a]
104
- assert_equal :ghi, AcceptsDefinitionSchema.find("Query.option.value").metadata[:a]
105
- end
106
-
107
- it "passes along configs for enum values" do
108
- assert_equal 456, AcceptsDefinitionSchema.find("Option.A").metadata[:a]
109
- assert_nil AcceptsDefinitionSchema.find("Option.B").metadata[:a]
110
- end
111
-
112
- it "passes along configs for schemas" do
113
- assert_equal 999, AcceptsDefinitionSchema.graphql_definition.metadata[:a]
114
- end
115
- end
@@ -1,63 +0,0 @@
1
- # frozen_string_literal: true
2
- require "spec_helper"
3
-
4
- describe GraphQL::Schema::Member::BuildType do
5
- describe ".parse_type" do
6
- it "resolves a string type from a string" do
7
- assert_equal GraphQL::Types::String, GraphQL::Schema::Member::BuildType.parse_type("String", null: true)
8
- end
9
-
10
- it "resolves an integer type from a string" do
11
- assert_equal GraphQL::Types::Int, GraphQL::Schema::Member::BuildType.parse_type("Integer", null: true)
12
- end
13
-
14
- it "resolves a float type from a string" do
15
- assert_equal GraphQL::Types::Float, GraphQL::Schema::Member::BuildType.parse_type("Float", null: true)
16
- end
17
-
18
- it "resolves a boolean type from a string" do
19
- assert_equal GraphQL::Types::Boolean, GraphQL::Schema::Member::BuildType.parse_type("Boolean", null: true)
20
- end
21
-
22
- it "resolves an interface type from a string" do
23
- assert_equal Jazz::BaseInterface, GraphQL::Schema::Member::BuildType.parse_type("Jazz::BaseInterface", null: true)
24
- end
25
-
26
- it "resolves an object type from a class" do
27
- assert_equal Jazz::BaseObject, GraphQL::Schema::Member::BuildType.parse_type(Jazz::BaseObject, null: true)
28
- end
29
-
30
- it "resolves an object type from a string" do
31
- assert_equal Jazz::BaseObject, GraphQL::Schema::Member::BuildType.parse_type("Jazz::BaseObject", null: true)
32
- end
33
-
34
- it "resolves a nested object type from a string" do
35
- assert_equal Jazz::Introspection::NestedType, GraphQL::Schema::Member::BuildType.parse_type("Jazz::Introspection::NestedType", null: true)
36
- end
37
-
38
- it "resolves a deeply nested object type from a string" do
39
- assert_equal Jazz::Introspection::NestedType::DeeplyNestedType, GraphQL::Schema::Member::BuildType.parse_type("Jazz::Introspection::NestedType::DeeplyNestedType", null: true)
40
- end
41
-
42
- it "resolves a list type from an array of classes" do
43
- assert_instance_of GraphQL::Schema::List, GraphQL::Schema::Member::BuildType.parse_type([Jazz::BaseObject], null: true)
44
- end
45
-
46
- it "resolves a list type from an array of strings" do
47
- assert_instance_of GraphQL::Schema::List, GraphQL::Schema::Member::BuildType.parse_type(["Jazz::BaseObject"], null: true)
48
- end
49
- end
50
-
51
- describe ".to_type_name" do
52
- it "works with lists and non-nulls" do
53
- t = Class.new(GraphQL::Schema::Object) do
54
- graphql_name "T"
55
- end
56
-
57
- req_t = GraphQL::Schema::NonNull.new(t)
58
- list_req_t = GraphQL::Schema::List.new(req_t)
59
-
60
- assert_equal "T", GraphQL::Schema::Member::BuildType.to_type_name(list_req_t)
61
- end
62
- end
63
- end
@@ -1,217 +0,0 @@
1
- # frozen_string_literal: true
2
- require "spec_helper"
3
-
4
- describe GraphQL::Schema::Member::Scoped do
5
- class ScopeSchema < GraphQL::Schema
6
- class BaseObject < GraphQL::Schema::Object
7
- end
8
-
9
- class Item < BaseObject
10
- def self.scope_items(items, context)
11
- if context[:french]
12
- items.select { |i| i.name == "Trombone" }
13
- elsif context[:english]
14
- items.select { |i| i.name == "Paperclip" }
15
- else
16
- # boot everything
17
- items.reject { true }
18
- end
19
- end
20
-
21
- field :name, String, null: false
22
- end
23
-
24
- class FrenchItem < Item
25
- def self.scope_items(items, context)
26
- super(items, {french: true})
27
- end
28
- end
29
-
30
- class Equipment < BaseObject
31
- field :designation, String, null: false, method: :name
32
- end
33
-
34
- class BaseUnion < GraphQL::Schema::Union
35
- end
36
-
37
- class Thing < BaseUnion
38
- def self.scope_items(items, context)
39
- l = context.fetch(:first_letter)
40
- items.select { |i| i.name.start_with?(l) }
41
- end
42
-
43
- possible_types Item, Equipment
44
-
45
- def self.resolve_type(item, ctx)
46
- if item.name == "Turbine"
47
- Equipment
48
- else
49
- Item
50
- end
51
- end
52
- end
53
-
54
- class Query < BaseObject
55
- field :items, [Item], null: false
56
- field :unscoped_items, [Item], null: false,
57
- scope: false,
58
- resolver_method: :items
59
-
60
- field :nil_items, [Item], null: true
61
- def nil_items
62
- nil
63
- end
64
-
65
- field :french_items, [FrenchItem], null: false,
66
- resolver_method: :items
67
- if TESTING_INTERPRETER
68
- field :items_connection, Item.connection_type, null: false,
69
- resolver_method: :items
70
- else
71
- field :items_connection, Item.connection_type, null: false, resolve: ->(obj, args, ctx) {
72
- [
73
- OpenStruct.new(name: "Trombone"),
74
- OpenStruct.new(name: "Paperclip"),
75
- ]
76
- }
77
- end
78
-
79
- def items
80
- [
81
- OpenStruct.new(name: "Trombone"),
82
- OpenStruct.new(name: "Paperclip"),
83
- ]
84
- end
85
-
86
- if TESTING_INTERPRETER
87
- field :things, [Thing], null: false
88
- def things
89
- items + [OpenStruct.new(name: "Turbine")]
90
- end
91
- else
92
- # Make sure it works with resolve procs, too
93
- field :things, [Thing], null: false, resolve: ->(obj, args, ctx) {
94
- [
95
- OpenStruct.new(name: "Trombone"),
96
- OpenStruct.new(name: "Paperclip"),
97
- OpenStruct.new(name: "Turbine"),
98
- ]
99
- }
100
- end
101
- end
102
-
103
- query(Query)
104
- if TESTING_INTERPRETER
105
- use GraphQL::Execution::Interpreter
106
- end
107
- end
108
-
109
- describe ".scope_items(items, ctx)" do
110
- def get_item_names_with_context(ctx, field_name: "items")
111
- query_str = "
112
- {
113
- #{field_name} {
114
- name
115
- }
116
- }
117
- "
118
- res = ScopeSchema.execute(query_str, context: ctx)
119
- res["data"][field_name].map { |i| i["name"] }
120
- end
121
-
122
- it "applies to lists when scope: true" do
123
- assert_equal [], get_item_names_with_context({})
124
- assert_equal ["Trombone"], get_item_names_with_context({french: true})
125
- assert_equal ["Paperclip"], get_item_names_with_context({english: true})
126
- end
127
-
128
- it "is bypassed when scope: false" do
129
- assert_equal ["Trombone", "Paperclip"], get_item_names_with_context({}, field_name: "unscopedItems")
130
- end
131
-
132
- it "returns null when the value is nil" do
133
- query_str = "
134
- {
135
- nilItems {
136
- name
137
- }
138
- }
139
- "
140
- res = ScopeSchema.execute(query_str)
141
- refute res.key?("errors")
142
- assert_nil res.fetch("data").fetch("nilItems")
143
- end
144
-
145
- it "is inherited" do
146
- assert_equal ["Trombone"], get_item_names_with_context({}, field_name: "frenchItems")
147
- end
148
-
149
- it "is called for connection fields" do
150
- query_str = "
151
- {
152
- itemsConnection {
153
- edges {
154
- node {
155
- name
156
- }
157
- }
158
- }
159
- }
160
- "
161
- res = ScopeSchema.execute(query_str, context: {english: true})
162
- names = res["data"]["itemsConnection"]["edges"].map { |e| e["node"]["name"] }
163
- assert_equal ["Paperclip"], names
164
-
165
- query_str = "
166
- {
167
- itemsConnection {
168
- nodes {
169
- name
170
- }
171
- }
172
- }
173
- "
174
- res = ScopeSchema.execute(query_str, context: {english: true})
175
- names = res["data"]["itemsConnection"]["nodes"].map { |e| e["name"] }
176
- assert_equal ["Paperclip"], names
177
- end
178
-
179
- it "is called for abstract types" do
180
- query_str = "
181
- {
182
- things {
183
- ... on Item {
184
- name
185
- }
186
- ... on Equipment {
187
- designation
188
- }
189
- }
190
- }
191
- "
192
- res = ScopeSchema.execute(query_str, context: {first_letter: "T"})
193
- things = res["data"]["things"]
194
- assert_equal [{ "name" => "Trombone" }, {"designation" => "Turbine"}], things
195
- end
196
- end
197
-
198
- describe "Schema::Field.scoped?" do
199
- it "prefers the override value" do
200
- assert_equal false, ScopeSchema::Query.fields["unscopedItems"].scoped?
201
- end
202
-
203
- it "defaults to true for lists" do
204
- assert_equal true, ScopeSchema::Query.fields["items"].type.list?
205
- assert_equal true, ScopeSchema::Query.fields["items"].scoped?
206
- end
207
-
208
- it "defaults to true for connections" do
209
- assert_equal true, ScopeSchema::Query.fields["itemsConnection"].connection?
210
- assert_equal true, ScopeSchema::Query.fields["itemsConnection"].scoped?
211
- end
212
-
213
- it "defaults to false for others" do
214
- assert_equal false, ScopeSchema::Item.fields["name"].scoped?
215
- end
216
- end
217
- end
@@ -1,63 +0,0 @@
1
- # frozen_string_literal: true
2
- require "spec_helper"
3
-
4
- describe GraphQL::Schema::Member::TypeSystemHelpers do
5
- let(:object) {
6
- Class.new(GraphQL::Schema::Object) do
7
- graphql_name "Thing"
8
-
9
- field :int, Integer, null: true
10
- field :int2, Integer, null: false
11
- field :int_list, [Integer], null: true
12
- field :int_list2, [Integer], null: false
13
- end
14
- }
15
-
16
- let(:int_field) { object.fields["int"] }
17
- let(:int2_field) { object.fields["int2"] }
18
- let(:int_list_field) { object.fields["intList"] }
19
- let(:int_list2_field) { object.fields["intList2"] }
20
-
21
- describe "#list?" do
22
- it "is true for lists, including non-null lists, otherwise false" do
23
- assert int_list_field.type.list?
24
- assert int_list2_field.type.list?
25
- refute int_field.type.list?
26
- refute int2_field.type.list?
27
- end
28
- end
29
-
30
- describe "#non_null?" do
31
- it "is true for required types" do
32
- assert int2_field.type.non_null?
33
- assert int_list2_field.type.non_null?
34
- refute int_field.type.non_null?
35
- refute int_list_field.type.non_null?
36
- end
37
- end
38
-
39
- describe "#kind" do
40
- let(:pairs) {{
41
- GraphQL::Schema::Object => "OBJECT",
42
- GraphQL::Schema::Union => "UNION",
43
- GraphQL::Schema::Interface => "INTERFACE",
44
- GraphQL::Schema::Enum => "ENUM",
45
- GraphQL::Schema::InputObject => "INPUT_OBJECT",
46
- GraphQL::Schema::Scalar => "SCALAR",
47
- }}
48
- it "returns the TypeKind instance" do
49
- pairs.each do |type_class, type_kind_name|
50
- type = if type_class.is_a?(Class)
51
- Class.new(type_class)
52
- else
53
- Module.new { include(type_class) }
54
- end
55
-
56
- assert_equal type_kind_name, type.kind.name
57
- end
58
-
59
- assert_equal "LIST", GraphQL::Schema::Object.to_list_type.kind.name
60
- assert_equal "NON_NULL", GraphQL::Schema::Object.to_non_null_type.kind.name
61
- end
62
- end
63
- end