gruf-rspec 0.1.2 → 0.4.0

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
  SHA256:
3
- metadata.gz: d1796bb825639ddd8df3ab127a6a2cf03e5976f0d12dca68b8a74a24332faf2e
4
- data.tar.gz: 8423df9c7ca13a86db3933cbff4a65174a13cbbab91a14185398e5afedd7cfd1
3
+ metadata.gz: da3a95acbe4bf299a1d82f383b43361bdf204473916d06942850fe4fcad330f1
4
+ data.tar.gz: bf96d2fa48d250c87a660873bbb8568e019e99983aaba8d783688514bec5bd18
5
5
  SHA512:
6
- metadata.gz: 5f875ab023f68ff4ce0a280db9487a0a265ee872c518e929fd1cd64676207d8493a0ba4f1fcba5f44f2e507523cef29ddaeefd9a24c9fcc9a58ee710c20cac69
7
- data.tar.gz: 68ec5d8b6099362e4b06e7bd527d678dc029aa52559911903c6c48386b5c28c2c0d7e4736482f49f9cdb8c93f62774594facde57e372f61d42abcabed93a9024
6
+ metadata.gz: f73ab1c615fc25f28be00829d70994a54b16bde6b99a2382dfd5f08fc804c863ac0114c44ae9e2ec21be344a694f4586c5979ca2caff99c7800f8fda51ae954f
7
+ data.tar.gz: 66ea42f5022790b21e539c155d809c74e63c1dd13604a7cf39aef085216b92817f3f69fc8eceace95579a7b4486597397fdb5e1fe658e79db73a4ba75405a191
data/CHANGELOG.md CHANGED
@@ -2,6 +2,33 @@ Changelog for the gruf-rspec gem.
2
2
 
3
3
  ### Pending release
4
4
 
5
+ ### 0.4.0
6
+
7
+ - Remove unnecessarily strict dev dependencies
8
+ - Adds support for Ruby 3.0 into test suite
9
+
10
+ ### 0.3.0
11
+
12
+ - [#7] Fix issue where RPC_SPEC_PATH defaulting is hardcoded
13
+ - Drop support for Ruby < 2.6, add 2.7 tests
14
+ - Update rubocop to 1.0
15
+
16
+ ### 0.2.2
17
+
18
+ * Loosen rspec dependency
19
+
20
+ ### 0.2.1
21
+
22
+ * Loosen rack dependency
23
+
24
+ ### 0.2.0
25
+
26
+ * Deprecate support for Ruby < 2.4
27
+
28
+ ### 0.1.3
29
+
30
+ * Add ability to include metadata in rpc callsa
31
+
5
32
  ### 0.1.2
6
33
 
7
34
  * Fix issue with RSPEC_NAMESPACE conflicts with other gems
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # gruf-rspec
2
2
 
3
- [![Build Status](https://travis-ci.com/bigcommerce/gruf-rspec.svg?token=D3Cc4LCF9BgpUx4dpPpv&branch=master)](https://travis-ci.com/bigcommerce/gruf-rspec) [![Gem Version](https://badge.fury.io/rb/gruf-rspec.svg)](https://badge.fury.io/rb/gruf-rspec) [![Documentation](https://inch-ci.org/github/bigcommerce/gruf-rspec.svg?branch=master)](https://inch-ci.org/github/bigcommerce/gruf-rspec?branch=master)
3
+ [![CircleCI](https://circleci.com/gh/bigcommerce/gruf-rspec/tree/main.svg?style=svg)](https://circleci.com/gh/bigcommerce/gruf-rspec/tree/main) [![Gem Version](https://badge.fury.io/rb/gruf-rspec.svg)](https://badge.fury.io/rb/gruf-rspec) [![Documentation](https://inch-ci.org/github/bigcommerce/gruf-rspec.svg?branch=main)](https://inch-ci.org/github/bigcommerce/gruf-rspec?branch=main)
4
4
 
5
5
  Assistance helpers and custom type for easy testing [Gruf](https://github.com/bigcommerce/gruf) controllers with
6
6
  [RSpec](https://github.com/rspec/rspec).
@@ -17,12 +17,13 @@ Then add the following code to your `spec_helper.rb`:
17
17
  require 'gruf/rspec'
18
18
  ```
19
19
 
20
- Note that this gem requires at least Gruf 2.5.1+ and RSpec 3.8+.
20
+ Note that this gem requires at least Ruby 2.6+, Gruf 2.5.1+, and RSpec 3.8+.
21
21
 
22
22
  ## Usage
23
23
 
24
24
  * Add a test for a Gruf controller in `spec/rpc`
25
- * Run the `run_rpc` method with two args: The gRPC method name, and the request object
25
+ * Run the `run_rpc` method with three args: The gRPC method name, the request object
26
+ and the active_call_options. The third argument is optional.
26
27
  * Validate the response
27
28
 
28
29
  ## Example
@@ -46,9 +47,12 @@ To test it, you'd create `spec/rpc/thing_controller_spec.rb`:
46
47
  describe ThingController do
47
48
  describe '.get_thing' do
48
49
  let(:request_proto) { Rpc::GetThingRequest.new(id: rand(1..100)) }
49
-
50
- subject { run_rpc(:GetThing, request_proto) }
51
-
50
+ let(:metadata) {
51
+ { 'user_id' => 'axj42i' }
52
+ }
53
+
54
+ subject { run_rpc(:GetThing, request_proto, active_call_options: { metadata: metadata }) }
55
+
52
56
  it 'will return the thing' do
53
57
  expect(subject).to be_a(Rpc::GetThingResponse)
54
58
  expect(subject.id).to eq request_proto.id
@@ -125,6 +129,23 @@ Gruf::Rspec.configure do |c|
125
129
  end
126
130
  ```
127
131
 
132
+ Alternatively, you can pass configuration of the path via ENV. For example, where
133
+ `RPC_SPEC_PATH="/spec/rpc_controllers"` is set in a `.env` file:
134
+
135
+ ```bash
136
+ bundle exec dotenv rspec
137
+ ```
138
+
139
+ Or, add `require: false` to the gemspec for the `gruf-rspec` gem, and then explicitly require it after setting the ENV
140
+ var:
141
+
142
+ ```ruby
143
+ Dotenv.load # assuming the .env file has the RPC_SPEC_PATH var set
144
+ # or:
145
+ ENV['RPC_SPEC_PATH'] = '/spec/rpc_controllers'
146
+ require 'gruf/rspec'
147
+ ```
148
+
128
149
  ## License
129
150
 
130
151
  Copyright (c) 2018-present, BigCommerce Pty. Ltd. All rights reserved
data/gruf-rspec.gemspec CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018-present, BigCommerce Pty. Ltd. All rights reserved
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
@@ -13,7 +15,7 @@
13
15
  # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
14
16
  # OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
15
17
  #
16
- lib = File.expand_path('../lib', __FILE__)
18
+ lib = File.expand_path('lib', __dir__)
17
19
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
18
20
  require 'gruf/rspec/version'
19
21
 
@@ -24,19 +26,21 @@ Gem::Specification.new do |spec|
24
26
  spec.email = ['splittingred@gmail.com']
25
27
  spec.license = 'MIT'
26
28
 
27
- spec.summary = %q{RSpec assistance library for gruf}
28
- spec.description = %q{RSpec assistance library for gruf, including testing helpers}
29
+ spec.summary = 'RSpec assistance library for gruf'
30
+ spec.description = 'RSpec assistance library for gruf, including testing helpers'
29
31
  spec.homepage = 'https://github.com/bigcommerce/gruf-rspec'
30
32
 
31
- # Specify which files should be added to the gem when it is released.
32
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
33
+ spec.required_ruby_version = '>= 2.6'
34
+
33
35
  spec.files = Dir['README.md', 'CHANGELOG.md', 'CODE_OF_CONDUCT.md', 'lib/**/*', 'gruf-rspec.gemspec']
34
36
  spec.require_paths = ['lib']
35
37
 
36
- spec.add_development_dependency 'bundler', '~> 1.16'
37
- spec.add_development_dependency 'rake', '~> 10.0'
38
- spec.add_development_dependency 'pry'
38
+ spec.add_development_dependency 'bundler-audit', '>= 0.6'
39
+ spec.add_development_dependency 'pry', '>= 0.13'
40
+ spec.add_development_dependency 'rspec_junit_formatter', '>= 0.4'
41
+ spec.add_development_dependency 'rubocop', '>= 0.82'
42
+ spec.add_development_dependency 'simplecov', '>= 0.15'
39
43
 
40
- spec.add_dependency 'gruf', '~> 2.5', '>= 2.5.1'
41
- spec.add_dependency 'rspec', '~> 3.8'
44
+ spec.add_runtime_dependency 'gruf', '~> 2.5', '>= 2.5.1'
45
+ spec.add_runtime_dependency 'rspec', '>= 3.8'
42
46
  end
data/lib/gruf/rspec.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018-present, BigCommerce Pty. Ltd. All rights reserved
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
@@ -29,7 +31,13 @@ require_relative 'rspec/configuration'
29
31
  require_relative 'rspec/helpers'
30
32
  require_relative 'rspec/error_matcher'
31
33
 
34
+ ##
35
+ # Base gruf module
36
+ #
32
37
  module Gruf
38
+ ##
39
+ # Base gruf-rspec module
40
+ #
33
41
  module Rspec
34
42
  extend Gruf::Rspec::Configuration
35
43
  end
@@ -45,16 +53,16 @@ GRUF_RSPEC_RUNNER.configure do |config|
45
53
  end
46
54
 
47
55
  config.before(:each, type: :gruf_controller) do
48
- define_singleton_method :run_rpc do |method_name, request, &block|
56
+ define_singleton_method :run_rpc do |method_name, request, active_call_options: {}, &block|
49
57
  @gruf_controller = described_class.new(
50
58
  method_key: method_name.to_s.underscore.to_sym,
51
59
  service: grpc_bound_service,
52
60
  rpc_desc: grpc_bound_service.rpc_descs[method_name.to_sym],
53
- active_call: grpc_active_call,
61
+ active_call: grpc_active_call(active_call_options),
54
62
  message: request
55
63
  )
56
64
  resp = @gruf_controller.call(@gruf_controller.request.method_key)
57
- block.call(resp) if block && block.is_a?(Proc)
65
+ block.call(resp) if block.is_a?(Proc)
58
66
  resp
59
67
  end
60
68
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018-present, BigCommerce Pty. Ltd. All rights reserved
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018-present, BigCommerce Pty. Ltd. All rights reserved
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018-present, BigCommerce Pty. Ltd. All rights reserved
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
@@ -22,12 +24,14 @@ module Gruf
22
24
  # Represents configuration settings for the system
23
25
  #
24
26
  module Configuration
27
+ DEFAULT_RSPEC_PATH = '/spec/rpc/'
28
+
25
29
  VALID_CONFIG_KEYS = {
26
30
  authentication_hydrators: {
27
31
  base: Gruf::Rspec::AuthenticationHydrators::Base,
28
32
  basic: Gruf::Rspec::AuthenticationHydrators::Basic
29
33
  },
30
- rpc_spec_path: '/spec/rpc/'.freeze
34
+ rpc_spec_path: ENV.fetch('RPC_SPEC_PATH', DEFAULT_RSPEC_PATH).to_s
31
35
  }.freeze
32
36
 
33
37
  attr_accessor *VALID_CONFIG_KEYS.keys
@@ -69,9 +73,9 @@ module Gruf
69
73
  #
70
74
  def reset
71
75
  VALID_CONFIG_KEYS.each do |k, v|
72
- send((k.to_s + '='), v)
76
+ send("#{k}=", v)
73
77
  end
74
- self.rpc_spec_path = '/spec/rpc/'.freeze
78
+ self.rpc_spec_path = ::ENV.fetch('RPC_SPEC_PATH', DEFAULT_RSPEC_PATH).to_s
75
79
  options
76
80
  end
77
81
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018-present, BigCommerce Pty. Ltd. All rights reserved
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
@@ -110,7 +112,7 @@ module Gruf
110
112
  # Deserialize the error from the response
111
113
  #
112
114
  def deserialize_error
113
- @error_serializer.new(@rpc_response.to_status.metadata[Gruf.error_metadata_key.to_sym]).deserialize if @error_serializer
115
+ @error_serializer&.new(@rpc_response.to_status.metadata[Gruf.error_metadata_key.to_sym])&.deserialize
114
116
  end
115
117
  end
116
118
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018-present, BigCommerce Pty. Ltd. All rights reserved
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
@@ -17,6 +19,9 @@ require_relative 'metadata_factory'
17
19
 
18
20
  module Gruf
19
21
  module Rspec
22
+ ##
23
+ # Module for including rspec helpers
24
+ #
20
25
  module Helpers
21
26
  ##
22
27
  # @param [Hash] options
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018-present, BigCommerce Pty. Ltd. All rights reserved
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2018-present, BigCommerce Pty. Ltd. All rights reserved
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
@@ -15,6 +17,6 @@
15
17
  #
16
18
  module Gruf
17
19
  module Rspec
18
- VERSION = '0.1.2'.freeze
20
+ VERSION = '0.4.0'
19
21
  end
20
22
  end
metadata CHANGED
@@ -1,57 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gruf-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shaun McCormick
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-13 00:00:00.000000000 Z
11
+ date: 2021-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: bundler-audit
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.16'
19
+ version: '0.6'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.16'
26
+ version: '0.6'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: pry
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '0.13'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '0.13'
41
41
  - !ruby/object:Gem::Dependency
42
- name: pry
42
+ name: rspec_junit_formatter
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '0.4'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '0.4'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0.82'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0.82'
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0.15'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0.15'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: gruf
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -76,14 +104,14 @@ dependencies:
76
104
  name: rspec
77
105
  requirement: !ruby/object:Gem::Requirement
78
106
  requirements:
79
- - - "~>"
107
+ - - ">="
80
108
  - !ruby/object:Gem::Version
81
109
  version: '3.8'
82
110
  type: :runtime
83
111
  prerelease: false
84
112
  version_requirements: !ruby/object:Gem::Requirement
85
113
  requirements:
86
- - - "~>"
114
+ - - ">="
87
115
  - !ruby/object:Gem::Version
88
116
  version: '3.8'
89
117
  description: RSpec assistance library for gruf, including testing helpers
@@ -109,7 +137,7 @@ homepage: https://github.com/bigcommerce/gruf-rspec
109
137
  licenses:
110
138
  - MIT
111
139
  metadata: {}
112
- post_install_message:
140
+ post_install_message:
113
141
  rdoc_options: []
114
142
  require_paths:
115
143
  - lib
@@ -117,15 +145,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
117
145
  requirements:
118
146
  - - ">="
119
147
  - !ruby/object:Gem::Version
120
- version: '0'
148
+ version: '2.6'
121
149
  required_rubygems_version: !ruby/object:Gem::Requirement
122
150
  requirements:
123
151
  - - ">="
124
152
  - !ruby/object:Gem::Version
125
153
  version: '0'
126
154
  requirements: []
127
- rubygems_version: 3.0.2
128
- signing_key:
155
+ rubygems_version: 3.2.17
156
+ signing_key:
129
157
  specification_version: 4
130
158
  summary: RSpec assistance library for gruf
131
159
  test_files: []