graphql 1.8.0.pre11 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/graphql/templates/schema.erb +1 -1
  3. data/lib/graphql/function.rb +2 -0
  4. data/lib/graphql/railtie.rb +1 -1
  5. data/lib/graphql/schema.rb +1 -0
  6. data/lib/graphql/schema/argument.rb +3 -2
  7. data/lib/graphql/schema/build_from_definition.rb +1 -1
  8. data/lib/graphql/schema/field.rb +96 -49
  9. data/lib/graphql/schema/interface.rb +21 -3
  10. data/lib/graphql/schema/list.rb +4 -0
  11. data/lib/graphql/schema/member/accepts_definition.rb +2 -2
  12. data/lib/graphql/schema/member/base_dsl_methods.rb +4 -0
  13. data/lib/graphql/schema/member/build_type.rb +4 -2
  14. data/lib/graphql/schema/member/has_fields.rb +1 -8
  15. data/lib/graphql/schema/mutation.rb +19 -88
  16. data/lib/graphql/schema/non_null.rb +4 -0
  17. data/lib/graphql/schema/object.rb +1 -1
  18. data/lib/graphql/schema/relay_classic_mutation.rb +14 -15
  19. data/lib/graphql/schema/resolver.rb +122 -0
  20. data/lib/graphql/subscriptions/instrumentation.rb +5 -1
  21. data/lib/graphql/subscriptions/serialize.rb +2 -0
  22. data/lib/graphql/tracing/new_relic_tracing.rb +26 -0
  23. data/lib/graphql/version.rb +1 -1
  24. data/readme.md +1 -1
  25. data/spec/generators/graphql/install_generator_spec.rb +1 -1
  26. data/spec/graphql/relay/mutation_spec.rb +5 -3
  27. data/spec/graphql/schema/build_from_definition_spec.rb +1 -1
  28. data/spec/graphql/schema/field_spec.rb +7 -24
  29. data/spec/graphql/schema/interface_spec.rb +25 -0
  30. data/spec/graphql/schema/member/accepts_definition_spec.rb +22 -0
  31. data/spec/graphql/schema/member/build_type_spec.rb +17 -0
  32. data/spec/graphql/schema/mutation_spec.rb +15 -14
  33. data/spec/graphql/schema/resolver_spec.rb +131 -0
  34. data/spec/graphql/subscriptions_spec.rb +267 -205
  35. data/spec/graphql/tracing/new_relic_tracing_spec.rb +47 -0
  36. data/spec/support/jazz.rb +6 -1
  37. data/spec/support/new_relic.rb +24 -0
  38. data/spec/support/star_trek/schema.rb +2 -2
  39. data/spec/support/star_wars/schema.rb +1 -2
  40. metadata +13 -4
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+ require "spec_helper"
3
+
4
+ describe GraphQL::Tracing::NewRelicTracing do
5
+ module NewRelicTest
6
+ class Query < GraphQL::Schema::Object
7
+ field :int, Integer, null: false
8
+
9
+ def int
10
+ 1
11
+ end
12
+ end
13
+
14
+ class SchemaWithoutTransactionName < GraphQL::Schema
15
+ query(Query)
16
+ use(GraphQL::Tracing::NewRelicTracing)
17
+ end
18
+
19
+ class SchemaWithTransactionName < GraphQL::Schema
20
+ query(Query)
21
+ use(GraphQL::Tracing::NewRelicTracing, set_transaction_name: true)
22
+ end
23
+ end
24
+
25
+ before do
26
+ NewRelic.clear_all
27
+ end
28
+
29
+ it "can leave the transaction name in place" do
30
+ NewRelicTest::SchemaWithoutTransactionName.execute "query X { int }"
31
+ assert_equal [], NewRelic::TRANSACTION_NAMES
32
+ end
33
+
34
+ it "can override the transaction name" do
35
+ NewRelicTest::SchemaWithTransactionName.execute "query X { int }"
36
+ assert_equal ["GraphQL/query.X"], NewRelic::TRANSACTION_NAMES
37
+ end
38
+
39
+ it "can override the transaction name per query" do
40
+ # Override with `false`
41
+ NewRelicTest::SchemaWithTransactionName.execute "{ int }", context: { set_new_relic_transaction_name: false }
42
+ assert_equal [], NewRelic::TRANSACTION_NAMES
43
+ # Override with `true`
44
+ NewRelicTest::SchemaWithoutTransactionName.execute "{ int }", context: { set_new_relic_transaction_name: true }
45
+ assert_equal ["GraphQL/query.anonymous"], NewRelic::TRANSACTION_NAMES
46
+ end
47
+ end
@@ -133,7 +133,12 @@ module Jazz
133
133
  module GloballyIdentifiableType
134
134
  include BaseInterface
135
135
  description "A fetchable object in the system"
136
- field :id, ID, "A unique identifier for this object", null: false
136
+ field(
137
+ name: :id,
138
+ type: ID,
139
+ null: false,
140
+ description: "A unique identifier for this object",
141
+ )
137
142
  upcased_field :upcased_id, ID, null: false, method: :id # upcase: true added by helper
138
143
 
139
144
  def id
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+ # A stub for the NewRelic agent, so we can make assertions about how it is used
3
+ if defined?(NewRelic)
4
+ raise "Expected NewRelic to be undefined, so that we could define a stub for it."
5
+ end
6
+
7
+ module NewRelic
8
+ TRANSACTION_NAMES = []
9
+ # Reset state between tests
10
+ def self.clear_all
11
+ TRANSACTION_NAMES.clear
12
+ end
13
+ module Agent
14
+ def self.set_transaction_name(name)
15
+ TRANSACTION_NAMES << name
16
+ end
17
+
18
+ module MethodTracerHelpers
19
+ def self.trace_execution_scoped(trace_name)
20
+ yield
21
+ end
22
+ end
23
+ end
24
+ end
@@ -326,8 +326,8 @@ module StarTrek
326
326
 
327
327
  class MutationType < GraphQL::Schema::Object
328
328
  graphql_name "Mutation"
329
- # The mutation object exposes a field:
330
- field :introduceShip, field: IntroduceShipMutation.field
329
+ field :introduceShip, mutation: IntroduceShipMutation
330
+ # To hook up a Relay::Mutation
331
331
  field :introduceShipFunction, field: IntroduceShipFunctionMutation.field
332
332
  end
333
333
 
@@ -331,8 +331,7 @@ module StarWars
331
331
 
332
332
  class MutationType < GraphQL::Schema::Object
333
333
  graphql_name "Mutation"
334
- # The mutation object exposes a field:
335
- field :introduceShip, field: IntroduceShipMutation.field
334
+ field :introduceShip, mutation: IntroduceShipMutation
336
335
  field :introduceShipFunction, field: IntroduceShipFunctionMutation.field
337
336
  end
338
337
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0.pre11
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Mosolgo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-03 00:00:00.000000000 Z
11
+ date: 2018-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: benchmark-ips
@@ -541,6 +541,7 @@ files:
541
541
  - lib/graphql/schema/printer.rb
542
542
  - lib/graphql/schema/relay_classic_mutation.rb
543
543
  - lib/graphql/schema/rescue_middleware.rb
544
+ - lib/graphql/schema/resolver.rb
544
545
  - lib/graphql/schema/scalar.rb
545
546
  - lib/graphql/schema/timeout_middleware.rb
546
547
  - lib/graphql/schema/traversal.rb
@@ -1053,6 +1054,7 @@ files:
1053
1054
  - spec/graphql/schema/introspection_system_spec.rb
1054
1055
  - spec/graphql/schema/loader_spec.rb
1055
1056
  - spec/graphql/schema/member/accepts_definition_spec.rb
1057
+ - spec/graphql/schema/member/build_type_spec.rb
1056
1058
  - spec/graphql/schema/member/has_fields_spec.rb
1057
1059
  - spec/graphql/schema/member/type_system_helpers_spec.rb
1058
1060
  - spec/graphql/schema/middleware_chain_spec.rb
@@ -1061,6 +1063,7 @@ files:
1061
1063
  - spec/graphql/schema/printer_spec.rb
1062
1064
  - spec/graphql/schema/relay_classic_mutation_spec.rb
1063
1065
  - spec/graphql/schema/rescue_middleware_spec.rb
1066
+ - spec/graphql/schema/resolver_spec.rb
1064
1067
  - spec/graphql/schema/scalar_spec.rb
1065
1068
  - spec/graphql/schema/timeout_middleware_spec.rb
1066
1069
  - spec/graphql/schema/traversal_spec.rb
@@ -1101,6 +1104,7 @@ files:
1101
1104
  - spec/graphql/subscriptions/serialize_spec.rb
1102
1105
  - spec/graphql/subscriptions_spec.rb
1103
1106
  - spec/graphql/tracing/active_support_notifications_tracing_spec.rb
1107
+ - spec/graphql/tracing/new_relic_tracing_spec.rb
1104
1108
  - spec/graphql/tracing/platform_tracing_spec.rb
1105
1109
  - spec/graphql/tracing/scout_tracing_spec.rb
1106
1110
  - spec/graphql/tracing_spec.rb
@@ -1116,6 +1120,7 @@ files:
1116
1120
  - spec/support/lazy_helpers.rb
1117
1121
  - spec/support/magic_cards/schema.graphql
1118
1122
  - spec/support/minimum_input_object.rb
1123
+ - spec/support/new_relic.rb
1119
1124
  - spec/support/parser/filename_example.graphql
1120
1125
  - spec/support/parser/filename_example_error_1.graphql
1121
1126
  - spec/support/parser/filename_example_error_2.graphql
@@ -1139,9 +1144,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
1139
1144
  version: 2.2.0
1140
1145
  required_rubygems_version: !ruby/object:Gem::Requirement
1141
1146
  requirements:
1142
- - - ">"
1147
+ - - ">="
1143
1148
  - !ruby/object:Gem::Version
1144
- version: 1.3.1
1149
+ version: '0'
1145
1150
  requirements: []
1146
1151
  rubyforge_project:
1147
1152
  rubygems_version: 2.6.13
@@ -1597,6 +1602,7 @@ test_files:
1597
1602
  - spec/graphql/schema/introspection_system_spec.rb
1598
1603
  - spec/graphql/schema/loader_spec.rb
1599
1604
  - spec/graphql/schema/member/accepts_definition_spec.rb
1605
+ - spec/graphql/schema/member/build_type_spec.rb
1600
1606
  - spec/graphql/schema/member/has_fields_spec.rb
1601
1607
  - spec/graphql/schema/member/type_system_helpers_spec.rb
1602
1608
  - spec/graphql/schema/middleware_chain_spec.rb
@@ -1605,6 +1611,7 @@ test_files:
1605
1611
  - spec/graphql/schema/printer_spec.rb
1606
1612
  - spec/graphql/schema/relay_classic_mutation_spec.rb
1607
1613
  - spec/graphql/schema/rescue_middleware_spec.rb
1614
+ - spec/graphql/schema/resolver_spec.rb
1608
1615
  - spec/graphql/schema/scalar_spec.rb
1609
1616
  - spec/graphql/schema/timeout_middleware_spec.rb
1610
1617
  - spec/graphql/schema/traversal_spec.rb
@@ -1645,6 +1652,7 @@ test_files:
1645
1652
  - spec/graphql/subscriptions/serialize_spec.rb
1646
1653
  - spec/graphql/subscriptions_spec.rb
1647
1654
  - spec/graphql/tracing/active_support_notifications_tracing_spec.rb
1655
+ - spec/graphql/tracing/new_relic_tracing_spec.rb
1648
1656
  - spec/graphql/tracing/platform_tracing_spec.rb
1649
1657
  - spec/graphql/tracing/scout_tracing_spec.rb
1650
1658
  - spec/graphql/tracing_spec.rb
@@ -1660,6 +1668,7 @@ test_files:
1660
1668
  - spec/support/lazy_helpers.rb
1661
1669
  - spec/support/magic_cards/schema.graphql
1662
1670
  - spec/support/minimum_input_object.rb
1671
+ - spec/support/new_relic.rb
1663
1672
  - spec/support/parser/filename_example.graphql
1664
1673
  - spec/support/parser/filename_example_error_1.graphql
1665
1674
  - spec/support/parser/filename_example_error_2.graphql