|
14 | 14 | response_class = self.response_class |
15 | 15 |
|
16 | 16 | interface_class = Class.new(Protocol::GRPC::Interface) do |
17 | | - rpc :say_hello, request_class: request_class, response_class: response_class |
| 17 | + rpc :SayHello, request_class: request_class, response_class: response_class |
18 | 18 | end |
19 | 19 |
|
20 | | - rpc = interface_class.lookup_rpc(:say_hello) |
| 20 | + rpc = interface_class.lookup_rpc(:SayHello) |
| 21 | + expect(rpc.name).to be == :SayHello |
| 22 | + expect(rpc.method).to be == :say_hello |
21 | 23 | expect(rpc.request_class).to be == request_class |
22 | 24 | expect(rpc.response_class).to be == response_class |
23 | 25 | expect(rpc.streaming).to be == :unary |
|
35 | 37 | response_class = self.response_class |
36 | 38 |
|
37 | 39 | interface_class = Class.new(Protocol::GRPC::Interface) do |
38 | | - rpc :method1, request_class: request_class, response_class: response_class |
39 | | - rpc :method2, request_class: request_class, response_class: response_class, streaming: :server_streaming |
| 40 | + rpc :Method1, request_class: request_class, response_class: response_class |
| 41 | + rpc :Method2, request_class: request_class, response_class: response_class, streaming: :server_streaming |
40 | 42 | end |
41 | 43 |
|
42 | 44 | rpcs = interface_class.rpcs |
43 | | - expect(rpcs.keys.sort).to be == [:method1, :method2].sort |
44 | | - expect(rpcs[:method1].streaming).to be == :unary |
45 | | - expect(rpcs[:method2].streaming).to be == :server_streaming |
| 45 | + expect(rpcs.keys.sort).to be == [:Method1, :Method2].sort |
| 46 | + expect(rpcs[:Method1].streaming).to be == :unary |
| 47 | + expect(rpcs[:Method2].streaming).to be == :server_streaming |
46 | 48 |
|
47 | 49 | # Test streaming? method: |
48 | | - expect(rpcs[:method1].streaming?).to be == false |
49 | | - expect(rpcs[:method2].streaming?).to be == true |
| 50 | + expect(rpcs[:Method1].streaming?).to be == false |
| 51 | + expect(rpcs[:Method2].streaming?).to be == true |
50 | 52 | end |
51 | 53 |
|
52 | 54 | it "inherits RPCs from parent class" do |
53 | 55 | request_class = self.request_class |
54 | 56 | response_class = self.response_class |
55 | 57 |
|
56 | 58 | base_class = Class.new(Protocol::GRPC::Interface) do |
57 | | - rpc :base_method, request_class: request_class, response_class: response_class |
| 59 | + rpc :BaseMethod, request_class: request_class, response_class: response_class |
58 | 60 | end |
59 | 61 |
|
60 | 62 | subclass = Class.new(base_class) do |
61 | | - rpc :sub_method, request_class: request_class, response_class: response_class |
| 63 | + rpc :SubMethod, request_class: request_class, response_class: response_class |
62 | 64 | end |
63 | 65 |
|
64 | 66 | # Subclass should have both methods |
65 | | - expect(subclass.rpcs.keys.sort).to be == [:base_method, :sub_method].sort |
| 67 | + expect(subclass.rpcs.keys.sort).to be == [:BaseMethod, :SubMethod].sort |
66 | 68 |
|
67 | 69 | # Can retrieve inherited method |
68 | | - base_rpc = subclass.lookup_rpc(:base_method) |
| 70 | + base_rpc = subclass.lookup_rpc(:BaseMethod) |
69 | 71 | expect(base_rpc.request_class).to be == request_class |
70 | 72 | expect(base_rpc.response_class).to be == response_class |
71 | 73 |
|
72 | 74 | # Can retrieve own method |
73 | | - sub_rpc = subclass.lookup_rpc(:sub_method) |
| 75 | + sub_rpc = subclass.lookup_rpc(:SubMethod) |
74 | 76 | expect(sub_rpc.request_class).to be == request_class |
75 | 77 | expect(sub_rpc.response_class).to be == response_class |
76 | 78 | end |
|
82 | 84 | other_response_class = Class.new |
83 | 85 |
|
84 | 86 | base_class = Class.new(Protocol::GRPC::Interface) do |
85 | | - rpc :method, request_class: request_class, response_class: response_class |
| 87 | + rpc :Method, request_class: request_class, response_class: response_class |
86 | 88 | end |
87 | 89 |
|
88 | 90 | subclass = Class.new(base_class) do |
89 | | - rpc :method, request_class: other_request_class, response_class: other_response_class, streaming: :bidirectional |
| 91 | + rpc :Method, request_class: other_request_class, response_class: other_response_class, streaming: :bidirectional |
90 | 92 | end |
91 | 93 |
|
92 | 94 | # Subclass should use its own definition |
93 | | - rpc = subclass.lookup_rpc(:method) |
| 95 | + rpc = subclass.lookup_rpc(:Method) |
94 | 96 | expect(rpc.request_class).to be == other_request_class |
95 | 97 | expect(rpc.response_class).to be == other_response_class |
96 | 98 | expect(rpc.streaming).to be == :bidirectional |
97 | 99 | expect(rpc.streaming?).to be == true |
98 | 100 |
|
99 | 101 | # Base class should still have original definition |
100 | | - base_rpc = base_class.lookup_rpc(:method) |
| 102 | + base_rpc = base_class.lookup_rpc(:Method) |
101 | 103 | expect(base_rpc.request_class).to be == request_class |
102 | 104 | expect(base_rpc.response_class).to be == response_class |
103 | 105 | expect(base_rpc.streaming).to be == :unary |
|
109 | 111 | response_class = self.response_class |
110 | 112 |
|
111 | 113 | level1 = Class.new(Protocol::GRPC::Interface) do |
112 | | - rpc :level1_method, request_class: request_class, response_class: response_class |
| 114 | + rpc :Level1Method, request_class: request_class, response_class: response_class |
113 | 115 | end |
114 | 116 |
|
115 | 117 | level2 = Class.new(level1) do |
116 | | - rpc :level2_method, request_class: request_class, response_class: response_class |
| 118 | + rpc :Level2Method, request_class: request_class, response_class: response_class |
117 | 119 | end |
118 | 120 |
|
119 | 121 | level3 = Class.new(level2) do |
120 | | - rpc :level3_method, request_class: request_class, response_class: response_class |
| 122 | + rpc :Level3Method, request_class: request_class, response_class: response_class |
121 | 123 | end |
122 | 124 |
|
123 | 125 | # Level 3 should have all methods |
124 | | - expect(level3.rpcs.keys.sort).to be == [:level1_method, :level2_method, :level3_method].sort |
| 126 | + expect(level3.rpcs.keys.sort).to be == [:Level1Method, :Level2Method, :Level3Method].sort |
125 | 127 |
|
126 | 128 | # Can retrieve methods from all levels |
127 | | - expect(level3.lookup_rpc(:level1_method)).not.to be_nil |
128 | | - expect(level3.lookup_rpc(:level2_method)).not.to be_nil |
129 | | - expect(level3.lookup_rpc(:level3_method)).not.to be_nil |
| 129 | + expect(level3.lookup_rpc(:Level1Method)).not.to be_nil |
| 130 | + expect(level3.lookup_rpc(:Level2Method)).not.to be_nil |
| 131 | + expect(level3.lookup_rpc(:Level3Method)).not.to be_nil |
130 | 132 | end |
131 | 133 |
|
132 | 134 | it "can build paths for methods" do |
|
141 | 143 | response_class = self.response_class |
142 | 144 |
|
143 | 145 | class1 = Class.new(Protocol::GRPC::Interface) do |
144 | | - rpc :method1, request_class: request_class, response_class: response_class |
| 146 | + rpc :Method1, request_class: request_class, response_class: response_class |
145 | 147 | end |
146 | 148 |
|
147 | 149 | class2 = Class.new(Protocol::GRPC::Interface) do |
148 | | - rpc :method2, request_class: request_class, response_class: response_class |
| 150 | + rpc :Method2, request_class: request_class, response_class: response_class |
149 | 151 | end |
150 | 152 |
|
151 | 153 | # Each class should only have its own RPCs |
152 | | - expect(class1.rpcs.keys).to be == [:method1] |
153 | | - expect(class2.rpcs.keys).to be == [:method2] |
| 154 | + expect(class1.rpcs.keys).to be == [:Method1] |
| 155 | + expect(class2.rpcs.keys).to be == [:Method2] |
154 | 156 |
|
155 | | - expect(class1.lookup_rpc(:method2)).to be_nil |
156 | | - expect(class2.lookup_rpc(:method1)).to be_nil |
| 157 | + expect(class1.lookup_rpc(:Method2)).to be_nil |
| 158 | + expect(class2.lookup_rpc(:Method1)).to be_nil |
157 | 159 | end |
158 | 160 |
|
159 | 161 | it "supports explicit method name in RPC definition" do |
|
168 | 170 |
|
169 | 171 | rpc = explicit_interface.lookup_rpc(:XMLParser) |
170 | 172 | expect(rpc).to be_a(Protocol::GRPC::Interface::RPC) |
| 173 | + expect(rpc.name).to be == :XMLParser |
171 | 174 | expect(rpc.method).to be == :xml_parser |
172 | 175 | expect(rpc.request_class).to be == request_class |
173 | 176 | expect(rpc.response_class).to be == response_class |
|
183 | 186 | end |
184 | 187 |
|
185 | 188 | rpc = interface_class.lookup_rpc(:SayHello) |
| 189 | + expect(rpc.name).to be == :SayHello |
186 | 190 | expect(rpc.method).not.to be_nil |
187 | 191 | expect(rpc.method).to be == :say_hello |
188 | 192 | end |
|
198 | 202 | rpc :XMLParser, request_class: request_class, response_class: response_class |
199 | 203 | end |
200 | 204 |
|
| 205 | + expect(interface_class.lookup_rpc(:SayHello).name).to be == :SayHello |
201 | 206 | expect(interface_class.lookup_rpc(:SayHello).method).to be == :say_hello |
| 207 | + expect(interface_class.lookup_rpc(:UnaryCall).name).to be == :UnaryCall |
202 | 208 | expect(interface_class.lookup_rpc(:UnaryCall).method).to be == :unary_call |
| 209 | + expect(interface_class.lookup_rpc(:ServerStreamingCall).name).to be == :ServerStreamingCall |
203 | 210 | expect(interface_class.lookup_rpc(:ServerStreamingCall).method).to be == :server_streaming_call |
| 211 | + expect(interface_class.lookup_rpc(:XMLParser).name).to be == :XMLParser |
204 | 212 | expect(interface_class.lookup_rpc(:XMLParser).method).to be == :xml_parser |
205 | 213 | end |
206 | 214 |
|
|
215 | 223 | method: :parse_xml |
216 | 224 | end |
217 | 225 |
|
| 226 | + expect(interface_class.lookup_rpc(:SayHello).name).to be == :SayHello |
218 | 227 | expect(interface_class.lookup_rpc(:SayHello).method).to be == :greet_user |
| 228 | + expect(interface_class.lookup_rpc(:XMLParser).name).to be == :XMLParser |
219 | 229 | expect(interface_class.lookup_rpc(:XMLParser).method).to be == :parse_xml |
220 | 230 | end |
221 | 231 |
|
|
233 | 243 | rpc1 = interface_class.lookup_rpc(:SayHello) |
234 | 244 | rpc2 = interface_class.lookup_rpc(:UnaryCall) |
235 | 245 |
|
| 246 | + expect(rpc1.name).to be == :SayHello |
| 247 | + expect(rpc2.name).to be == :UnaryCall |
236 | 248 | expect(rpc1.method).not.to be_nil |
237 | 249 | expect(rpc2.method).not.to be_nil |
238 | 250 | expect(rpc1.method).to be_a(Symbol) |
|
249 | 261 | rpc :GetUserByID, request_class: request_class, response_class: response_class |
250 | 262 | end |
251 | 263 |
|
| 264 | + expect(interface_class.lookup_rpc(:HTTPRequest).name).to be == :HTTPRequest |
252 | 265 | expect(interface_class.lookup_rpc(:HTTPRequest).method).to be == :http_request |
| 266 | + expect(interface_class.lookup_rpc(:XMLHTTPRequest).name).to be == :XMLHTTPRequest |
253 | 267 | expect(interface_class.lookup_rpc(:XMLHTTPRequest).method).to be == :xmlhttp_request |
| 268 | + expect(interface_class.lookup_rpc(:GetUserByID).name).to be == :GetUserByID |
254 | 269 | expect(interface_class.lookup_rpc(:GetUserByID).method).to be == :get_user_by_id |
255 | 270 | end |
256 | 271 | end |
| 272 | + |
| 273 | + with "name field" do |
| 274 | + it "always sets name field to the RPC definition name" do |
| 275 | + request_class = self.request_class |
| 276 | + response_class = self.response_class |
| 277 | + |
| 278 | + interface_class = Class.new(Protocol::GRPC::Interface) do |
| 279 | + rpc :SayHello, request_class: request_class, response_class: response_class |
| 280 | + rpc :UnaryCall, request_class: request_class, response_class: response_class |
| 281 | + rpc :XMLParser, request_class: request_class, response_class: response_class, |
| 282 | + method: :xml_parser |
| 283 | + end |
| 284 | + |
| 285 | + expect(interface_class.lookup_rpc(:SayHello).name).to be == :SayHello |
| 286 | + expect(interface_class.lookup_rpc(:UnaryCall).name).to be == :UnaryCall |
| 287 | + expect(interface_class.lookup_rpc(:XMLParser).name).to be == :XMLParser |
| 288 | + end |
| 289 | + |
| 290 | + it "preserves name even when method is explicitly set" do |
| 291 | + request_class = self.request_class |
| 292 | + response_class = self.response_class |
| 293 | + |
| 294 | + interface_class = Class.new(Protocol::GRPC::Interface) do |
| 295 | + rpc :SayHello, request_class: request_class, response_class: response_class, |
| 296 | + method: :greet_user |
| 297 | + end |
| 298 | + |
| 299 | + rpc = interface_class.lookup_rpc(:SayHello) |
| 300 | + expect(rpc.name).to be == :SayHello |
| 301 | + expect(rpc.method).to be == :greet_user |
| 302 | + end |
| 303 | + end |
257 | 304 | end |
258 | | - |
|
0 commit comments