webmock-twirp 0.1.0 → 0.1.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
  SHA256:
3
- metadata.gz: 961de376102cbbb75708a544bb34e42c065beab4ad92ef4e4441036d47569d1d
4
- data.tar.gz: 0de10400686561ba24d597d06ea23c4b77ca3445af78c7f7a98997e1bd32d86c
3
+ metadata.gz: 944a35bac7c3e752f543bc37f6d2b0a66a1a7f771022ac28c9c30ddba2e92891
4
+ data.tar.gz: db6bfad348186e05d483d6d09c485fd470679e3978fcca131e93d5fcee6649de
5
5
  SHA512:
6
- metadata.gz: e1edcd51eff12eb65d75dd96713ff202410447cdd9ef3ddfbf1fff7c090cc94d370ec381a6bf4966b7e1cd0034c59552f1ed1953e498f7b24b06df4bf1beaad9
7
- data.tar.gz: b6a646485bc5d8a49f27229cddfc55d3045fb000a0d0186ed03216dbd8436331186d058dcd4257ca15ee5d6ebd757026d7fb5a9fb4be69f4c1d512e4efd0286e
6
+ metadata.gz: 7b7fb99d4bf12cad35620ef9bb22bd7faabd626254c6e5a307b27da7478091eaf88256d0fc902cb507311312837c52ecc0b238796cedc0153674dbb34db69308
7
+ data.tar.gz: 8f4bf9c6f3b828843e2cc8167c4b47e7ccda55a56dda1c678f5b1cf7e2b0eba01207e71572d08e13004e7c031f5ef950160f61a907ffffefbbec862be7d1918b
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ### v0.1.1 (2022-10-11)
2
+ - test coverage
3
+ - error messages
4
+ - fix and_return alias
5
+ - Update README.md
6
+
1
7
  ### v0.1.0 (2022-10-09)
2
8
  - dynamic client/rpc lookup
3
9
 
data/README.md CHANGED
@@ -2,7 +2,12 @@ WebMock::Twirp
2
2
  ======
3
3
  Twirp support for [WebMock](https://github.com/bblimke/webmock). All our favorite http request stubbing for Twirp RPCs - message and error serialization done automatically.
4
4
 
5
+ ### Install
6
+ ```ruby
7
+ gem "webmock-twirp"
8
+ ```
5
9
 
10
+ ### Example
6
11
  ```ruby
7
12
  require "webmock/twirp"
8
13
 
@@ -37,6 +42,59 @@ end
37
42
  ```
38
43
 
39
44
 
45
+ ## Usage
46
+
47
+ ### .with
48
+ `stub_twirp_request.with` allows you to only stub requests which match specific attributes. It accepts a hash or a `Google::Protobuf::MessageExts` instance. The hash supports constants, regexes, and rspec matchers.
49
+
50
+ ```ruby
51
+ stub_twirp_request.with(message: "hi")
52
+ stub_twirp_request.with(message: /^h/)
53
+ stub_twirp_request.with(message: include("i"))
54
+
55
+ expected_request = MyTwirpRequest.new(message: "hi")
56
+ stub_twirp_request.with(expected_request)
57
+ ```
58
+
59
+
60
+ If you want even more control over the matching criteria, use the block mode. A `Protobuf` instance is passed into the block with the request's parameters.
61
+
62
+ ```ruby
63
+ stub_twirp_request.with do |request|
64
+ request.message == "hi"
65
+ end
66
+ ```
67
+
68
+
69
+ ### .to_return
70
+ `stub_twirp_request.to_return` allows you to specify a response, or use a default response. It can be a hash or `Protobuf` instance. To return an error, specify an error code, http status, or `Twirp::Error`.
71
+
72
+ ```ruby
73
+ stub_twirp_request.to_return # ie. `MyTwirpResponse.new`
74
+
75
+ stub_twirp_request.to_return(msg: "bye")
76
+
77
+ response = MyTwirpResponse.new(msg: "bye")
78
+ stub_twirp_request.to_return(response)
79
+
80
+ # errors
81
+ stub_twirp_request.to_return(:not_found)
82
+ stub_twirp_request.to_return(404)
83
+ stub_twirp_request.to_return(Twirp::Error.not_found("Nope"))
84
+ ```
85
+
86
+ The block mode passes in the request Protobuf.
87
+ ```ruby
88
+ stub_twirp_request.to_return do |request|
89
+ if request.message == "hi"
90
+ { msg: "bye" }
91
+ else
92
+ :not_found
93
+ end
94
+ end
95
+ ```
96
+
97
+
40
98
  ----
41
99
  ## Contributing
42
100
 
@@ -117,6 +117,7 @@ module WebMock
117
117
 
118
118
  super(*response_hashes, &decoder)
119
119
  end
120
+ alias_method :and_return, :to_return # update existing alias
120
121
 
121
122
  def to_return_json(*)
122
123
  raise NotImplementedError
@@ -168,10 +169,10 @@ module WebMock
168
169
  if code = ::Twirp::ERROR_CODES_TO_HTTP_STATUS.key(obj)
169
170
  ::Twirp::Error.new(code, code)
170
171
  else
171
- raise ArgumentError, "invalid error code: #{obj}"
172
+ raise ArgumentError, "invalid http error status: #{obj}"
172
173
  end
173
174
  else
174
- raise NotImplementedError
175
+ raise ArgumentError, "can not generate twirp reponse from: #{obj}"
175
176
  end
176
177
 
177
178
  if res.is_a?(Google::Protobuf::MessageExts)
@@ -1,5 +1,5 @@
1
1
  module WebMock
2
2
  module Twirp
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
5
5
  end
data/lib/webmock/twirp.rb CHANGED
@@ -31,8 +31,7 @@ if $LOADED_FEATURES.find { |x| x =~ %r{/webmock/rspec.rb} }
31
31
  # require "webmock/rspec"
32
32
  RSpec.configure { |c| c.include WebMock::Twirp::API }
33
33
  else
34
- # patch Webmock to also export stub_twirp_request
35
-
34
+ # patch WebMock to also export stub_twirp_request
36
35
  module WebMock
37
36
  module API
38
37
  include WebMock::Twirp::API
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webmock-twirp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Pepper
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-09 00:00:00.000000000 Z
11
+ date: 2022-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: webmock