protobuf-rspec 0.1.3 → 0.2.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.
- data/lib/protobuf/rspec/helpers.rb +47 -13
- data/lib/protobuf/rspec/version.rb +1 -1
- metadata +40 -15
@@ -1,5 +1,14 @@
|
|
1
|
+
require 'rspec/core'
|
1
2
|
require 'protobuf/rpc/rpc.pb'
|
2
3
|
|
4
|
+
::RSpec.configure do |config|
|
5
|
+
config.add_setting :protobuf_raw_response, :default => false
|
6
|
+
|
7
|
+
def config.protobuf_raw_responses
|
8
|
+
self.protobuf_raw_response = true
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
3
12
|
# RSpec Helpers designed to give you mock abstraction of client or service layer.
|
4
13
|
# Require as protobuf/rspec/helpers and include into your running RSpec configuration.
|
5
14
|
#
|
@@ -21,6 +30,20 @@ module Protobuf
|
|
21
30
|
|
22
31
|
module ClassMethods
|
23
32
|
|
33
|
+
def metadata_for_protobuf_rspec
|
34
|
+
metadata[:protobuf_rspec] = metadata[:protobuf_rspec] ? metadata[:protobuf_rspec].dup : {}
|
35
|
+
end
|
36
|
+
|
37
|
+
def protobuf_raw_responses(true_or_false = true)
|
38
|
+
metadata_for_protobuf_rspec[:protobuf_raw_response] = true_or_false
|
39
|
+
end
|
40
|
+
|
41
|
+
def protobuf_raw_responses?
|
42
|
+
metadata_for_protobuf_rspec.fetch(:protobuf_raw_response) do
|
43
|
+
::RSpec.configuration.protobuf_raw_response?
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
24
47
|
# Set the service subject. Use this method when the described_class is
|
25
48
|
# not the class you wish to use with methods like local_rpc. In t
|
26
49
|
#
|
@@ -53,6 +76,10 @@ module Protobuf
|
|
53
76
|
|
54
77
|
module InstanceMethods
|
55
78
|
|
79
|
+
def protobuf_raw_responses?
|
80
|
+
self.class.protobuf_raw_responses?
|
81
|
+
end
|
82
|
+
|
56
83
|
def subject_service
|
57
84
|
self.class.subject_service
|
58
85
|
end
|
@@ -96,26 +123,33 @@ module Protobuf
|
|
96
123
|
#
|
97
124
|
# @param [Symbol, String] method a symbol or string denoting the method to call.
|
98
125
|
# @param [Protobuf::Message or Hash] request the request message of the expected type for the given method.
|
99
|
-
# @param [String] a string message indicating an rpc_failed expectation.
|
100
126
|
# @param [block] optionally provide a block which will be yielded the service instance just prior to invoking the rpc method.
|
101
127
|
# @return [Protobuf::Service] the service instance post-calling the rpc method.
|
102
|
-
def local_rpc(rpc_method, request,
|
128
|
+
def local_rpc(rpc_method, request, raw_response = false)
|
103
129
|
request = subject_service.rpcs[rpc_method].request_type.new(request) if request.is_a?(Hash)
|
104
|
-
service = subject_service.new(rpc_method, request.serialize_to_string)
|
105
130
|
|
106
|
-
if
|
107
|
-
|
108
|
-
|
131
|
+
if raw_response || protobuf_raw_responses? || request.serialize_to_string.empty?
|
132
|
+
service = subject_service.new(rpc_method, request.serialize_to_string)
|
133
|
+
|
134
|
+
yield(service) if block_given?
|
135
|
+
|
136
|
+
service.__send__(rpc_method)
|
137
|
+
return service
|
109
138
|
else
|
110
|
-
|
111
|
-
service.should_not_receive(:rpc_failed)
|
112
|
-
else
|
113
|
-
service.should_receive(:rpc_failed).with(expected_error)
|
114
|
-
end
|
139
|
+
return __dispatch_service_call__(rpc_method, request)
|
115
140
|
end
|
141
|
+
end
|
142
|
+
|
143
|
+
def __dispatch_service_call__(rpc_method, request)
|
144
|
+
request_params = {
|
145
|
+
:service_name => subject_service.to_s,
|
146
|
+
:method_name => rpc_method.to_s,
|
147
|
+
:request_proto => request.serialize_to_string
|
148
|
+
}
|
116
149
|
|
117
|
-
|
118
|
-
|
150
|
+
rpc_request = ::Protobuf::Socketrpc::Request.new(request_params)
|
151
|
+
dispatcher = ::Protobuf::Rpc::ServiceDispatcher.new(rpc_request)
|
152
|
+
dispatcher.invoke!
|
119
153
|
end
|
120
154
|
|
121
155
|
# Provides backwards compatability to bridge to the new local_rpc usage.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: protobuf-rspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: protobuf
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '2.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '2.0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: rspec
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ~>
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: '2.8'
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '2.8'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: rake
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: '0'
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: yard
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ~>
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: '0.7'
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0.7'
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: redcarpet
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ~>
|
@@ -65,7 +85,12 @@ dependencies:
|
|
65
85
|
version: '2.1'
|
66
86
|
type: :development
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '2.1'
|
69
94
|
description: Protobuf RSpec helpers for testing services and clients. Meant to be
|
70
95
|
used with the protobuf gem. Decouple external services/clients from each other using
|
71
96
|
the given helper methods.
|
@@ -97,7 +122,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
97
122
|
version: '0'
|
98
123
|
segments:
|
99
124
|
- 0
|
100
|
-
hash: -
|
125
|
+
hash: -1397050459416852954
|
101
126
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
127
|
none: false
|
103
128
|
requirements:
|
@@ -106,10 +131,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
131
|
version: '0'
|
107
132
|
segments:
|
108
133
|
- 0
|
109
|
-
hash: -
|
134
|
+
hash: -1397050459416852954
|
110
135
|
requirements: []
|
111
136
|
rubyforge_project: protobuf-rspec
|
112
|
-
rubygems_version: 1.8.
|
137
|
+
rubygems_version: 1.8.24
|
113
138
|
signing_key:
|
114
139
|
specification_version: 3
|
115
140
|
summary: Protobuf RSpec helpers for testing services and clients. Meant to be used
|