search_object_graphql 1.0.2 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9f509887b8c20f3fde861d5dc9cb0588a5d69c167a42d7348f3839ef34ed007b
4
- data.tar.gz: '08124c03eb5127693e68fd3c191aceab436eab0463bfe82151d82207acb13ef4'
3
+ metadata.gz: 41da46a65689f3f9178a8e4848df69af6e03c97e8afb30560d33bafda1562b2b
4
+ data.tar.gz: 986e0d43576c42487751cfbc391caca2ec1cf694f6f16c9cb668d6d778570546
5
5
  SHA512:
6
- metadata.gz: a76bdb08d7b81f1ca59787ae1895fb3bef3befa60c6086204b63fdc01441f0e819e293f14aa8abcac611f6ed9455b3fc556672cb2f980c21b1a699c124297514
7
- data.tar.gz: 3dd7bdfea7fec0148d3d39db9eab1c340f1b05779b6137f71468e2fdb1ee9cb90a98339dc400f984a9f548f4ec7e3527a5d1e8cb71396e22bded52544a07047b
6
+ metadata.gz: f81ce9688f696bc17e0b4fbefdc7b8d2caa8defbebe637d5a45f980cc5ac40c9d065310414d1e96134fe0cc4a08b67a4b7cecfff04d01be293e93e8dccf5b43f
7
+ data.tar.gz: f0554a519c7248862329c7ce4a39667e167718e3daa5be221c8cbbac4293b35fc18c27a68f7adbb8b2994170207694130e9da8f41f0690680fab54bb9ac3c9e0
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6.2
1
+ 2.7.6
data/CHANGELOG.md CHANGED
@@ -1,8 +1,16 @@
1
1
  # Changelog
2
2
 
3
- ## Version 1.0.1
3
+ ## Version 1.0.4
4
+
5
+ * __[feature]__ Added `deprecation_reason` to `option` (@IgrekYY)
6
+
7
+ ## Version 1.0.3
8
+
9
+ * __[fix]__ Support GraphQL 2.0 gem (@rstankov)
10
+
11
+ ## Version 1.0.2
4
12
 
5
- * __[feature]__ Added `argument_options` to `options` (@wuz)
13
+ * __[feature]__ Added `argument_options` to `option` (@wuz)
6
14
 
7
15
  ## Version 1.0.1
8
16
 
data/README.md CHANGED
@@ -99,8 +99,8 @@ class PostResolver < GraphQL::Schema::Resolver
99
99
 
100
100
  description 'Lists all posts'
101
101
 
102
- option(:name, type: types.String, description: 'Fuzzy name matching') { ... }
103
- option(:published, type: types.Boolean, description: 'Find published/unpublished') { ... }
102
+ option(:name, type: String, description: 'Fuzzy name matching') { ... }
103
+ option(:published, type: Boolean, description: 'Find published/unpublished') { ... }
104
104
  end
105
105
  ```
106
106
 
@@ -112,7 +112,7 @@ class PostResolver < GraphQL::Schema::Resolver
112
112
 
113
113
  scope { Post.all }
114
114
 
115
- option(:published, type: types.Boolean, default: true) { |scope, value| value ? scope.published : scope.unpublished }
115
+ option(:published, type: Boolean, default: true) { |scope, value| value ? scope.published : scope.unpublished }
116
116
  end
117
117
  ```
118
118
 
@@ -126,7 +126,7 @@ class PostResolver < GraphQL::Schema::Resolver
126
126
 
127
127
  scope { Post.all }
128
128
 
129
- option(:published, type: types.Boolean, argument_options: { pundit_role: :read }) { |scope, value| value ? scope.published : scope.unpublished }
129
+ option(:published, type: Boolean, argument_options: { pundit_role: :read }) { |scope, value| value ? scope.published : scope.unpublished }
130
130
  end
131
131
  ```
132
132
 
@@ -14,8 +14,8 @@ module Resolvers
14
14
 
15
15
  scope { Category.all }
16
16
 
17
- option :id, type: types.String, with: :apply_id_filter
18
- option :name, type: types.String, with: :apply_name_filter
17
+ option :id, type: String, with: :apply_id_filter
18
+ option :name, type: String, with: :apply_name_filter
19
19
  option :order, type: OrderEnum, default: 'RECENT'
20
20
 
21
21
  def apply_id_filter(scope, value)
@@ -16,12 +16,12 @@ module Resolvers
16
16
 
17
17
  scope { object.respond_to?(:posts) ? object.posts : Post.all }
18
18
 
19
- option :id, type: types.String, with: :apply_id_filter
20
- option :title, type: types.String, with: :apply_title_filter
21
- option :body, type: types.String, with: :apply_body_filter
22
- option :categoryId, type: types.String, with: :apply_category_id_filter
23
- option :categoryName, type: types.String, with: :apply_category_name_filter
24
- option :published, type: types.Boolean, with: :apply_published_filter
19
+ option :id, type: String, with: :apply_id_filter
20
+ option :title, type: String, with: :apply_title_filter
21
+ option :body, type: String, with: :apply_body_filter
22
+ option :categoryId, type: String, with: :apply_category_id_filter
23
+ option :categoryName, type: String, with: :apply_category_name_filter
24
+ option :published, type: Boolean, with: :apply_published_filter
25
25
  option :order, type: OrderEnum, default: 'RECENT'
26
26
 
27
27
  def apply_id_filter(scope, value)
@@ -3,7 +3,7 @@
3
3
  module SearchObject
4
4
  module Plugin
5
5
  module Graphql
6
- VERSION = '1.0.2'
6
+ VERSION = '1.0.4'
7
7
  end
8
8
  end
9
9
  end
@@ -37,6 +37,7 @@ module SearchObject
37
37
  argument_options[:camelize] = options[:camelize] if options.include?(:camelize)
38
38
  argument_options[:default_value] = options[:default] if options.include?(:default)
39
39
  argument_options[:description] = options[:description] if options.include?(:description)
40
+ argument_options[:deprecation_reason] = options[:deprecation_reason] if options.include?(:deprecation_reason)
40
41
 
41
42
  argument(name.to_s, type, **argument_options)
42
43
 
@@ -45,6 +46,7 @@ module SearchObject
45
46
  super(name, options, &block)
46
47
  end
47
48
 
49
+ # NOTE(rstankov): This is removed in GraphQL 2.0.0
48
50
  def types
49
51
  GraphQL::Define::TypeDefiner.instance
50
52
  end
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.add_dependency 'graphql', '~> 1.8'
23
+ spec.add_dependency 'graphql', '> 1.8'
24
24
  spec.add_dependency 'search_object', '~> 1.2.2'
25
25
 
26
26
  spec.add_development_dependency 'coveralls'
@@ -92,7 +92,7 @@ describe SearchObject::Plugin::Graphql do
92
92
 
93
93
  type [post_type], null: 1
94
94
 
95
- option(:id, type: !types.ID) { |scope, value| scope.select { |p| p.id == value } }
95
+ option(:id, type: GraphQL::Types::ID) { |scope, value| scope.select { |p| p.id == value } }
96
96
  end
97
97
 
98
98
  schema = define_schema do
@@ -225,7 +225,7 @@ describe SearchObject::Plugin::Graphql do
225
225
 
226
226
  it 'accepts default type' do
227
227
  schema = define_search_class_and_return_schema do
228
- option(:id, type: types.String, default: 'default') do |_scope, value|
228
+ option(:id, type: String, default: 'default') do |_scope, value|
229
229
  [Post.new(value)]
230
230
  end
231
231
  end
@@ -243,7 +243,7 @@ describe SearchObject::Plugin::Graphql do
243
243
  schema = define_search_class_and_return_schema do
244
244
  type PostType, null: true
245
245
 
246
- option('option', type: types.String, default: 'default') { [] }
246
+ option('option', type: String, default: 'default') { [] }
247
247
  end
248
248
 
249
249
  result = schema.execute <<~GRAPHQL
@@ -277,7 +277,7 @@ describe SearchObject::Plugin::Graphql do
277
277
 
278
278
  it 'accepts "required"' do
279
279
  schema = define_search_class_and_return_schema do
280
- option(:id, type: types.String, required: true) do |_scope, value|
280
+ option(:id, type: String, required: true) do |_scope, value|
281
281
  [Post.new(value)]
282
282
  end
283
283
  end
@@ -292,7 +292,7 @@ describe SearchObject::Plugin::Graphql do
292
292
  permission: true
293
293
  }
294
294
  schema = define_search_class_and_return_schema do
295
- option(:id, type: types.String, argument_options: argument_options) do |_scope, value|
295
+ option(:id, type: String, argument_options: argument_options) do |_scope, value|
296
296
  [Post.new(value)]
297
297
  end
298
298
  end
@@ -304,14 +304,13 @@ describe SearchObject::Plugin::Graphql do
304
304
  'posts' => [Post.new('2').to_json]
305
305
  }
306
306
  )
307
-
308
307
  end
309
308
 
310
309
  it 'accepts description' do
311
310
  schema = define_search_class_and_return_schema do
312
311
  type PostType, null: true
313
312
 
314
- option('option', type: types.String, description: 'what this argument does') { [] }
313
+ option('option', type: String, description: 'what this argument does') { [] }
315
314
  end
316
315
 
317
316
  result = schema.execute <<-SQL
@@ -347,7 +346,7 @@ describe SearchObject::Plugin::Graphql do
347
346
  schema = define_search_class_and_return_schema do
348
347
  type PostType, null: true
349
348
 
350
- option('option_field', type: types.String, camelize: false)
349
+ option('option_field', type: String, camelize: false)
351
350
  end
352
351
 
353
352
  result = schema.execute <<-SQL
@@ -381,7 +380,7 @@ describe SearchObject::Plugin::Graphql do
381
380
  schema = define_search_class_and_return_schema do
382
381
  type PostType, null: true
383
382
 
384
- option('option_field', type: types.String)
383
+ option('option_field', type: String)
385
384
  end
386
385
 
387
386
  result = schema.execute <<~GRAPHQL
@@ -411,6 +410,65 @@ describe SearchObject::Plugin::Graphql do
411
410
  )
412
411
  end
413
412
 
413
+ it 'accepts deprecation_reason' do
414
+ schema = define_search_class_and_return_schema do
415
+ type PostType, null: true
416
+
417
+ option('option', type: String, deprecation_reason: 'Not in use anymore')
418
+ end
419
+
420
+
421
+ result = schema.execute <<-SQL
422
+ {
423
+ __type(name: "Query") {
424
+ name
425
+ fields {
426
+ args(includeDeprecated: false) {
427
+ name
428
+ }
429
+ }
430
+ }
431
+ }
432
+ SQL
433
+
434
+ expect(result.to_h).to eq(
435
+ 'data' => {
436
+ '__type' => {
437
+ 'name' => 'Query',
438
+ 'fields' => [{
439
+ 'args' => []
440
+ }]
441
+ }
442
+ }
443
+ )
444
+
445
+ result = schema.execute <<-SQL
446
+ {
447
+ __type(name: "Query") {
448
+ name
449
+ fields {
450
+ args(includeDeprecated: true) {
451
+ name
452
+ }
453
+ }
454
+ }
455
+ }
456
+ SQL
457
+
458
+ expect(result.to_h).to eq(
459
+ 'data' => {
460
+ '__type' => {
461
+ 'name' => 'Query',
462
+ 'fields' => [{
463
+ 'args' => [{
464
+ 'name' => 'option',
465
+ }]
466
+ }]
467
+ }
468
+ }
469
+ )
470
+ end
471
+
414
472
  it 'raises error when no type is given' do
415
473
  expect { define_search_class { option :name } }.to raise_error described_class::MissingTypeDefinitionError
416
474
  end
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: search_object_graphql
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Radoslav Stankov
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-29 00:00:00.000000000 Z
11
+ date: 2022-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: graphql
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.8'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.8'
27
27
  - !ruby/object:Gem::Dependency
@@ -192,7 +192,7 @@ homepage: https://github.com/RStankov/SearchObjectGraphQL
192
192
  licenses:
193
193
  - MIT
194
194
  metadata: {}
195
- post_install_message:
195
+ post_install_message:
196
196
  rdoc_options: []
197
197
  require_paths:
198
198
  - lib
@@ -207,8 +207,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
207
207
  - !ruby/object:Gem::Version
208
208
  version: '0'
209
209
  requirements: []
210
- rubygems_version: 3.0.3
211
- signing_key:
210
+ rubygems_version: 3.1.6
211
+ signing_key:
212
212
  specification_version: 4
213
213
  summary: Maps search objects to GraphQL resolvers
214
214
  test_files: