graphql-client 0.4.0 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 88afea7eaa70819f11b2a000886ef3924e2b0e12
4
- data.tar.gz: 62a8706efe7fe20a73da2affaa3e362dce686970
3
+ metadata.gz: 665795b2cb201c59918533b567ea75e1d9e17c8c
4
+ data.tar.gz: 6c0aa59a2fb36248cefa5777a986afb9a3e56ca5
5
5
  SHA512:
6
- metadata.gz: b9774d7f5229a0202924ff253b251076ed7b5f71dd3e32f0707467663868faace9a331b79878e70159058ebbdde59b477892b13c662c1e3f9492fa31e6901551
7
- data.tar.gz: 0d4e18520e7b23a28012edf77a98913358ef7793e70f46ddbdf881ad63c51eafc83325ef7a388d37b752914d55b0f6e9d23dc50efbb23afc98bf1f5aebd25be0
6
+ metadata.gz: 3462c80267b7dd02fbaa07a5386187a285f6b4c7ebff7a122f961c59d9ecc9b6d16e0a5b1d25b37236051265552d7b5b89a10984cf45e8fbf7a8f2c054f5b79c
7
+ data.tar.gz: b8b8d763e2d13f62ffb24ce53a82882a58517abe61179b5aa509a3263a7366377d305da7fdbb057430a248284a6675c48ee39fab61d4872ae6be1245a7dbb874
@@ -210,11 +210,14 @@ module GraphQL
210
210
  definition_dependencies.merge(fragment.document.definitions)
211
211
  "...#{fragment.definition_name}"
212
212
  else
213
- message = if fragment
214
- "expected #{const_name} to be a #{FragmentDefinition}, but was a #{fragment.class}"
215
- else
216
- "uninitialized constant #{const_name}"
217
- end
213
+ if fragment
214
+ message = "expected #{const_name} to be a #{FragmentDefinition}, but was a #{fragment.class}."
215
+ if fragment.is_a?(Module) && fragment.constants.any?
216
+ message += " Did you mean #{fragment}::#{fragment.constants.first}?"
217
+ end
218
+ else
219
+ message = "uninitialized constant #{const_name}"
220
+ end
218
221
 
219
222
  error = ValidationError.new(message)
220
223
  error.set_backtrace(["#{filename}:#{lineno + match.pre_match.count("\n") + 1}"] + caller)
@@ -14,6 +14,11 @@ module GraphQL
14
14
  #
15
15
  # Wrappers also limit field visibility to fragment definitions.
16
16
  class QueryResult
17
+ class NoFieldError < Error; end
18
+ class ImplicitlyFetchedFieldError < NoFieldError; end
19
+ class UnfetchedFieldError < NoFieldError; end
20
+ class UnimplementedFieldError < NoFieldError; end
21
+
17
22
  # Internal: Get QueryResult class for result of query.
18
23
  #
19
24
  # Returns subclass of QueryResult or nil.
@@ -248,7 +253,24 @@ module GraphQL
248
253
  def method_missing(*args)
249
254
  super
250
255
  rescue NoMethodError => e
251
- raise NoMethodError, "undefined method `#{e.name}' for #{inspect}"
256
+ type = self.class.type
257
+ raise e unless type
258
+
259
+ unless type.fields[e.name.to_s]
260
+ raise UnimplementedFieldError, "undefined field `#{e.name}' on #{type} type. https://git.io/v1y3m"
261
+ end
262
+
263
+ if data[e.name.to_s]
264
+ error_class = ImplicitlyFetchedFieldError
265
+ message = "implicitly fetched field `#{e.name}' on #{type} type. https://git.io/v1yGL"
266
+ else
267
+ error_class = UnfetchedFieldError
268
+ message = "unfetched field `#{e.name}' on #{type} type. https://git.io/v1y3U"
269
+ end
270
+
271
+ node = self.class.source_node
272
+ message += "\n\n" + node.to_query_string.sub(/\}$/, "+ #{e.name}\n}") if node
273
+ raise error_class, message
252
274
  end
253
275
 
254
276
  def respond_to_missing?(*args)
@@ -16,7 +16,12 @@ module RuboCop
16
16
 
17
17
  def check_str(node)
18
18
  return unless node.location.is_a?(Parser::Source::Map::Heredoc)
19
- return unless node.location.expression.source == "<<-GRAPHQL"
19
+ return unless node.location.expression.source =~ /^<<(-|~)?GRAPHQL/
20
+
21
+ node.each_child_node(:begin) do |begin_node|
22
+ add_offense(begin_node, :expression, "Do not interpolate variables into GraphQL queries, " \
23
+ "used variables instead.")
24
+ end
20
25
 
21
26
  add_offense(node, :expression, "GraphQL heredocs should be quoted. <<-'GRAPHQL'")
22
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitHub
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-01 00:00:00.000000000 Z
11
+ date: 2016-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -92,6 +92,20 @@ dependencies:
92
92
  - - "~>"
93
93
  - !ruby/object:Gem::Version
94
94
  version: '11.2'
95
+ - !ruby/object:Gem::Dependency
96
+ name: rubocop-github
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '0.2'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: '0.2'
95
109
  - !ruby/object:Gem::Dependency
96
110
  name: rubocop
97
111
  requirement: !ruby/object:Gem::Requirement