api_resource 0.4.3 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. data/VERSION +1 -1
  2. data/api_resource.gemspec +4 -74
  3. data/coverage/assets/0.5.3/app.js +88 -0
  4. data/coverage/assets/0.5.3/fancybox/blank.gif +0 -0
  5. data/coverage/assets/0.5.3/fancybox/fancy_close.png +0 -0
  6. data/coverage/assets/0.5.3/fancybox/fancy_loading.png +0 -0
  7. data/coverage/assets/0.5.3/fancybox/fancy_nav_left.png +0 -0
  8. data/coverage/assets/0.5.3/fancybox/fancy_nav_right.png +0 -0
  9. data/coverage/assets/0.5.3/fancybox/fancy_shadow_e.png +0 -0
  10. data/coverage/assets/0.5.3/fancybox/fancy_shadow_n.png +0 -0
  11. data/coverage/assets/0.5.3/fancybox/fancy_shadow_ne.png +0 -0
  12. data/coverage/assets/0.5.3/fancybox/fancy_shadow_nw.png +0 -0
  13. data/coverage/assets/0.5.3/fancybox/fancy_shadow_s.png +0 -0
  14. data/coverage/assets/0.5.3/fancybox/fancy_shadow_se.png +0 -0
  15. data/coverage/assets/0.5.3/fancybox/fancy_shadow_sw.png +0 -0
  16. data/coverage/assets/0.5.3/fancybox/fancy_shadow_w.png +0 -0
  17. data/coverage/assets/0.5.3/fancybox/fancy_title_left.png +0 -0
  18. data/coverage/assets/0.5.3/fancybox/fancy_title_main.png +0 -0
  19. data/coverage/assets/0.5.3/fancybox/fancy_title_over.png +0 -0
  20. data/coverage/assets/0.5.3/fancybox/fancy_title_right.png +0 -0
  21. data/coverage/assets/0.5.3/fancybox/fancybox-x.png +0 -0
  22. data/coverage/assets/0.5.3/fancybox/fancybox-y.png +0 -0
  23. data/coverage/assets/0.5.3/fancybox/fancybox.png +0 -0
  24. data/coverage/assets/0.5.3/fancybox/jquery.fancybox-1.3.1.css +363 -0
  25. data/coverage/assets/0.5.3/fancybox/jquery.fancybox-1.3.1.pack.js +44 -0
  26. data/coverage/assets/0.5.3/favicon_green.png +0 -0
  27. data/coverage/assets/0.5.3/favicon_red.png +0 -0
  28. data/coverage/assets/0.5.3/favicon_yellow.png +0 -0
  29. data/coverage/assets/0.5.3/highlight.css +129 -0
  30. data/coverage/assets/0.5.3/highlight.pack.js +1 -0
  31. data/coverage/assets/0.5.3/jquery-1.6.2.min.js +18 -0
  32. data/coverage/assets/0.5.3/jquery.dataTables.min.js +152 -0
  33. data/coverage/assets/0.5.3/jquery.timeago.js +141 -0
  34. data/coverage/assets/0.5.3/jquery.url.js +174 -0
  35. data/coverage/assets/0.5.3/loading.gif +0 -0
  36. data/coverage/assets/0.5.3/magnify.png +0 -0
  37. data/coverage/assets/0.5.3/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  38. data/coverage/assets/0.5.3/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  39. data/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  40. data/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  41. data/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  42. data/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  43. data/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  44. data/coverage/assets/0.5.3/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  45. data/coverage/assets/0.5.3/smoothness/images/ui-icons_222222_256x240.png +0 -0
  46. data/coverage/assets/0.5.3/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  47. data/coverage/assets/0.5.3/smoothness/images/ui-icons_454545_256x240.png +0 -0
  48. data/coverage/assets/0.5.3/smoothness/images/ui-icons_888888_256x240.png +0 -0
  49. data/coverage/assets/0.5.3/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  50. data/coverage/assets/0.5.3/smoothness/jquery-ui-1.8.4.custom.css +295 -0
  51. data/coverage/assets/0.5.3/stylesheet.css +383 -0
  52. data/coverage/index.html +3573 -0
  53. data/lib/api_resource/associations/abstract_scope.rb +191 -0
  54. data/lib/api_resource/associations/association_scope.rb +47 -0
  55. data/lib/api_resource/associations/belongs_to_remote_object_proxy.rb +5 -6
  56. data/lib/api_resource/associations/has_many_remote_object_proxy.rb +5 -8
  57. data/lib/api_resource/associations/has_one_remote_object_proxy.rb +12 -13
  58. data/lib/api_resource/associations/multi_object_proxy.rb +65 -39
  59. data/lib/api_resource/associations/resource_scope.rb +6 -17
  60. data/lib/api_resource/associations/scope.rb +23 -121
  61. data/lib/api_resource/associations/single_object_proxy.rb +41 -50
  62. data/lib/api_resource/associations.rb +32 -11
  63. data/lib/api_resource/attributes.rb +108 -69
  64. data/lib/api_resource/base.rb +114 -106
  65. data/lib/api_resource/local.rb +1 -1
  66. data/lib/api_resource/model_errors.rb +9 -6
  67. data/lib/api_resource/scopes.rb +53 -16
  68. data/lib/api_resource.rb +3 -1
  69. data/spec/lib/api_resource_spec.rb +3 -7
  70. data/spec/lib/associations/association_scope_spec.rb +19 -0
  71. data/spec/lib/associations_spec.rb +251 -162
  72. data/spec/lib/attributes_spec.rb +33 -15
  73. data/spec/lib/base_spec.rb +302 -64
  74. data/spec/lib/callbacks_spec.rb +4 -2
  75. data/spec/lib/local_spec.rb +5 -1
  76. data/spec/spec_helper.rb +2 -3
  77. data/spec/support/mocks/association_mocks.rb +9 -1
  78. data/spec/support/requests/association_requests.rb +5 -5
  79. data/spec/support/requests/test_resource_requests.rb +16 -4
  80. data/spec/tmp/api_resource_test_db.sqlite +0 -0
  81. metadata +68 -22
  82. data/.document +0 -5
  83. data/.rspec +0 -5
  84. data/.travis.yml +0 -4
  85. data/lib/api_resource/associations/association_proxy.rb +0 -121
  86. data/lib/api_resource/associations/dynamic_resource_scope.rb +0 -23
  87. data/lib/api_resource/associations/generic_scope.rb +0 -68
  88. data/lib/api_resource/associations/multi_argument_resource_scope.rb +0 -15
  89. data/lib/api_resource/associations/relation_scope.rb +0 -25
@@ -0,0 +1,3573 @@
1
+ <!DOCTYPE html>
2
+ <html xmlns='http://www.w3.org/1999/xhtml'>
3
+ <head>
4
+ <title>Code coverage for Api resource</title>
5
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6
+ <script src='./assets/0.5.3/jquery-1.6.2.min.js' type='text/javascript'></script>
7
+ <script src='./assets/0.5.3/jquery.dataTables.min.js' type='text/javascript'></script>
8
+ <script src='./assets/0.5.3/fancybox/jquery.fancybox-1.3.1.pack.js' type='text/javascript'></script>
9
+ <script src='./assets/0.5.3/jquery.timeago.js' type='text/javascript'></script>
10
+ <script src='./assets/0.5.3/jquery.url.js' type='text/javascript'></script>
11
+ <script src='./assets/0.5.3/highlight.pack.js' type='text/javascript'></script>
12
+ <script src='./assets/0.5.3/app.js' type='text/javascript'></script>
13
+ <link href='./assets/0.5.3/stylesheet.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
14
+ <link href='./assets/0.5.3/highlight.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
15
+ <link href='./assets/0.5.3/fancybox/jquery.fancybox-1.3.1.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
16
+ <link href='./assets/0.5.3/smoothness/jquery-ui-1.8.4.custom.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
17
+ <link rel="shortcut icon" type="image/png" href="./assets/0.5.3/favicon_yellow.png" />
18
+ <link rel="icon" type="image/png" href="./assets/0.5.3/favicon.png" />
19
+ </head>
20
+
21
+ <body>
22
+ <div id="loading">
23
+ <img src="./assets/0.5.3/loading.gif" alt="loading"/>
24
+ </div>
25
+ <div id="wrapper" style="display:none;">
26
+ <div class="timestamp">Generated <abbr class="timeago" title="2012-12-18T14:44:11-05:00">2012-12-18T14:44:11-05:00</abbr></div>
27
+ <ul class="group_tabs"></ul>
28
+
29
+ <div id="content">
30
+ <div class="file_list_container" id="AllFiles">
31
+ <h2>
32
+ <span class="group_name">All Files</span>
33
+ (<span class="covered_percent"><span class="yellow">89.43%</span></span>
34
+ covered at
35
+ <span class="covered_strength">
36
+ <span class="green">
37
+ 15.43
38
+ </span>
39
+ </span> hits/line)
40
+ </h2>
41
+ <a name="AllFiles"></a>
42
+ <div>
43
+ <b>6</b> files in total.
44
+ <b>265</b> relevant lines.
45
+ <span class="green"><b>237</b> lines covered</span> and
46
+ <span class="red"><b>28</b> lines missed </span>
47
+ </div>
48
+ <table class="file_list">
49
+ <thead>
50
+ <tr>
51
+ <th>File</th>
52
+ <th>% covered</th>
53
+ <th>Lines</th>
54
+ <th>Relevant Lines</th>
55
+ <th>Lines covered</th>
56
+ <th>Lines missed</th>
57
+ <th>Avg. Hits / Line</th>
58
+ </tr>
59
+ </thead>
60
+ <tbody>
61
+
62
+ <tr>
63
+ <td class="strong"><a href="#e64b4aa0689b3f8ff45d292a7eff0cdb2d768f69" class="src_link" title="lib/api_resource/connection.rb">lib/api_resource/connection.rb</a></td>
64
+ <td class="yellow strong">84.69 %</td>
65
+ <td>195</td>
66
+ <td>98</td>
67
+ <td>83</td>
68
+ <td>15</td>
69
+ <td>55.6</td>
70
+ </tr>
71
+
72
+ <tr>
73
+ <td class="strong"><a href="#ec1a1cac18d6c808c0f034b4f3cea55cb1dcf314" class="src_link" title="lib/api_resource/decorators.rb">lib/api_resource/decorators.rb</a></td>
74
+ <td class="green strong">100.0 %</td>
75
+ <td>6</td>
76
+ <td>4</td>
77
+ <td>4</td>
78
+ <td>0</td>
79
+ <td>1.0</td>
80
+ </tr>
81
+
82
+ <tr>
83
+ <td class="strong"><a href="#be561bc262ecc80cc1a0243361455048314d923e" class="src_link" title="lib/api_resource/decorators/caching_decorator.rb">lib/api_resource/decorators/caching_decorator.rb</a></td>
84
+ <td class="green strong">100.0 %</td>
85
+ <td>20</td>
86
+ <td>11</td>
87
+ <td>11</td>
88
+ <td>0</td>
89
+ <td>1.5</td>
90
+ </tr>
91
+
92
+ <tr>
93
+ <td class="strong"><a href="#2f83e4896f2601097fcc684e900ce0e5b1d5a763" class="src_link" title="lib/api_resource/formats/xml_format.rb">lib/api_resource/formats/xml_format.rb</a></td>
94
+ <td class="red strong">66.67 %</td>
95
+ <td>36</td>
96
+ <td>18</td>
97
+ <td>12</td>
98
+ <td>6</td>
99
+ <td>0.7</td>
100
+ </tr>
101
+
102
+ <tr>
103
+ <td class="strong"><a href="#60f5d5efaac28ddb9fb45e06622238c80a28fded" class="src_link" title="lib/api_resource/local.rb">lib/api_resource/local.rb</a></td>
104
+ <td class="green strong">100.0 %</td>
105
+ <td>12</td>
106
+ <td>6</td>
107
+ <td>6</td>
108
+ <td>0</td>
109
+ <td>1.0</td>
110
+ </tr>
111
+
112
+ <tr>
113
+ <td class="strong"><a href="#e1424c288ff4d7b1028dfa6dec5e043302a0f243" class="src_link" title="lib/api_resource/mocks.rb">lib/api_resource/mocks.rb</a></td>
114
+ <td class="green strong">94.53 %</td>
115
+ <td>285</td>
116
+ <td>128</td>
117
+ <td>121</td>
118
+ <td>7</td>
119
+ <td>32.8</td>
120
+ </tr>
121
+
122
+ </tbody>
123
+ </table>
124
+ </div>
125
+
126
+
127
+
128
+ </div>
129
+
130
+ <div id="footer">
131
+ Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.6.1
132
+ and simplecov-html v0.5.3<br/>
133
+ using RSpec
134
+ </div>
135
+
136
+ <div class="source_files">
137
+
138
+ <div class="source_table" id="e64b4aa0689b3f8ff45d292a7eff0cdb2d768f69">
139
+ <div class="header">
140
+ <h3>lib/api_resource/connection.rb</h3>
141
+ <h4><span class="yellow">84.69 %</span> covered</h4>
142
+ <div>
143
+ <b>98</b> relevant lines.
144
+ <span class="green"><b>83</b> lines covered</span> and
145
+ <span class="red"><b>15</b> lines missed.</span>
146
+ </div>
147
+ </div>
148
+
149
+ <pre>
150
+ <ol>
151
+
152
+ <li class="covered" data-hits="1" data-linenumber="1">
153
+ <span class="hits">1</span>
154
+
155
+ <code class="ruby">require 'active_support/core_ext/benchmark'</code>
156
+ </li>
157
+
158
+ <li class="covered" data-hits="1" data-linenumber="2">
159
+ <span class="hits">1</span>
160
+
161
+ <code class="ruby">require 'rest_client'</code>
162
+ </li>
163
+
164
+ <li class="covered" data-hits="1" data-linenumber="3">
165
+ <span class="hits">1</span>
166
+
167
+ <code class="ruby">require 'net/https'</code>
168
+ </li>
169
+
170
+ <li class="covered" data-hits="1" data-linenumber="4">
171
+ <span class="hits">1</span>
172
+
173
+ <code class="ruby">require 'date'</code>
174
+ </li>
175
+
176
+ <li class="covered" data-hits="1" data-linenumber="5">
177
+ <span class="hits">1</span>
178
+
179
+ <code class="ruby">require 'time'</code>
180
+ </li>
181
+
182
+ <li class="covered" data-hits="1" data-linenumber="6">
183
+ <span class="hits">1</span>
184
+
185
+ <code class="ruby">require 'uri'</code>
186
+ </li>
187
+
188
+ <li class="never" data-hits="" data-linenumber="7">
189
+
190
+
191
+ <code class="ruby"></code>
192
+ </li>
193
+
194
+ <li class="covered" data-hits="1" data-linenumber="8">
195
+ <span class="hits">1</span>
196
+
197
+ <code class="ruby">module ApiResource</code>
198
+ </li>
199
+
200
+ <li class="never" data-hits="" data-linenumber="9">
201
+
202
+
203
+ <code class="ruby"> # Class to handle connections to remote web services.</code>
204
+ </li>
205
+
206
+ <li class="never" data-hits="" data-linenumber="10">
207
+
208
+
209
+ <code class="ruby"> # This class is used by ActiveResource::Base to interface with REST</code>
210
+ </li>
211
+
212
+ <li class="never" data-hits="" data-linenumber="11">
213
+
214
+
215
+ <code class="ruby"> # services.</code>
216
+ </li>
217
+
218
+ <li class="covered" data-hits="1" data-linenumber="12">
219
+ <span class="hits">1</span>
220
+
221
+ <code class="ruby"> class Connection</code>
222
+ </li>
223
+
224
+ <li class="never" data-hits="" data-linenumber="13">
225
+
226
+
227
+ <code class="ruby"></code>
228
+ </li>
229
+
230
+ <li class="covered" data-hits="1" data-linenumber="14">
231
+ <span class="hits">1</span>
232
+
233
+ <code class="ruby"> HTTP_FORMAT_HEADER_NAMES = { </code>
234
+ </li>
235
+
236
+ <li class="never" data-hits="" data-linenumber="15">
237
+
238
+
239
+ <code class="ruby"> :get =&gt; 'Accept',</code>
240
+ </li>
241
+
242
+ <li class="never" data-hits="" data-linenumber="16">
243
+
244
+
245
+ <code class="ruby"> :put =&gt; 'Content-Type',</code>
246
+ </li>
247
+
248
+ <li class="never" data-hits="" data-linenumber="17">
249
+
250
+
251
+ <code class="ruby"> :post =&gt; 'Content-Type',</code>
252
+ </li>
253
+
254
+ <li class="never" data-hits="" data-linenumber="18">
255
+
256
+
257
+ <code class="ruby"> :delete =&gt; 'Accept',</code>
258
+ </li>
259
+
260
+ <li class="never" data-hits="" data-linenumber="19">
261
+
262
+
263
+ <code class="ruby"> :head =&gt; 'Accept'</code>
264
+ </li>
265
+
266
+ <li class="never" data-hits="" data-linenumber="20">
267
+
268
+
269
+ <code class="ruby"> }</code>
270
+ </li>
271
+
272
+ <li class="never" data-hits="" data-linenumber="21">
273
+
274
+
275
+ <code class="ruby"></code>
276
+ </li>
277
+
278
+ <li class="covered" data-hits="1" data-linenumber="22">
279
+ <span class="hits">1</span>
280
+
281
+ <code class="ruby"> attr_reader :site, :user, :password, :auth_type, :timeout, :proxy, :ssl_options</code>
282
+ </li>
283
+
284
+ <li class="covered" data-hits="1" data-linenumber="23">
285
+ <span class="hits">1</span>
286
+
287
+ <code class="ruby"> attr_accessor :format, :headers</code>
288
+ </li>
289
+
290
+ <li class="never" data-hits="" data-linenumber="24">
291
+
292
+
293
+ <code class="ruby"></code>
294
+ </li>
295
+
296
+ <li class="covered" data-hits="1" data-linenumber="25">
297
+ <span class="hits">1</span>
298
+
299
+ <code class="ruby"> class &lt;&lt; self</code>
300
+ </li>
301
+
302
+ <li class="covered" data-hits="1" data-linenumber="26">
303
+ <span class="hits">1</span>
304
+
305
+ <code class="ruby"> def requests</code>
306
+ </li>
307
+
308
+ <li class="missed" data-hits="0" data-linenumber="27">
309
+
310
+
311
+ <code class="ruby"> @@requests ||= []</code>
312
+ </li>
313
+
314
+ <li class="never" data-hits="" data-linenumber="28">
315
+
316
+
317
+ <code class="ruby"> end</code>
318
+ </li>
319
+
320
+ <li class="never" data-hits="" data-linenumber="29">
321
+
322
+
323
+ <code class="ruby"> end</code>
324
+ </li>
325
+
326
+ <li class="never" data-hits="" data-linenumber="30">
327
+
328
+
329
+ <code class="ruby"></code>
330
+ </li>
331
+
332
+ <li class="never" data-hits="" data-linenumber="31">
333
+
334
+
335
+ <code class="ruby"> # The +site+ parameter is required and will set the +site+</code>
336
+ </li>
337
+
338
+ <li class="never" data-hits="" data-linenumber="32">
339
+
340
+
341
+ <code class="ruby"> # attribute to the URI for the remote resource service.</code>
342
+ </li>
343
+
344
+ <li class="covered" data-hits="1" data-linenumber="33">
345
+ <span class="hits">1</span>
346
+
347
+ <code class="ruby"> def initialize(site, format = ApiResource::Formats::JsonFormat, headers)</code>
348
+ </li>
349
+
350
+ <li class="covered" data-hits="365" data-linenumber="34">
351
+ <span class="hits">365</span>
352
+
353
+ <code class="ruby"> raise ArgumentError, 'Missing site URI' unless site</code>
354
+ </li>
355
+
356
+ <li class="covered" data-hits="365" data-linenumber="35">
357
+ <span class="hits">365</span>
358
+
359
+ <code class="ruby"> @user = @password = nil</code>
360
+ </li>
361
+
362
+ <li class="covered" data-hits="365" data-linenumber="36">
363
+ <span class="hits">365</span>
364
+
365
+ <code class="ruby"> @uri_parser = URI.const_defined?(:Parser) ? URI::Parser.new : URI</code>
366
+ </li>
367
+
368
+ <li class="covered" data-hits="365" data-linenumber="37">
369
+ <span class="hits">365</span>
370
+
371
+ <code class="ruby"> self.site = site</code>
372
+ </li>
373
+
374
+ <li class="covered" data-hits="365" data-linenumber="38">
375
+ <span class="hits">365</span>
376
+
377
+ <code class="ruby"> self.format = format</code>
378
+ </li>
379
+
380
+ <li class="covered" data-hits="365" data-linenumber="39">
381
+ <span class="hits">365</span>
382
+
383
+ <code class="ruby"> self.headers = headers</code>
384
+ </li>
385
+
386
+ <li class="never" data-hits="" data-linenumber="40">
387
+
388
+
389
+ <code class="ruby"> end</code>
390
+ </li>
391
+
392
+ <li class="never" data-hits="" data-linenumber="41">
393
+
394
+
395
+ <code class="ruby"></code>
396
+ </li>
397
+
398
+ <li class="never" data-hits="" data-linenumber="42">
399
+
400
+
401
+ <code class="ruby"> # Set URI for remote service.</code>
402
+ </li>
403
+
404
+ <li class="covered" data-hits="1" data-linenumber="43">
405
+ <span class="hits">1</span>
406
+
407
+ <code class="ruby"> def site=(site)</code>
408
+ </li>
409
+
410
+ <li class="covered" data-hits="365" data-linenumber="44">
411
+ <span class="hits">365</span>
412
+
413
+ <code class="ruby"> @site = site.is_a?(URI) ? site : @uri_parser.parse(site)</code>
414
+ </li>
415
+
416
+ <li class="covered" data-hits="365" data-linenumber="45">
417
+ <span class="hits">365</span>
418
+
419
+ <code class="ruby"> @user = @uri_parser.unescape(@site.user) if @site.user</code>
420
+ </li>
421
+
422
+ <li class="covered" data-hits="365" data-linenumber="46">
423
+ <span class="hits">365</span>
424
+
425
+ <code class="ruby"> @password = @uri_parser.unescape(@site.password) if @site.password</code>
426
+ </li>
427
+
428
+ <li class="never" data-hits="" data-linenumber="47">
429
+
430
+
431
+ <code class="ruby"> end</code>
432
+ </li>
433
+
434
+ <li class="never" data-hits="" data-linenumber="48">
435
+
436
+
437
+ <code class="ruby"></code>
438
+ </li>
439
+
440
+ <li class="never" data-hits="" data-linenumber="49">
441
+
442
+
443
+ <code class="ruby"> # Sets the number of seconds after which HTTP requests to the remote service should time out.</code>
444
+ </li>
445
+
446
+ <li class="covered" data-hits="1" data-linenumber="50">
447
+ <span class="hits">1</span>
448
+
449
+ <code class="ruby"> def timeout=(timeout)</code>
450
+ </li>
451
+
452
+ <li class="covered" data-hits="493" data-linenumber="51">
453
+ <span class="hits">493</span>
454
+
455
+ <code class="ruby"> @timeout = timeout</code>
456
+ </li>
457
+
458
+ <li class="never" data-hits="" data-linenumber="52">
459
+
460
+
461
+ <code class="ruby"> end</code>
462
+ </li>
463
+
464
+ <li class="never" data-hits="" data-linenumber="53">
465
+
466
+
467
+ <code class="ruby"> </code>
468
+ </li>
469
+
470
+ <li class="covered" data-hits="1" data-linenumber="54">
471
+ <span class="hits">1</span>
472
+
473
+ <code class="ruby"> def get(path, headers = self.headers)</code>
474
+ </li>
475
+
476
+ <li class="never" data-hits="" data-linenumber="55">
477
+
478
+
479
+ <code class="ruby"> # our site and headers for this request</code>
480
+ </li>
481
+
482
+ <li class="covered" data-hits="72" data-linenumber="56">
483
+ <span class="hits">72</span>
484
+
485
+ <code class="ruby"> site = self.site.merge(path)</code>
486
+ </li>
487
+
488
+ <li class="covered" data-hits="72" data-linenumber="57">
489
+ <span class="hits">72</span>
490
+
491
+ <code class="ruby"> headers = build_request_headers(headers, :get, site)</code>
492
+ </li>
493
+
494
+ <li class="never" data-hits="" data-linenumber="58">
495
+
496
+
497
+ <code class="ruby"></code>
498
+ </li>
499
+
500
+ <li class="covered" data-hits="72" data-linenumber="59">
501
+ <span class="hits">72</span>
502
+
503
+ <code class="ruby"> self.with_caching(path, headers) do</code>
504
+ </li>
505
+
506
+ <li class="covered" data-hits="70" data-linenumber="60">
507
+ <span class="hits">70</span>
508
+
509
+ <code class="ruby"> format.decode(request(:get, path, headers))</code>
510
+ </li>
511
+
512
+ <li class="never" data-hits="" data-linenumber="61">
513
+
514
+
515
+ <code class="ruby"> end</code>
516
+ </li>
517
+
518
+ <li class="never" data-hits="" data-linenumber="62">
519
+
520
+
521
+ <code class="ruby"> end</code>
522
+ </li>
523
+
524
+ <li class="never" data-hits="" data-linenumber="63">
525
+
526
+
527
+ <code class="ruby"> </code>
528
+ </li>
529
+
530
+ <li class="covered" data-hits="1" data-linenumber="64">
531
+ <span class="hits">1</span>
532
+
533
+ <code class="ruby"> def delete(path, headers = self.headers)</code>
534
+ </li>
535
+
536
+ <li class="covered" data-hits="4" data-linenumber="65">
537
+ <span class="hits">4</span>
538
+
539
+ <code class="ruby"> request(:delete, path, build_request_headers(headers, :delete, self.site.merge(path)))</code>
540
+ </li>
541
+
542
+ <li class="covered" data-hits="4" data-linenumber="66">
543
+ <span class="hits">4</span>
544
+
545
+ <code class="ruby"> return true</code>
546
+ </li>
547
+
548
+ <li class="never" data-hits="" data-linenumber="67">
549
+
550
+
551
+ <code class="ruby"> end</code>
552
+ </li>
553
+
554
+ <li class="never" data-hits="" data-linenumber="68">
555
+
556
+
557
+ <code class="ruby"> </code>
558
+ </li>
559
+
560
+ <li class="covered" data-hits="1" data-linenumber="69">
561
+ <span class="hits">1</span>
562
+
563
+ <code class="ruby"> def head(path, headers = self.headers)</code>
564
+ </li>
565
+
566
+ <li class="covered" data-hits="1" data-linenumber="70">
567
+ <span class="hits">1</span>
568
+
569
+ <code class="ruby"> request(:head, path, build_request_headers(headers, :head, self.site.merge(path)))</code>
570
+ </li>
571
+
572
+ <li class="never" data-hits="" data-linenumber="71">
573
+
574
+
575
+ <code class="ruby"> end</code>
576
+ </li>
577
+
578
+ <li class="never" data-hits="" data-linenumber="72">
579
+
580
+
581
+ <code class="ruby"> </code>
582
+ </li>
583
+
584
+ <li class="never" data-hits="" data-linenumber="73">
585
+
586
+
587
+ <code class="ruby"> </code>
588
+ </li>
589
+
590
+ <li class="covered" data-hits="1" data-linenumber="74">
591
+ <span class="hits">1</span>
592
+
593
+ <code class="ruby"> def put(path, body = {}, headers = self.headers)</code>
594
+ </li>
595
+
596
+ <li class="never" data-hits="" data-linenumber="75">
597
+
598
+
599
+ <code class="ruby"> # If there's a file to send then we can't use JSON or XML</code>
600
+ </li>
601
+
602
+ <li class="covered" data-hits="2" data-linenumber="76">
603
+ <span class="hits">2</span>
604
+
605
+ <code class="ruby"> if !body.is_a?(String) &amp;&amp; RestClient::Payload.has_file?(body)</code>
606
+ </li>
607
+
608
+ <li class="missed" data-hits="0" data-linenumber="77">
609
+
610
+
611
+ <code class="ruby"> format.decode(request(:put, path, body, build_request_headers(headers, :put, self.site.merge(path))))</code>
612
+ </li>
613
+
614
+ <li class="never" data-hits="" data-linenumber="78">
615
+
616
+
617
+ <code class="ruby"> else</code>
618
+ </li>
619
+
620
+ <li class="covered" data-hits="2" data-linenumber="79">
621
+ <span class="hits">2</span>
622
+
623
+ <code class="ruby"> format.decode(request(:put, path, body, build_request_headers(headers, :put, self.site.merge(path))))</code>
624
+ </li>
625
+
626
+ <li class="never" data-hits="" data-linenumber="80">
627
+
628
+
629
+ <code class="ruby"> end</code>
630
+ </li>
631
+
632
+ <li class="never" data-hits="" data-linenumber="81">
633
+
634
+
635
+ <code class="ruby"> end</code>
636
+ </li>
637
+
638
+ <li class="never" data-hits="" data-linenumber="82">
639
+
640
+
641
+ <code class="ruby"> </code>
642
+ </li>
643
+
644
+ <li class="covered" data-hits="1" data-linenumber="83">
645
+ <span class="hits">1</span>
646
+
647
+ <code class="ruby"> def post(path, body = {}, headers = self.headers)</code>
648
+ </li>
649
+
650
+ <li class="covered" data-hits="5" data-linenumber="84">
651
+ <span class="hits">5</span>
652
+
653
+ <code class="ruby"> if !body.is_a?(String) &amp;&amp; RestClient::Payload.has_file?(body)</code>
654
+ </li>
655
+
656
+ <li class="missed" data-hits="0" data-linenumber="85">
657
+
658
+
659
+ <code class="ruby"> format.decode(request(:post, path, body, build_request_headers(headers, :post, self.site.merge(path))))</code>
660
+ </li>
661
+
662
+ <li class="never" data-hits="" data-linenumber="86">
663
+
664
+
665
+ <code class="ruby"> else</code>
666
+ </li>
667
+
668
+ <li class="covered" data-hits="5" data-linenumber="87">
669
+ <span class="hits">5</span>
670
+
671
+ <code class="ruby"> format.decode(request(:post, path, body, build_request_headers(headers, :post, self.site.merge(path))))</code>
672
+ </li>
673
+
674
+ <li class="never" data-hits="" data-linenumber="88">
675
+
676
+
677
+ <code class="ruby"> end</code>
678
+ </li>
679
+
680
+ <li class="never" data-hits="" data-linenumber="89">
681
+
682
+
683
+ <code class="ruby"> end</code>
684
+ </li>
685
+
686
+ <li class="never" data-hits="" data-linenumber="90">
687
+
688
+
689
+ <code class="ruby"></code>
690
+ </li>
691
+
692
+ <li class="covered" data-hits="1" data-linenumber="91">
693
+ <span class="hits">1</span>
694
+
695
+ <code class="ruby"> protected</code>
696
+ </li>
697
+
698
+ <li class="never" data-hits="" data-linenumber="92">
699
+
700
+
701
+ <code class="ruby"></code>
702
+ </li>
703
+
704
+ <li class="covered" data-hits="1" data-linenumber="93">
705
+ <span class="hits">1</span>
706
+
707
+ <code class="ruby"> def cache_key(path, headers)</code>
708
+ </li>
709
+
710
+ <li class="covered" data-hits="3" data-linenumber="94">
711
+ <span class="hits">3</span>
712
+
713
+ <code class="ruby"> key = Digest::MD5.hexdigest([path, headers].to_s)</code>
714
+ </li>
715
+
716
+ <li class="covered" data-hits="3" data-linenumber="95">
717
+ <span class="hits">3</span>
718
+
719
+ <code class="ruby"> return &quot;a-#{key}-#{ApiResource::Base.ttl}&quot;</code>
720
+ </li>
721
+
722
+ <li class="never" data-hits="" data-linenumber="96">
723
+
724
+
725
+ <code class="ruby"> end</code>
726
+ </li>
727
+
728
+ <li class="never" data-hits="" data-linenumber="97">
729
+
730
+
731
+ <code class="ruby"></code>
732
+ </li>
733
+
734
+ <li class="covered" data-hits="1" data-linenumber="98">
735
+ <span class="hits">1</span>
736
+
737
+ <code class="ruby"> def with_caching(path, data = {}, &amp;block)</code>
738
+ </li>
739
+
740
+ <li class="covered" data-hits="72" data-linenumber="99">
741
+ <span class="hits">72</span>
742
+
743
+ <code class="ruby"> if ApiResource::Base.ttl.to_f &gt; 0.0</code>
744
+ </li>
745
+
746
+ <li class="covered" data-hits="3" data-linenumber="100">
747
+ <span class="hits">3</span>
748
+
749
+ <code class="ruby"> key = self.cache_key(path, data)</code>
750
+ </li>
751
+
752
+ <li class="covered" data-hits="3" data-linenumber="101">
753
+ <span class="hits">3</span>
754
+
755
+ <code class="ruby"> ApiResource.cache.fetch(key, :expires_in =&gt; ApiResource::Base.ttl) do</code>
756
+ </li>
757
+
758
+ <li class="covered" data-hits="1" data-linenumber="102">
759
+ <span class="hits">1</span>
760
+
761
+ <code class="ruby"> yield</code>
762
+ </li>
763
+
764
+ <li class="never" data-hits="" data-linenumber="103">
765
+
766
+
767
+ <code class="ruby"> end</code>
768
+ </li>
769
+
770
+ <li class="never" data-hits="" data-linenumber="104">
771
+
772
+
773
+ <code class="ruby"> else</code>
774
+ </li>
775
+
776
+ <li class="covered" data-hits="69" data-linenumber="105">
777
+ <span class="hits">69</span>
778
+
779
+ <code class="ruby"> yield</code>
780
+ </li>
781
+
782
+ <li class="never" data-hits="" data-linenumber="106">
783
+
784
+
785
+ <code class="ruby"> end</code>
786
+ </li>
787
+
788
+ <li class="never" data-hits="" data-linenumber="107">
789
+
790
+
791
+ <code class="ruby"> end</code>
792
+ </li>
793
+
794
+ <li class="never" data-hits="" data-linenumber="108">
795
+
796
+
797
+ <code class="ruby"></code>
798
+ </li>
799
+
800
+ <li class="covered" data-hits="1" data-linenumber="109">
801
+ <span class="hits">1</span>
802
+
803
+ <code class="ruby"> private</code>
804
+ </li>
805
+
806
+ <li class="never" data-hits="" data-linenumber="110">
807
+
808
+
809
+ <code class="ruby"> # Makes a request to the remote service.</code>
810
+ </li>
811
+
812
+ <li class="covered" data-hits="1" data-linenumber="111">
813
+ <span class="hits">1</span>
814
+
815
+ <code class="ruby"> def request(method, path, *arguments)</code>
816
+ </li>
817
+
818
+ <li class="covered" data-hits="82" data-linenumber="112">
819
+ <span class="hits">82</span>
820
+
821
+ <code class="ruby"> handle_response(path) do</code>
822
+ </li>
823
+
824
+ <li class="covered" data-hits="82" data-linenumber="113">
825
+ <span class="hits">82</span>
826
+
827
+ <code class="ruby"> ActiveSupport::Notifications.instrument(&quot;request.api_resource&quot;) do |payload|</code>
828
+ </li>
829
+
830
+ <li class="never" data-hits="" data-linenumber="114">
831
+
832
+
833
+ <code class="ruby"> </code>
834
+ </li>
835
+
836
+ <li class="never" data-hits="" data-linenumber="115">
837
+
838
+
839
+ <code class="ruby"> # debug logging</code>
840
+ </li>
841
+
842
+ <li class="covered" data-hits="82" data-linenumber="116">
843
+ <span class="hits">82</span>
844
+
845
+ <code class="ruby"> ApiResource.logger.debug(&quot;#{method.to_s.upcase} #{path}&quot;)</code>
846
+ </li>
847
+
848
+ <li class="never" data-hits="" data-linenumber="117">
849
+
850
+
851
+ <code class="ruby"> </code>
852
+ </li>
853
+
854
+ <li class="covered" data-hits="82" data-linenumber="118">
855
+ <span class="hits">82</span>
856
+
857
+ <code class="ruby"> payload[:method] = method</code>
858
+ </li>
859
+
860
+ <li class="covered" data-hits="82" data-linenumber="119">
861
+ <span class="hits">82</span>
862
+
863
+ <code class="ruby"> payload[:request_uri] = &quot;#{site.scheme}://#{site.host}:#{site.port}#{path}&quot;</code>
864
+ </li>
865
+
866
+ <li class="covered" data-hits="82" data-linenumber="120">
867
+ <span class="hits">82</span>
868
+
869
+ <code class="ruby"> payload[:result] = http(path).send(method, *arguments)</code>
870
+ </li>
871
+
872
+ <li class="never" data-hits="" data-linenumber="121">
873
+
874
+
875
+ <code class="ruby"> end</code>
876
+ </li>
877
+
878
+ <li class="never" data-hits="" data-linenumber="122">
879
+
880
+
881
+ <code class="ruby"> end</code>
882
+ </li>
883
+
884
+ <li class="never" data-hits="" data-linenumber="123">
885
+
886
+
887
+ <code class="ruby"> end</code>
888
+ </li>
889
+
890
+ <li class="never" data-hits="" data-linenumber="124">
891
+
892
+
893
+ <code class="ruby"></code>
894
+ </li>
895
+
896
+ <li class="never" data-hits="" data-linenumber="125">
897
+
898
+
899
+ <code class="ruby"> # Handles response and error codes from the remote service.</code>
900
+ </li>
901
+
902
+ <li class="covered" data-hits="1" data-linenumber="126">
903
+ <span class="hits">1</span>
904
+
905
+ <code class="ruby"> def handle_response(path, &amp;block)</code>
906
+ </li>
907
+
908
+ <li class="covered" data-hits="82" data-linenumber="127">
909
+ <span class="hits">82</span>
910
+
911
+ <code class="ruby"> begin</code>
912
+ </li>
913
+
914
+ <li class="covered" data-hits="82" data-linenumber="128">
915
+ <span class="hits">82</span>
916
+
917
+ <code class="ruby"> result = yield</code>
918
+ </li>
919
+
920
+ <li class="never" data-hits="" data-linenumber="129">
921
+
922
+
923
+ <code class="ruby"> rescue RestClient::RequestTimeout</code>
924
+ </li>
925
+
926
+ <li class="covered" data-hits="1" data-linenumber="130">
927
+ <span class="hits">1</span>
928
+
929
+ <code class="ruby"> raise ApiResource::RequestTimeout.new(&quot;Request Time Out - Accessing #{path}}&quot;)</code>
930
+ </li>
931
+
932
+ <li class="never" data-hits="" data-linenumber="131">
933
+
934
+
935
+ <code class="ruby"> rescue Exception =&gt; error</code>
936
+ </li>
937
+
938
+ <li class="covered" data-hits="3" data-linenumber="132">
939
+ <span class="hits">3</span>
940
+
941
+ <code class="ruby"> if error.respond_to?(:http_code)</code>
942
+ </li>
943
+
944
+ <li class="covered" data-hits="3" data-linenumber="133">
945
+ <span class="hits">3</span>
946
+
947
+ <code class="ruby"> ApiResource.logger.error(&quot;#{self} accessing #{path}&quot;)</code>
948
+ </li>
949
+
950
+ <li class="covered" data-hits="3" data-linenumber="134">
951
+ <span class="hits">3</span>
952
+
953
+ <code class="ruby"> ApiResource.logger.error(error.message)</code>
954
+ </li>
955
+
956
+ <li class="covered" data-hits="3" data-linenumber="135">
957
+ <span class="hits">3</span>
958
+
959
+ <code class="ruby"> result = error.response</code>
960
+ </li>
961
+
962
+ <li class="never" data-hits="" data-linenumber="136">
963
+
964
+
965
+ <code class="ruby"> else</code>
966
+ </li>
967
+
968
+ <li class="missed" data-hits="0" data-linenumber="137">
969
+
970
+
971
+ <code class="ruby"> raise ApiResource::ConnectionError.new(nil, :message =&gt; &quot;Unknown error #{error}&quot;)</code>
972
+ </li>
973
+
974
+ <li class="never" data-hits="" data-linenumber="138">
975
+
976
+
977
+ <code class="ruby"> end</code>
978
+ </li>
979
+
980
+ <li class="never" data-hits="" data-linenumber="139">
981
+
982
+
983
+ <code class="ruby"> end</code>
984
+ </li>
985
+
986
+ <li class="covered" data-hits="81" data-linenumber="140">
987
+ <span class="hits">81</span>
988
+
989
+ <code class="ruby"> return propogate_response_or_error(result, result.code)</code>
990
+ </li>
991
+
992
+ <li class="never" data-hits="" data-linenumber="141">
993
+
994
+
995
+ <code class="ruby"> end</code>
996
+ </li>
997
+
998
+ <li class="never" data-hits="" data-linenumber="142">
999
+
1000
+
1001
+ <code class="ruby"> </code>
1002
+ </li>
1003
+
1004
+ <li class="covered" data-hits="1" data-linenumber="143">
1005
+ <span class="hits">1</span>
1006
+
1007
+ <code class="ruby"> def propogate_response_or_error(response, code)</code>
1008
+ </li>
1009
+
1010
+ <li class="covered" data-hits="81" data-linenumber="144">
1011
+ <span class="hits">81</span>
1012
+
1013
+ <code class="ruby"> case code.to_i</code>
1014
+ </li>
1015
+
1016
+ <li class="never" data-hits="" data-linenumber="145">
1017
+
1018
+
1019
+ <code class="ruby"> when 301,302</code>
1020
+ </li>
1021
+
1022
+ <li class="missed" data-hits="0" data-linenumber="146">
1023
+
1024
+
1025
+ <code class="ruby"> raise ApiResource::Redirection.new(response)</code>
1026
+ </li>
1027
+
1028
+ <li class="never" data-hits="" data-linenumber="147">
1029
+
1030
+
1031
+ <code class="ruby"> when 200..400</code>
1032
+ </li>
1033
+
1034
+ <li class="covered" data-hits="76" data-linenumber="148">
1035
+ <span class="hits">76</span>
1036
+
1037
+ <code class="ruby"> response.body</code>
1038
+ </li>
1039
+
1040
+ <li class="never" data-hits="" data-linenumber="149">
1041
+
1042
+
1043
+ <code class="ruby"> when 400</code>
1044
+ </li>
1045
+
1046
+ <li class="missed" data-hits="0" data-linenumber="150">
1047
+
1048
+
1049
+ <code class="ruby"> raise ApiResource::BadRequest.new(response)</code>
1050
+ </li>
1051
+
1052
+ <li class="never" data-hits="" data-linenumber="151">
1053
+
1054
+
1055
+ <code class="ruby"> when 401</code>
1056
+ </li>
1057
+
1058
+ <li class="missed" data-hits="0" data-linenumber="152">
1059
+
1060
+
1061
+ <code class="ruby"> raise ApiResource::UnauthorizedAccess.new(response)</code>
1062
+ </li>
1063
+
1064
+ <li class="never" data-hits="" data-linenumber="153">
1065
+
1066
+
1067
+ <code class="ruby"> when 403</code>
1068
+ </li>
1069
+
1070
+ <li class="missed" data-hits="0" data-linenumber="154">
1071
+
1072
+
1073
+ <code class="ruby"> raise ApiResource::ForbiddenAccess.new(response)</code>
1074
+ </li>
1075
+
1076
+ <li class="never" data-hits="" data-linenumber="155">
1077
+
1078
+
1079
+ <code class="ruby"> when 404</code>
1080
+ </li>
1081
+
1082
+ <li class="covered" data-hits="3" data-linenumber="156">
1083
+ <span class="hits">3</span>
1084
+
1085
+ <code class="ruby"> raise ApiResource::ResourceNotFound.new(response)</code>
1086
+ </li>
1087
+
1088
+ <li class="never" data-hits="" data-linenumber="157">
1089
+
1090
+
1091
+ <code class="ruby"> when 405</code>
1092
+ </li>
1093
+
1094
+ <li class="missed" data-hits="0" data-linenumber="158">
1095
+
1096
+
1097
+ <code class="ruby"> raise ApiResource::MethodNotAllowed.new(response)</code>
1098
+ </li>
1099
+
1100
+ <li class="never" data-hits="" data-linenumber="159">
1101
+
1102
+
1103
+ <code class="ruby"> when 406</code>
1104
+ </li>
1105
+
1106
+ <li class="missed" data-hits="0" data-linenumber="160">
1107
+
1108
+
1109
+ <code class="ruby"> raise ApiResource::NotAccepatable.new(response)</code>
1110
+ </li>
1111
+
1112
+ <li class="never" data-hits="" data-linenumber="161">
1113
+
1114
+
1115
+ <code class="ruby"> when 409</code>
1116
+ </li>
1117
+
1118
+ <li class="missed" data-hits="0" data-linenumber="162">
1119
+
1120
+
1121
+ <code class="ruby"> raise ApiResource::ResourceNotFound.new(response)</code>
1122
+ </li>
1123
+
1124
+ <li class="never" data-hits="" data-linenumber="163">
1125
+
1126
+
1127
+ <code class="ruby"> when 410</code>
1128
+ </li>
1129
+
1130
+ <li class="missed" data-hits="0" data-linenumber="164">
1131
+
1132
+
1133
+ <code class="ruby"> raise ApiResource::ResourceGone.new(response)</code>
1134
+ </li>
1135
+
1136
+ <li class="never" data-hits="" data-linenumber="165">
1137
+
1138
+
1139
+ <code class="ruby"> when 422</code>
1140
+ </li>
1141
+
1142
+ <li class="covered" data-hits="2" data-linenumber="166">
1143
+ <span class="hits">2</span>
1144
+
1145
+ <code class="ruby"> raise ApiResource::UnprocessableEntity.new(response)</code>
1146
+ </li>
1147
+
1148
+ <li class="never" data-hits="" data-linenumber="167">
1149
+
1150
+
1151
+ <code class="ruby"> when 401..499</code>
1152
+ </li>
1153
+
1154
+ <li class="missed" data-hits="0" data-linenumber="168">
1155
+
1156
+
1157
+ <code class="ruby"> raise ApiResource::ClientError.new(response)</code>
1158
+ </li>
1159
+
1160
+ <li class="never" data-hits="" data-linenumber="169">
1161
+
1162
+
1163
+ <code class="ruby"> when 500..600</code>
1164
+ </li>
1165
+
1166
+ <li class="missed" data-hits="0" data-linenumber="170">
1167
+
1168
+
1169
+ <code class="ruby"> raise ApiResource::ServerError.new(response)</code>
1170
+ </li>
1171
+
1172
+ <li class="never" data-hits="" data-linenumber="171">
1173
+
1174
+
1175
+ <code class="ruby"> else</code>
1176
+ </li>
1177
+
1178
+ <li class="missed" data-hits="0" data-linenumber="172">
1179
+
1180
+
1181
+ <code class="ruby"> raise ApiResource::ConnectionError.new(response, :message =&gt; &quot;Unknown response code: #{code}&quot;)</code>
1182
+ </li>
1183
+
1184
+ <li class="never" data-hits="" data-linenumber="173">
1185
+
1186
+
1187
+ <code class="ruby"> end</code>
1188
+ </li>
1189
+
1190
+ <li class="never" data-hits="" data-linenumber="174">
1191
+
1192
+
1193
+ <code class="ruby"> end</code>
1194
+ </li>
1195
+
1196
+ <li class="never" data-hits="" data-linenumber="175">
1197
+
1198
+
1199
+ <code class="ruby"> </code>
1200
+ </li>
1201
+
1202
+ <li class="never" data-hits="" data-linenumber="176">
1203
+
1204
+
1205
+ <code class="ruby"> # Creates new Net::HTTP instance for communication with the</code>
1206
+ </li>
1207
+
1208
+ <li class="never" data-hits="" data-linenumber="177">
1209
+
1210
+
1211
+ <code class="ruby"> # remote service and resources.</code>
1212
+ </li>
1213
+
1214
+ <li class="covered" data-hits="1" data-linenumber="178">
1215
+ <span class="hits">1</span>
1216
+
1217
+ <code class="ruby"> def http(path)</code>
1218
+ </li>
1219
+
1220
+ <li class="covered" data-hits="4" data-linenumber="179">
1221
+ <span class="hits">4</span>
1222
+
1223
+ <code class="ruby"> unless path =~ /\./</code>
1224
+ </li>
1225
+
1226
+ <li class="covered" data-hits="4" data-linenumber="180">
1227
+ <span class="hits">4</span>
1228
+
1229
+ <code class="ruby"> path += &quot;.#{self.format.extension}&quot;</code>
1230
+ </li>
1231
+
1232
+ <li class="never" data-hits="" data-linenumber="181">
1233
+
1234
+
1235
+ <code class="ruby"> end</code>
1236
+ </li>
1237
+
1238
+ <li class="covered" data-hits="4" data-linenumber="182">
1239
+ <span class="hits">4</span>
1240
+
1241
+ <code class="ruby"> RestClient::Resource.new(&quot;#{site.scheme}://#{site.host}:#{site.port}#{path}&quot;, {:timeout =&gt; ApiResource::Base.timeout, :open_timeout =&gt; ApiResource::Base.open_timeout})</code>
1242
+ </li>
1243
+
1244
+ <li class="never" data-hits="" data-linenumber="183">
1245
+
1246
+
1247
+ <code class="ruby"> end</code>
1248
+ </li>
1249
+
1250
+ <li class="never" data-hits="" data-linenumber="184">
1251
+
1252
+
1253
+ <code class="ruby"> </code>
1254
+ </li>
1255
+
1256
+ <li class="covered" data-hits="1" data-linenumber="185">
1257
+ <span class="hits">1</span>
1258
+
1259
+ <code class="ruby"> def build_request_headers(headers, verb, uri)</code>
1260
+ </li>
1261
+
1262
+ <li class="covered" data-hits="84" data-linenumber="186">
1263
+ <span class="hits">84</span>
1264
+
1265
+ <code class="ruby"> http_format_header(verb).update(headers)</code>
1266
+ </li>
1267
+
1268
+ <li class="never" data-hits="" data-linenumber="187">
1269
+
1270
+
1271
+ <code class="ruby"> end</code>
1272
+ </li>
1273
+
1274
+ <li class="never" data-hits="" data-linenumber="188">
1275
+
1276
+
1277
+ <code class="ruby"> </code>
1278
+ </li>
1279
+
1280
+ <li class="covered" data-hits="1" data-linenumber="189">
1281
+ <span class="hits">1</span>
1282
+
1283
+ <code class="ruby"> def http_format_header(verb)</code>
1284
+ </li>
1285
+
1286
+ <li class="covered" data-hits="84" data-linenumber="190">
1287
+ <span class="hits">84</span>
1288
+
1289
+ <code class="ruby"> {}.tap do |ret|</code>
1290
+ </li>
1291
+
1292
+ <li class="covered" data-hits="84" data-linenumber="191">
1293
+ <span class="hits">84</span>
1294
+
1295
+ <code class="ruby"> ret[HTTP_FORMAT_HEADER_NAMES[verb]] = format.mime_type</code>
1296
+ </li>
1297
+
1298
+ <li class="never" data-hits="" data-linenumber="192">
1299
+
1300
+
1301
+ <code class="ruby"> end</code>
1302
+ </li>
1303
+
1304
+ <li class="never" data-hits="" data-linenumber="193">
1305
+
1306
+
1307
+ <code class="ruby"> end</code>
1308
+ </li>
1309
+
1310
+ <li class="never" data-hits="" data-linenumber="194">
1311
+
1312
+
1313
+ <code class="ruby"> end</code>
1314
+ </li>
1315
+
1316
+ <li class="never" data-hits="" data-linenumber="195">
1317
+
1318
+
1319
+ <code class="ruby">end</code>
1320
+ </li>
1321
+
1322
+ </ol>
1323
+ </pre>
1324
+ </div>
1325
+
1326
+ <div class="source_table" id="ec1a1cac18d6c808c0f034b4f3cea55cb1dcf314">
1327
+ <div class="header">
1328
+ <h3>lib/api_resource/decorators.rb</h3>
1329
+ <h4><span class="green">100.0 %</span> covered</h4>
1330
+ <div>
1331
+ <b>4</b> relevant lines.
1332
+ <span class="green"><b>4</b> lines covered</span> and
1333
+ <span class="red"><b>0</b> lines missed.</span>
1334
+ </div>
1335
+ </div>
1336
+
1337
+ <pre>
1338
+ <ol>
1339
+
1340
+ <li class="covered" data-hits="1" data-linenumber="1">
1341
+ <span class="hits">1</span>
1342
+
1343
+ <code class="ruby">module ApiResource</code>
1344
+ </li>
1345
+
1346
+ <li class="covered" data-hits="1" data-linenumber="2">
1347
+ <span class="hits">1</span>
1348
+
1349
+ <code class="ruby"> module Decorators</code>
1350
+ </li>
1351
+
1352
+ <li class="covered" data-hits="1" data-linenumber="3">
1353
+ <span class="hits">1</span>
1354
+
1355
+ <code class="ruby"> extend ActiveSupport::Autoload</code>
1356
+ </li>
1357
+
1358
+ <li class="covered" data-hits="1" data-linenumber="4">
1359
+ <span class="hits">1</span>
1360
+
1361
+ <code class="ruby"> autoload :CachingDecorator</code>
1362
+ </li>
1363
+
1364
+ <li class="never" data-hits="" data-linenumber="5">
1365
+
1366
+
1367
+ <code class="ruby"> end</code>
1368
+ </li>
1369
+
1370
+ <li class="never" data-hits="" data-linenumber="6">
1371
+
1372
+
1373
+ <code class="ruby">end</code>
1374
+ </li>
1375
+
1376
+ </ol>
1377
+ </pre>
1378
+ </div>
1379
+
1380
+ <div class="source_table" id="be561bc262ecc80cc1a0243361455048314d923e">
1381
+ <div class="header">
1382
+ <h3>lib/api_resource/decorators/caching_decorator.rb</h3>
1383
+ <h4><span class="green">100.0 %</span> covered</h4>
1384
+ <div>
1385
+ <b>11</b> relevant lines.
1386
+ <span class="green"><b>11</b> lines covered</span> and
1387
+ <span class="red"><b>0</b> lines missed.</span>
1388
+ </div>
1389
+ </div>
1390
+
1391
+ <pre>
1392
+ <ol>
1393
+
1394
+ <li class="covered" data-hits="1" data-linenumber="1">
1395
+ <span class="hits">1</span>
1396
+
1397
+ <code class="ruby">module ApiResource</code>
1398
+ </li>
1399
+
1400
+ <li class="covered" data-hits="1" data-linenumber="2">
1401
+ <span class="hits">1</span>
1402
+
1403
+ <code class="ruby"> module Decorators</code>
1404
+ </li>
1405
+
1406
+ <li class="covered" data-hits="1" data-linenumber="3">
1407
+ <span class="hits">1</span>
1408
+
1409
+ <code class="ruby"> class CachingDecorator</code>
1410
+ </li>
1411
+
1412
+ <li class="covered" data-hits="1" data-linenumber="4">
1413
+ <span class="hits">1</span>
1414
+
1415
+ <code class="ruby"> attr_reader :owner</code>
1416
+ </li>
1417
+
1418
+ <li class="covered" data-hits="1" data-linenumber="5">
1419
+ <span class="hits">1</span>
1420
+
1421
+ <code class="ruby"> attr_reader :ttl</code>
1422
+ </li>
1423
+
1424
+ <li class="never" data-hits="" data-linenumber="6">
1425
+
1426
+
1427
+ <code class="ruby"></code>
1428
+ </li>
1429
+
1430
+ <li class="covered" data-hits="1" data-linenumber="7">
1431
+ <span class="hits">1</span>
1432
+
1433
+ <code class="ruby"> def initialize(owner, ttl)</code>
1434
+ </li>
1435
+
1436
+ <li class="covered" data-hits="3" data-linenumber="8">
1437
+ <span class="hits">3</span>
1438
+
1439
+ <code class="ruby"> @owner = owner</code>
1440
+ </li>
1441
+
1442
+ <li class="covered" data-hits="3" data-linenumber="9">
1443
+ <span class="hits">3</span>
1444
+
1445
+ <code class="ruby"> @ttl = ttl</code>
1446
+ </li>
1447
+
1448
+ <li class="never" data-hits="" data-linenumber="10">
1449
+
1450
+
1451
+ <code class="ruby"> end</code>
1452
+ </li>
1453
+
1454
+ <li class="never" data-hits="" data-linenumber="11">
1455
+
1456
+
1457
+ <code class="ruby"></code>
1458
+ </li>
1459
+
1460
+ <li class="never" data-hits="" data-linenumber="12">
1461
+
1462
+
1463
+ <code class="ruby"></code>
1464
+ </li>
1465
+
1466
+ <li class="covered" data-hits="1" data-linenumber="13">
1467
+ <span class="hits">1</span>
1468
+
1469
+ <code class="ruby"> def method_missing(method_name, *args, &amp;block)</code>
1470
+ </li>
1471
+
1472
+ <li class="covered" data-hits="2" data-linenumber="14">
1473
+ <span class="hits">2</span>
1474
+
1475
+ <code class="ruby"> ApiResource.with_ttl(self.ttl) do</code>
1476
+ </li>
1477
+
1478
+ <li class="covered" data-hits="2" data-linenumber="15">
1479
+ <span class="hits">2</span>
1480
+
1481
+ <code class="ruby"> self.owner.send(method_name, *args, &amp;block)</code>
1482
+ </li>
1483
+
1484
+ <li class="never" data-hits="" data-linenumber="16">
1485
+
1486
+
1487
+ <code class="ruby"> end</code>
1488
+ </li>
1489
+
1490
+ <li class="never" data-hits="" data-linenumber="17">
1491
+
1492
+
1493
+ <code class="ruby"> end</code>
1494
+ </li>
1495
+
1496
+ <li class="never" data-hits="" data-linenumber="18">
1497
+
1498
+
1499
+ <code class="ruby"> end</code>
1500
+ </li>
1501
+
1502
+ <li class="never" data-hits="" data-linenumber="19">
1503
+
1504
+
1505
+ <code class="ruby"> end</code>
1506
+ </li>
1507
+
1508
+ <li class="never" data-hits="" data-linenumber="20">
1509
+
1510
+
1511
+ <code class="ruby">end</code>
1512
+ </li>
1513
+
1514
+ </ol>
1515
+ </pre>
1516
+ </div>
1517
+
1518
+ <div class="source_table" id="2f83e4896f2601097fcc684e900ce0e5b1d5a763">
1519
+ <div class="header">
1520
+ <h3>lib/api_resource/formats/xml_format.rb</h3>
1521
+ <h4><span class="red">66.67 %</span> covered</h4>
1522
+ <div>
1523
+ <b>18</b> relevant lines.
1524
+ <span class="green"><b>12</b> lines covered</span> and
1525
+ <span class="red"><b>6</b> lines missed.</span>
1526
+ </div>
1527
+ </div>
1528
+
1529
+ <pre>
1530
+ <ol>
1531
+
1532
+ <li class="covered" data-hits="1" data-linenumber="1">
1533
+ <span class="hits">1</span>
1534
+
1535
+ <code class="ruby">require 'active_support/core_ext/hash/conversions'</code>
1536
+ </li>
1537
+
1538
+ <li class="never" data-hits="" data-linenumber="2">
1539
+
1540
+
1541
+ <code class="ruby"></code>
1542
+ </li>
1543
+
1544
+ <li class="covered" data-hits="1" data-linenumber="3">
1545
+ <span class="hits">1</span>
1546
+
1547
+ <code class="ruby">module ApiResource</code>
1548
+ </li>
1549
+
1550
+ <li class="covered" data-hits="1" data-linenumber="4">
1551
+ <span class="hits">1</span>
1552
+
1553
+ <code class="ruby"> module Formats</code>
1554
+ </li>
1555
+
1556
+ <li class="covered" data-hits="1" data-linenumber="5">
1557
+ <span class="hits">1</span>
1558
+
1559
+ <code class="ruby"> module XmlFormat</code>
1560
+ </li>
1561
+
1562
+ <li class="covered" data-hits="1" data-linenumber="6">
1563
+ <span class="hits">1</span>
1564
+
1565
+ <code class="ruby"> extend self</code>
1566
+ </li>
1567
+
1568
+ <li class="never" data-hits="" data-linenumber="7">
1569
+
1570
+
1571
+ <code class="ruby"></code>
1572
+ </li>
1573
+
1574
+ <li class="covered" data-hits="1" data-linenumber="8">
1575
+ <span class="hits">1</span>
1576
+
1577
+ <code class="ruby"> def extension</code>
1578
+ </li>
1579
+
1580
+ <li class="covered" data-hits="1" data-linenumber="9">
1581
+ <span class="hits">1</span>
1582
+
1583
+ <code class="ruby"> &quot;xml&quot;</code>
1584
+ </li>
1585
+
1586
+ <li class="never" data-hits="" data-linenumber="10">
1587
+
1588
+
1589
+ <code class="ruby"> end</code>
1590
+ </li>
1591
+
1592
+ <li class="never" data-hits="" data-linenumber="11">
1593
+
1594
+
1595
+ <code class="ruby"></code>
1596
+ </li>
1597
+
1598
+ <li class="covered" data-hits="1" data-linenumber="12">
1599
+ <span class="hits">1</span>
1600
+
1601
+ <code class="ruby"> def mime_type</code>
1602
+ </li>
1603
+
1604
+ <li class="missed" data-hits="0" data-linenumber="13">
1605
+
1606
+
1607
+ <code class="ruby"> &quot;application/xml&quot;</code>
1608
+ </li>
1609
+
1610
+ <li class="never" data-hits="" data-linenumber="14">
1611
+
1612
+
1613
+ <code class="ruby"> end</code>
1614
+ </li>
1615
+
1616
+ <li class="never" data-hits="" data-linenumber="15">
1617
+
1618
+
1619
+ <code class="ruby"></code>
1620
+ </li>
1621
+
1622
+ <li class="covered" data-hits="1" data-linenumber="16">
1623
+ <span class="hits">1</span>
1624
+
1625
+ <code class="ruby"> def encode(hash, options={})</code>
1626
+ </li>
1627
+
1628
+ <li class="missed" data-hits="0" data-linenumber="17">
1629
+
1630
+
1631
+ <code class="ruby"> hash.to_xml(options)</code>
1632
+ </li>
1633
+
1634
+ <li class="never" data-hits="" data-linenumber="18">
1635
+
1636
+
1637
+ <code class="ruby"> end</code>
1638
+ </li>
1639
+
1640
+ <li class="never" data-hits="" data-linenumber="19">
1641
+
1642
+
1643
+ <code class="ruby"></code>
1644
+ </li>
1645
+
1646
+ <li class="covered" data-hits="1" data-linenumber="20">
1647
+ <span class="hits">1</span>
1648
+
1649
+ <code class="ruby"> def decode(xml)</code>
1650
+ </li>
1651
+
1652
+ <li class="missed" data-hits="0" data-linenumber="21">
1653
+
1654
+
1655
+ <code class="ruby"> from_xml_data(Hash.from_xml(xml))</code>
1656
+ </li>
1657
+
1658
+ <li class="never" data-hits="" data-linenumber="22">
1659
+
1660
+
1661
+ <code class="ruby"> end</code>
1662
+ </li>
1663
+
1664
+ <li class="never" data-hits="" data-linenumber="23">
1665
+
1666
+
1667
+ <code class="ruby"></code>
1668
+ </li>
1669
+
1670
+ <li class="covered" data-hits="1" data-linenumber="24">
1671
+ <span class="hits">1</span>
1672
+
1673
+ <code class="ruby"> private</code>
1674
+ </li>
1675
+
1676
+ <li class="never" data-hits="" data-linenumber="25">
1677
+
1678
+
1679
+ <code class="ruby"> # Manipulate from_xml Hash, because xml_simple is not exactly what we</code>
1680
+ </li>
1681
+
1682
+ <li class="never" data-hits="" data-linenumber="26">
1683
+
1684
+
1685
+ <code class="ruby"> # want for Active Resource.</code>
1686
+ </li>
1687
+
1688
+ <li class="covered" data-hits="1" data-linenumber="27">
1689
+ <span class="hits">1</span>
1690
+
1691
+ <code class="ruby"> def from_xml_data(data)</code>
1692
+ </li>
1693
+
1694
+ <li class="missed" data-hits="0" data-linenumber="28">
1695
+
1696
+
1697
+ <code class="ruby"> if data.is_a?(Hash) &amp;&amp; data.keys.size == 1</code>
1698
+ </li>
1699
+
1700
+ <li class="missed" data-hits="0" data-linenumber="29">
1701
+
1702
+
1703
+ <code class="ruby"> data.values.first</code>
1704
+ </li>
1705
+
1706
+ <li class="never" data-hits="" data-linenumber="30">
1707
+
1708
+
1709
+ <code class="ruby"> else</code>
1710
+ </li>
1711
+
1712
+ <li class="missed" data-hits="0" data-linenumber="31">
1713
+
1714
+
1715
+ <code class="ruby"> data</code>
1716
+ </li>
1717
+
1718
+ <li class="never" data-hits="" data-linenumber="32">
1719
+
1720
+
1721
+ <code class="ruby"> end</code>
1722
+ </li>
1723
+
1724
+ <li class="never" data-hits="" data-linenumber="33">
1725
+
1726
+
1727
+ <code class="ruby"> end</code>
1728
+ </li>
1729
+
1730
+ <li class="never" data-hits="" data-linenumber="34">
1731
+
1732
+
1733
+ <code class="ruby"> end</code>
1734
+ </li>
1735
+
1736
+ <li class="never" data-hits="" data-linenumber="35">
1737
+
1738
+
1739
+ <code class="ruby"> end</code>
1740
+ </li>
1741
+
1742
+ <li class="never" data-hits="" data-linenumber="36">
1743
+
1744
+
1745
+ <code class="ruby">end</code>
1746
+ </li>
1747
+
1748
+ </ol>
1749
+ </pre>
1750
+ </div>
1751
+
1752
+ <div class="source_table" id="60f5d5efaac28ddb9fb45e06622238c80a28fded">
1753
+ <div class="header">
1754
+ <h3>lib/api_resource/local.rb</h3>
1755
+ <h4><span class="green">100.0 %</span> covered</h4>
1756
+ <div>
1757
+ <b>6</b> relevant lines.
1758
+ <span class="green"><b>6</b> lines covered</span> and
1759
+ <span class="red"><b>0</b> lines missed.</span>
1760
+ </div>
1761
+ </div>
1762
+
1763
+ <pre>
1764
+ <ol>
1765
+
1766
+ <li class="covered" data-hits="1" data-linenumber="1">
1767
+ <span class="hits">1</span>
1768
+
1769
+ <code class="ruby">module ApiResource</code>
1770
+ </li>
1771
+
1772
+ <li class="covered" data-hits="1" data-linenumber="2">
1773
+ <span class="hits">1</span>
1774
+
1775
+ <code class="ruby"> class Local &lt; Base</code>
1776
+ </li>
1777
+
1778
+ <li class="never" data-hits="" data-linenumber="3">
1779
+
1780
+
1781
+ <code class="ruby"> # nothing to do here</code>
1782
+ </li>
1783
+
1784
+ <li class="covered" data-hits="1" data-linenumber="4">
1785
+ <span class="hits">1</span>
1786
+
1787
+ <code class="ruby"> def self.set_class_attributes_upon_load</code>
1788
+ </li>
1789
+
1790
+ <li class="covered" data-hits="1" data-linenumber="5">
1791
+ <span class="hits">1</span>
1792
+
1793
+ <code class="ruby"> true</code>
1794
+ </li>
1795
+
1796
+ <li class="never" data-hits="" data-linenumber="6">
1797
+
1798
+
1799
+ <code class="ruby"> end</code>
1800
+ </li>
1801
+
1802
+ <li class="never" data-hits="" data-linenumber="7">
1803
+
1804
+
1805
+ <code class="ruby"> # shouldn't do anything here either - </code>
1806
+ </li>
1807
+
1808
+ <li class="covered" data-hits="1" data-linenumber="8">
1809
+ <span class="hits">1</span>
1810
+
1811
+ <code class="ruby"> def self.reload_resource_definition</code>
1812
+ </li>
1813
+
1814
+ <li class="covered" data-hits="1" data-linenumber="9">
1815
+ <span class="hits">1</span>
1816
+
1817
+ <code class="ruby"> true</code>
1818
+ </li>
1819
+
1820
+ <li class="never" data-hits="" data-linenumber="10">
1821
+
1822
+
1823
+ <code class="ruby"> end</code>
1824
+ </li>
1825
+
1826
+ <li class="never" data-hits="" data-linenumber="11">
1827
+
1828
+
1829
+ <code class="ruby"> end</code>
1830
+ </li>
1831
+
1832
+ <li class="never" data-hits="" data-linenumber="12">
1833
+
1834
+
1835
+ <code class="ruby">end</code>
1836
+ </li>
1837
+
1838
+ </ol>
1839
+ </pre>
1840
+ </div>
1841
+
1842
+ <div class="source_table" id="e1424c288ff4d7b1028dfa6dec5e043302a0f243">
1843
+ <div class="header">
1844
+ <h3>lib/api_resource/mocks.rb</h3>
1845
+ <h4><span class="green">94.53 %</span> covered</h4>
1846
+ <div>
1847
+ <b>128</b> relevant lines.
1848
+ <span class="green"><b>121</b> lines covered</span> and
1849
+ <span class="red"><b>7</b> lines missed.</span>
1850
+ </div>
1851
+ </div>
1852
+
1853
+ <pre>
1854
+ <ol>
1855
+
1856
+ <li class="covered" data-hits="1" data-linenumber="1">
1857
+ <span class="hits">1</span>
1858
+
1859
+ <code class="ruby">require 'api_resource'</code>
1860
+ </li>
1861
+
1862
+ <li class="never" data-hits="" data-linenumber="2">
1863
+
1864
+
1865
+ <code class="ruby"></code>
1866
+ </li>
1867
+
1868
+ <li class="covered" data-hits="1" data-linenumber="3">
1869
+ <span class="hits">1</span>
1870
+
1871
+ <code class="ruby">module ApiResource</code>
1872
+ </li>
1873
+
1874
+ <li class="never" data-hits="" data-linenumber="4">
1875
+
1876
+
1877
+ <code class="ruby"> </code>
1878
+ </li>
1879
+
1880
+ <li class="covered" data-hits="1" data-linenumber="5">
1881
+ <span class="hits">1</span>
1882
+
1883
+ <code class="ruby"> module Mocks</code>
1884
+ </li>
1885
+
1886
+ <li class="never" data-hits="" data-linenumber="6">
1887
+
1888
+
1889
+ <code class="ruby"> </code>
1890
+ </li>
1891
+
1892
+ <li class="covered" data-hits="1" data-linenumber="7">
1893
+ <span class="hits">1</span>
1894
+
1895
+ <code class="ruby"> @@endpoints = {}</code>
1896
+ </li>
1897
+
1898
+ <li class="covered" data-hits="1" data-linenumber="8">
1899
+ <span class="hits">1</span>
1900
+
1901
+ <code class="ruby"> @@path = nil</code>
1902
+ </li>
1903
+
1904
+ <li class="never" data-hits="" data-linenumber="9">
1905
+
1906
+
1907
+ <code class="ruby"></code>
1908
+ </li>
1909
+
1910
+ <li class="never" data-hits="" data-linenumber="10">
1911
+
1912
+
1913
+ <code class="ruby"> # A simple interface class to change the new connection to look like the </code>
1914
+ </li>
1915
+
1916
+ <li class="never" data-hits="" data-linenumber="11">
1917
+
1918
+
1919
+ <code class="ruby"> # old activeresource connection</code>
1920
+ </li>
1921
+
1922
+ <li class="covered" data-hits="1" data-linenumber="12">
1923
+ <span class="hits">1</span>
1924
+
1925
+ <code class="ruby"> class Interface</code>
1926
+ </li>
1927
+
1928
+ <li class="never" data-hits="" data-linenumber="13">
1929
+
1930
+
1931
+ <code class="ruby"> </code>
1932
+ </li>
1933
+
1934
+ <li class="covered" data-hits="1" data-linenumber="14">
1935
+ <span class="hits">1</span>
1936
+
1937
+ <code class="ruby"> def initialize(path)</code>
1938
+ </li>
1939
+
1940
+ <li class="covered" data-hits="81" data-linenumber="15">
1941
+ <span class="hits">81</span>
1942
+
1943
+ <code class="ruby"> @path = path</code>
1944
+ </li>
1945
+
1946
+ <li class="never" data-hits="" data-linenumber="16">
1947
+
1948
+
1949
+ <code class="ruby"> end</code>
1950
+ </li>
1951
+
1952
+ <li class="never" data-hits="" data-linenumber="17">
1953
+
1954
+
1955
+ <code class="ruby"> </code>
1956
+ </li>
1957
+
1958
+ <li class="covered" data-hits="1" data-linenumber="18">
1959
+ <span class="hits">1</span>
1960
+
1961
+ <code class="ruby"> def get(*args, &amp;block)</code>
1962
+ </li>
1963
+
1964
+ <li class="covered" data-hits="68" data-linenumber="19">
1965
+ <span class="hits">68</span>
1966
+
1967
+ <code class="ruby"> Connection.send(:get, @path, *args, &amp;block)</code>
1968
+ </li>
1969
+
1970
+ <li class="never" data-hits="" data-linenumber="20">
1971
+
1972
+
1973
+ <code class="ruby"> end</code>
1974
+ </li>
1975
+
1976
+ <li class="covered" data-hits="1" data-linenumber="21">
1977
+ <span class="hits">1</span>
1978
+
1979
+ <code class="ruby"> def post(*args, &amp;block)</code>
1980
+ </li>
1981
+
1982
+ <li class="covered" data-hits="5" data-linenumber="22">
1983
+ <span class="hits">5</span>
1984
+
1985
+ <code class="ruby"> Connection.send(:post, @path, *args, &amp;block)</code>
1986
+ </li>
1987
+
1988
+ <li class="never" data-hits="" data-linenumber="23">
1989
+
1990
+
1991
+ <code class="ruby"> end</code>
1992
+ </li>
1993
+
1994
+ <li class="covered" data-hits="1" data-linenumber="24">
1995
+ <span class="hits">1</span>
1996
+
1997
+ <code class="ruby"> def put(*args, &amp;block)</code>
1998
+ </li>
1999
+
2000
+ <li class="covered" data-hits="2" data-linenumber="25">
2001
+ <span class="hits">2</span>
2002
+
2003
+ <code class="ruby"> Connection.send(:put, @path, *args, &amp;block)</code>
2004
+ </li>
2005
+
2006
+ <li class="never" data-hits="" data-linenumber="26">
2007
+
2008
+
2009
+ <code class="ruby"> end</code>
2010
+ </li>
2011
+
2012
+ <li class="covered" data-hits="1" data-linenumber="27">
2013
+ <span class="hits">1</span>
2014
+
2015
+ <code class="ruby"> def delete(*args, &amp;block)</code>
2016
+ </li>
2017
+
2018
+ <li class="covered" data-hits="4" data-linenumber="28">
2019
+ <span class="hits">4</span>
2020
+
2021
+ <code class="ruby"> Connection.send(:delete, @path, *args, &amp;block)</code>
2022
+ </li>
2023
+
2024
+ <li class="never" data-hits="" data-linenumber="29">
2025
+
2026
+
2027
+ <code class="ruby"> end</code>
2028
+ </li>
2029
+
2030
+ <li class="covered" data-hits="1" data-linenumber="30">
2031
+ <span class="hits">1</span>
2032
+
2033
+ <code class="ruby"> def head(*args, &amp;block)</code>
2034
+ </li>
2035
+
2036
+ <li class="covered" data-hits="1" data-linenumber="31">
2037
+ <span class="hits">1</span>
2038
+
2039
+ <code class="ruby"> Connection.send(:head, @path, *args, &amp;block)</code>
2040
+ </li>
2041
+
2042
+ <li class="never" data-hits="" data-linenumber="32">
2043
+
2044
+
2045
+ <code class="ruby"> end</code>
2046
+ </li>
2047
+
2048
+ <li class="never" data-hits="" data-linenumber="33">
2049
+
2050
+
2051
+ <code class="ruby"> end</code>
2052
+ </li>
2053
+
2054
+ <li class="never" data-hits="" data-linenumber="34">
2055
+
2056
+
2057
+ <code class="ruby"></code>
2058
+ </li>
2059
+
2060
+ <li class="never" data-hits="" data-linenumber="35">
2061
+
2062
+
2063
+ <code class="ruby"> # set ApiResource's http </code>
2064
+ </li>
2065
+
2066
+ <li class="covered" data-hits="1" data-linenumber="36">
2067
+ <span class="hits">1</span>
2068
+
2069
+ <code class="ruby"> def self.init</code>
2070
+ </li>
2071
+
2072
+ <li class="covered" data-hits="2" data-linenumber="37">
2073
+ <span class="hits">2</span>
2074
+
2075
+ <code class="ruby"> ::ApiResource::Connection.class_eval do</code>
2076
+ </li>
2077
+
2078
+ <li class="covered" data-hits="2" data-linenumber="38">
2079
+ <span class="hits">2</span>
2080
+
2081
+ <code class="ruby"> private</code>
2082
+ </li>
2083
+
2084
+ <li class="covered" data-hits="2" data-linenumber="39">
2085
+ <span class="hits">2</span>
2086
+
2087
+ <code class="ruby"> alias_method :http_without_mock, :http</code>
2088
+ </li>
2089
+
2090
+ <li class="covered" data-hits="2" data-linenumber="40">
2091
+ <span class="hits">2</span>
2092
+
2093
+ <code class="ruby"> def http(path)</code>
2094
+ </li>
2095
+
2096
+ <li class="covered" data-hits="81" data-linenumber="41">
2097
+ <span class="hits">81</span>
2098
+
2099
+ <code class="ruby"> Interface.new(path)</code>
2100
+ </li>
2101
+
2102
+ <li class="never" data-hits="" data-linenumber="42">
2103
+
2104
+
2105
+ <code class="ruby"> end</code>
2106
+ </li>
2107
+
2108
+ <li class="never" data-hits="" data-linenumber="43">
2109
+
2110
+
2111
+ <code class="ruby"> end</code>
2112
+ </li>
2113
+
2114
+ <li class="never" data-hits="" data-linenumber="44">
2115
+
2116
+
2117
+ <code class="ruby"> end</code>
2118
+ </li>
2119
+
2120
+ <li class="never" data-hits="" data-linenumber="45">
2121
+
2122
+
2123
+ <code class="ruby"> </code>
2124
+ </li>
2125
+
2126
+ <li class="never" data-hits="" data-linenumber="46">
2127
+
2128
+
2129
+ <code class="ruby"> # set ApiResource's http </code>
2130
+ </li>
2131
+
2132
+ <li class="covered" data-hits="1" data-linenumber="47">
2133
+ <span class="hits">1</span>
2134
+
2135
+ <code class="ruby"> def self.remove</code>
2136
+ </li>
2137
+
2138
+ <li class="covered" data-hits="1" data-linenumber="48">
2139
+ <span class="hits">1</span>
2140
+
2141
+ <code class="ruby"> ::ApiResource::Connection.class_eval do</code>
2142
+ </li>
2143
+
2144
+ <li class="covered" data-hits="1" data-linenumber="49">
2145
+ <span class="hits">1</span>
2146
+
2147
+ <code class="ruby"> private</code>
2148
+ </li>
2149
+
2150
+ <li class="covered" data-hits="1" data-linenumber="50">
2151
+ <span class="hits">1</span>
2152
+
2153
+ <code class="ruby"> alias_method :http, :http_without_mock</code>
2154
+ </li>
2155
+
2156
+ <li class="never" data-hits="" data-linenumber="51">
2157
+
2158
+
2159
+ <code class="ruby"> end</code>
2160
+ </li>
2161
+
2162
+ <li class="never" data-hits="" data-linenumber="52">
2163
+
2164
+
2165
+ <code class="ruby"> end</code>
2166
+ </li>
2167
+
2168
+ <li class="never" data-hits="" data-linenumber="53">
2169
+
2170
+
2171
+ <code class="ruby"></code>
2172
+ </li>
2173
+
2174
+ <li class="never" data-hits="" data-linenumber="54">
2175
+
2176
+
2177
+ <code class="ruby"> # clear out the defined mocks</code>
2178
+ </li>
2179
+
2180
+ <li class="covered" data-hits="1" data-linenumber="55">
2181
+ <span class="hits">1</span>
2182
+
2183
+ <code class="ruby"> def self.clear_endpoints</code>
2184
+ </li>
2185
+
2186
+ <li class="covered" data-hits="1" data-linenumber="56">
2187
+ <span class="hits">1</span>
2188
+
2189
+ <code class="ruby"> ret = @@endpoints</code>
2190
+ </li>
2191
+
2192
+ <li class="covered" data-hits="1" data-linenumber="57">
2193
+ <span class="hits">1</span>
2194
+
2195
+ <code class="ruby"> @@endpoints = {}</code>
2196
+ </li>
2197
+
2198
+ <li class="covered" data-hits="1" data-linenumber="58">
2199
+ <span class="hits">1</span>
2200
+
2201
+ <code class="ruby"> ret</code>
2202
+ </li>
2203
+
2204
+ <li class="never" data-hits="" data-linenumber="59">
2205
+
2206
+
2207
+ <code class="ruby"> end</code>
2208
+ </li>
2209
+
2210
+ <li class="never" data-hits="" data-linenumber="60">
2211
+
2212
+
2213
+ <code class="ruby"> # re-set the endpoints</code>
2214
+ </li>
2215
+
2216
+ <li class="covered" data-hits="1" data-linenumber="61">
2217
+ <span class="hits">1</span>
2218
+
2219
+ <code class="ruby"> def self.set_endpoints(new_endpoints)</code>
2220
+ </li>
2221
+
2222
+ <li class="missed" data-hits="0" data-linenumber="62">
2223
+
2224
+
2225
+ <code class="ruby"> @@endpoints = new_endpoints</code>
2226
+ </li>
2227
+
2228
+ <li class="never" data-hits="" data-linenumber="63">
2229
+
2230
+
2231
+ <code class="ruby"> end</code>
2232
+ </li>
2233
+
2234
+ <li class="never" data-hits="" data-linenumber="64">
2235
+
2236
+
2237
+ <code class="ruby"> # return the defined endpoints</code>
2238
+ </li>
2239
+
2240
+ <li class="covered" data-hits="1" data-linenumber="65">
2241
+ <span class="hits">1</span>
2242
+
2243
+ <code class="ruby"> def self.endpoints</code>
2244
+ </li>
2245
+
2246
+ <li class="missed" data-hits="0" data-linenumber="66">
2247
+
2248
+
2249
+ <code class="ruby"> @@endpoints</code>
2250
+ </li>
2251
+
2252
+ <li class="never" data-hits="" data-linenumber="67">
2253
+
2254
+
2255
+ <code class="ruby"> end</code>
2256
+ </li>
2257
+
2258
+ <li class="covered" data-hits="1" data-linenumber="68">
2259
+ <span class="hits">1</span>
2260
+
2261
+ <code class="ruby"> def self.define(&amp;block)</code>
2262
+ </li>
2263
+
2264
+ <li class="covered" data-hits="4" data-linenumber="69">
2265
+ <span class="hits">4</span>
2266
+
2267
+ <code class="ruby"> instance_eval(&amp;block) if block_given?</code>
2268
+ </li>
2269
+
2270
+ <li class="never" data-hits="" data-linenumber="70">
2271
+
2272
+
2273
+ <code class="ruby"> end</code>
2274
+ </li>
2275
+
2276
+ <li class="never" data-hits="" data-linenumber="71">
2277
+
2278
+
2279
+ <code class="ruby"> # define an endpoint for the mock</code>
2280
+ </li>
2281
+
2282
+ <li class="covered" data-hits="1" data-linenumber="72">
2283
+ <span class="hits">1</span>
2284
+
2285
+ <code class="ruby"> def self.endpoint(path, &amp;block)</code>
2286
+ </li>
2287
+
2288
+ <li class="covered" data-hits="23" data-linenumber="73">
2289
+ <span class="hits">23</span>
2290
+
2291
+ <code class="ruby"> path, format = path.split(&quot;.&quot;)</code>
2292
+ </li>
2293
+
2294
+ <li class="covered" data-hits="23" data-linenumber="74">
2295
+ <span class="hits">23</span>
2296
+
2297
+ <code class="ruby"> @@endpoints[path] ||= []</code>
2298
+ </li>
2299
+
2300
+ <li class="covered" data-hits="23" data-linenumber="75">
2301
+ <span class="hits">23</span>
2302
+
2303
+ <code class="ruby"> with_path_and_format(path, format) do</code>
2304
+ </li>
2305
+
2306
+ <li class="covered" data-hits="23" data-linenumber="76">
2307
+ <span class="hits">23</span>
2308
+
2309
+ <code class="ruby"> instance_eval(&amp;block) if block_given?</code>
2310
+ </li>
2311
+
2312
+ <li class="never" data-hits="" data-linenumber="77">
2313
+
2314
+
2315
+ <code class="ruby"> end</code>
2316
+ </li>
2317
+
2318
+ <li class="never" data-hits="" data-linenumber="78">
2319
+
2320
+
2321
+ <code class="ruby"> end</code>
2322
+ </li>
2323
+
2324
+ <li class="never" data-hits="" data-linenumber="79">
2325
+
2326
+
2327
+ <code class="ruby"> # find a matching response</code>
2328
+ </li>
2329
+
2330
+ <li class="covered" data-hits="1" data-linenumber="80">
2331
+ <span class="hits">1</span>
2332
+
2333
+ <code class="ruby"> def self.find_response(request)</code>
2334
+ </li>
2335
+
2336
+ <li class="never" data-hits="" data-linenumber="81">
2337
+
2338
+
2339
+ <code class="ruby"> # these are stored as [[Request, Response], [Request, Response]]</code>
2340
+ </li>
2341
+
2342
+ <li class="covered" data-hits="74" data-linenumber="82">
2343
+ <span class="hits">74</span>
2344
+
2345
+ <code class="ruby"> responses_and_params = self.responses_for_path(request.path)</code>
2346
+ </li>
2347
+
2348
+ <li class="covered" data-hits="238" data-linenumber="83">
2349
+ <span class="hits">238</span>
2350
+
2351
+ <code class="ruby"> ret = (responses_and_params[:responses] || []).select{|pair| pair.first.match?(request)}</code>
2352
+ </li>
2353
+
2354
+ <li class="covered" data-hits="74" data-linenumber="84">
2355
+ <span class="hits">74</span>
2356
+
2357
+ <code class="ruby"> raise Exception.new(&quot;More than one response matches #{request}&quot;) if ret.length &gt; 1</code>
2358
+ </li>
2359
+
2360
+ <li class="covered" data-hits="74" data-linenumber="85">
2361
+ <span class="hits">74</span>
2362
+
2363
+ <code class="ruby"> return ret.first ? {:response =&gt; ret.first[1], :params =&gt; responses_and_params[:params]} : nil</code>
2364
+ </li>
2365
+
2366
+ <li class="never" data-hits="" data-linenumber="86">
2367
+
2368
+
2369
+ <code class="ruby"> end</code>
2370
+ </li>
2371
+
2372
+ <li class="never" data-hits="" data-linenumber="87">
2373
+
2374
+
2375
+ <code class="ruby"></code>
2376
+ </li>
2377
+
2378
+ <li class="covered" data-hits="1" data-linenumber="88">
2379
+ <span class="hits">1</span>
2380
+
2381
+ <code class="ruby"> def self.paths_match?(known_path, entered_path)</code>
2382
+ </li>
2383
+
2384
+ <li class="covered" data-hits="356" data-linenumber="89">
2385
+ <span class="hits">356</span>
2386
+
2387
+ <code class="ruby"> PathString.paths_match?(known_path, entered_path)</code>
2388
+ </li>
2389
+
2390
+ <li class="never" data-hits="" data-linenumber="90">
2391
+
2392
+
2393
+ <code class="ruby"> end</code>
2394
+ </li>
2395
+
2396
+ <li class="never" data-hits="" data-linenumber="91">
2397
+
2398
+
2399
+ <code class="ruby"></code>
2400
+ </li>
2401
+
2402
+ <li class="never" data-hits="" data-linenumber="92">
2403
+
2404
+
2405
+ <code class="ruby"> # This method assumes that the two are matching paths</code>
2406
+ </li>
2407
+
2408
+ <li class="never" data-hits="" data-linenumber="93">
2409
+
2410
+
2411
+ <code class="ruby"> # if they aren't the behavior is undefined</code>
2412
+ </li>
2413
+
2414
+ <li class="covered" data-hits="1" data-linenumber="94">
2415
+ <span class="hits">1</span>
2416
+
2417
+ <code class="ruby"> def self.extract_params(known_path, entered_path)</code>
2418
+ </li>
2419
+
2420
+ <li class="covered" data-hits="13" data-linenumber="95">
2421
+ <span class="hits">13</span>
2422
+
2423
+ <code class="ruby"> PathString.extract_params(known_path, entered_path)</code>
2424
+ </li>
2425
+
2426
+ <li class="never" data-hits="" data-linenumber="96">
2427
+
2428
+
2429
+ <code class="ruby"> end</code>
2430
+ </li>
2431
+
2432
+ <li class="never" data-hits="" data-linenumber="97">
2433
+
2434
+
2435
+ <code class="ruby"></code>
2436
+ </li>
2437
+
2438
+ <li class="never" data-hits="" data-linenumber="98">
2439
+
2440
+
2441
+ <code class="ruby"> # returns a hash {:responses =&gt; [[Request, Response],[Request,Response]], :params =&gt; {...}}</code>
2442
+ </li>
2443
+
2444
+ <li class="never" data-hits="" data-linenumber="99">
2445
+
2446
+
2447
+ <code class="ruby"> # if there is no match returns nil</code>
2448
+ </li>
2449
+
2450
+ <li class="covered" data-hits="1" data-linenumber="100">
2451
+ <span class="hits">1</span>
2452
+
2453
+ <code class="ruby"> def self.responses_for_path(path)</code>
2454
+ </li>
2455
+
2456
+ <li class="covered" data-hits="77" data-linenumber="101">
2457
+ <span class="hits">77</span>
2458
+
2459
+ <code class="ruby"> path = path.split(&quot;?&quot;).first</code>
2460
+ </li>
2461
+
2462
+ <li class="covered" data-hits="77" data-linenumber="102">
2463
+ <span class="hits">77</span>
2464
+
2465
+ <code class="ruby"> path = path.split(/\./).first</code>
2466
+ </li>
2467
+
2468
+ <li class="never" data-hits="" data-linenumber="103">
2469
+
2470
+
2471
+ <code class="ruby"> # The obvious case</code>
2472
+ </li>
2473
+
2474
+ <li class="covered" data-hits="77" data-linenumber="104">
2475
+ <span class="hits">77</span>
2476
+
2477
+ <code class="ruby"> if @@endpoints[path]</code>
2478
+ </li>
2479
+
2480
+ <li class="covered" data-hits="58" data-linenumber="105">
2481
+ <span class="hits">58</span>
2482
+
2483
+ <code class="ruby"> return {:responses =&gt; @@endpoints[path], :params =&gt; {}}</code>
2484
+ </li>
2485
+
2486
+ <li class="never" data-hits="" data-linenumber="106">
2487
+
2488
+
2489
+ <code class="ruby"> end</code>
2490
+ </li>
2491
+
2492
+ <li class="never" data-hits="" data-linenumber="107">
2493
+
2494
+
2495
+ <code class="ruby"> # parameter names prefixed with colons should match parts</code>
2496
+ </li>
2497
+
2498
+ <li class="never" data-hits="" data-linenumber="108">
2499
+
2500
+
2501
+ <code class="ruby"> # of the path and push those parameters into the response</code>
2502
+ </li>
2503
+
2504
+ <li class="covered" data-hits="19" data-linenumber="109">
2505
+ <span class="hits">19</span>
2506
+
2507
+ <code class="ruby"> @@endpoints.keys.each do |possible_path|</code>
2508
+ </li>
2509
+
2510
+ <li class="covered" data-hits="356" data-linenumber="110">
2511
+ <span class="hits">356</span>
2512
+
2513
+ <code class="ruby"> if self.paths_match?(possible_path, path)</code>
2514
+ </li>
2515
+
2516
+ <li class="covered" data-hits="13" data-linenumber="111">
2517
+ <span class="hits">13</span>
2518
+
2519
+ <code class="ruby"> return {:responses =&gt; @@endpoints[possible_path], :params =&gt; self.extract_params(possible_path, path)}</code>
2520
+ </li>
2521
+
2522
+ <li class="never" data-hits="" data-linenumber="112">
2523
+
2524
+
2525
+ <code class="ruby"> end</code>
2526
+ </li>
2527
+
2528
+ <li class="never" data-hits="" data-linenumber="113">
2529
+
2530
+
2531
+ <code class="ruby"> end</code>
2532
+ </li>
2533
+
2534
+ <li class="never" data-hits="" data-linenumber="114">
2535
+
2536
+
2537
+ <code class="ruby"></code>
2538
+ </li>
2539
+
2540
+ <li class="covered" data-hits="6" data-linenumber="115">
2541
+ <span class="hits">6</span>
2542
+
2543
+ <code class="ruby"> return {:responses =&gt; nil, :params =&gt; nil}</code>
2544
+ </li>
2545
+
2546
+ <li class="never" data-hits="" data-linenumber="116">
2547
+
2548
+
2549
+ <code class="ruby"> end</code>
2550
+ </li>
2551
+
2552
+ <li class="never" data-hits="" data-linenumber="117">
2553
+
2554
+
2555
+ <code class="ruby"> </code>
2556
+ </li>
2557
+
2558
+ <li class="never" data-hits="" data-linenumber="118">
2559
+
2560
+
2561
+ <code class="ruby"></code>
2562
+ </li>
2563
+
2564
+ <li class="covered" data-hits="1" data-linenumber="119">
2565
+ <span class="hits">1</span>
2566
+
2567
+ <code class="ruby"> private</code>
2568
+ </li>
2569
+
2570
+ <li class="covered" data-hits="1" data-linenumber="120">
2571
+ <span class="hits">1</span>
2572
+
2573
+ <code class="ruby"> def self.with_path_and_format(path, format, &amp;block)</code>
2574
+ </li>
2575
+
2576
+ <li class="covered" data-hits="23" data-linenumber="121">
2577
+ <span class="hits">23</span>
2578
+
2579
+ <code class="ruby"> @@path, @@format = path, format</code>
2580
+ </li>
2581
+
2582
+ <li class="covered" data-hits="23" data-linenumber="122">
2583
+ <span class="hits">23</span>
2584
+
2585
+ <code class="ruby"> ret = yield</code>
2586
+ </li>
2587
+
2588
+ <li class="covered" data-hits="23" data-linenumber="123">
2589
+ <span class="hits">23</span>
2590
+
2591
+ <code class="ruby"> @@path, @@format = nil, nil</code>
2592
+ </li>
2593
+
2594
+ <li class="covered" data-hits="23" data-linenumber="124">
2595
+ <span class="hits">23</span>
2596
+
2597
+ <code class="ruby"> ret</code>
2598
+ </li>
2599
+
2600
+ <li class="never" data-hits="" data-linenumber="125">
2601
+
2602
+
2603
+ <code class="ruby"> end</code>
2604
+ </li>
2605
+
2606
+ <li class="never" data-hits="" data-linenumber="126">
2607
+
2608
+
2609
+ <code class="ruby"> # define the </code>
2610
+ </li>
2611
+
2612
+ <li class="covered" data-hits="1" data-linenumber="127">
2613
+ <span class="hits">1</span>
2614
+
2615
+ <code class="ruby"> [:post, :put, :get, :delete, :head].each do |verb|</code>
2616
+ </li>
2617
+
2618
+ <li class="covered" data-hits="5" data-linenumber="128">
2619
+ <span class="hits">5</span>
2620
+
2621
+ <code class="ruby"> instance_eval &lt;&lt;-EOE, __FILE__, __LINE__ + 1</code>
2622
+ </li>
2623
+
2624
+ <li class="never" data-hits="" data-linenumber="129">
2625
+
2626
+
2627
+ <code class="ruby"> def #{verb}(response_body, opts = {}, &amp;block)</code>
2628
+ </li>
2629
+
2630
+ <li class="never" data-hits="" data-linenumber="130">
2631
+
2632
+
2633
+ <code class="ruby"></code>
2634
+ </li>
2635
+
2636
+ <li class="never" data-hits="" data-linenumber="131">
2637
+
2638
+
2639
+ <code class="ruby"> raise Exception.new(&quot;Must be called from within an endpoint block&quot;) unless @@path</code>
2640
+ </li>
2641
+
2642
+ <li class="never" data-hits="" data-linenumber="132">
2643
+
2644
+
2645
+ <code class="ruby"> opts = opts.reverse_merge({:status_code =&gt; 200, :response_headers =&gt; {}, :params =&gt; {}}) </code>
2646
+ </li>
2647
+
2648
+ <li class="never" data-hits="" data-linenumber="133">
2649
+
2650
+
2651
+ <code class="ruby"></code>
2652
+ </li>
2653
+
2654
+ <li class="never" data-hits="" data-linenumber="134">
2655
+
2656
+
2657
+ <code class="ruby"> @@endpoints[@@path] &lt;&lt; [MockRequest.new(:#{verb}, @@path, :params =&gt; opts[:params], :format =&gt; @@format), MockResponse.new(response_body, :status_code =&gt; opts[:status_code], :headers =&gt; opts[:response_headers], :format =&gt; @@format, &amp;block)]</code>
2658
+ </li>
2659
+
2660
+ <li class="never" data-hits="" data-linenumber="135">
2661
+
2662
+
2663
+ <code class="ruby"> end</code>
2664
+ </li>
2665
+
2666
+ <li class="never" data-hits="" data-linenumber="136">
2667
+
2668
+
2669
+ <code class="ruby"> EOE</code>
2670
+ </li>
2671
+
2672
+ <li class="never" data-hits="" data-linenumber="137">
2673
+
2674
+
2675
+ <code class="ruby"> end</code>
2676
+ </li>
2677
+
2678
+ <li class="never" data-hits="" data-linenumber="138">
2679
+
2680
+
2681
+ <code class="ruby"></code>
2682
+ </li>
2683
+
2684
+ <li class="covered" data-hits="1" data-linenumber="139">
2685
+ <span class="hits">1</span>
2686
+
2687
+ <code class="ruby"> class MockResponse</code>
2688
+ </li>
2689
+
2690
+ <li class="covered" data-hits="1" data-linenumber="140">
2691
+ <span class="hits">1</span>
2692
+
2693
+ <code class="ruby"> attr_reader :body, :headers, :code, :format, :block</code>
2694
+ </li>
2695
+
2696
+ <li class="covered" data-hits="1" data-linenumber="141">
2697
+ <span class="hits">1</span>
2698
+
2699
+ <code class="ruby"> def initialize(body, opts = {}, &amp;block) </code>
2700
+ </li>
2701
+
2702
+ <li class="covered" data-hits="44" data-linenumber="142">
2703
+ <span class="hits">44</span>
2704
+
2705
+ <code class="ruby"> opts = opts.reverse_merge({:headers =&gt; {}, :status_code =&gt; 200})</code>
2706
+ </li>
2707
+
2708
+ <li class="covered" data-hits="44" data-linenumber="143">
2709
+ <span class="hits">44</span>
2710
+
2711
+ <code class="ruby"> @body = body</code>
2712
+ </li>
2713
+
2714
+ <li class="covered" data-hits="44" data-linenumber="144">
2715
+ <span class="hits">44</span>
2716
+
2717
+ <code class="ruby"> @headers = opts[:headers]</code>
2718
+ </li>
2719
+
2720
+ <li class="covered" data-hits="44" data-linenumber="145">
2721
+ <span class="hits">44</span>
2722
+
2723
+ <code class="ruby"> @code = opts[:status_code]</code>
2724
+ </li>
2725
+
2726
+ <li class="covered" data-hits="44" data-linenumber="146">
2727
+ <span class="hits">44</span>
2728
+
2729
+ <code class="ruby"> @format = (opts[:format] || :json)</code>
2730
+ </li>
2731
+
2732
+ <li class="covered" data-hits="44" data-linenumber="147">
2733
+ <span class="hits">44</span>
2734
+
2735
+ <code class="ruby"> @block = block if block_given?</code>
2736
+ </li>
2737
+
2738
+ <li class="never" data-hits="" data-linenumber="148">
2739
+
2740
+
2741
+ <code class="ruby"> end</code>
2742
+ </li>
2743
+
2744
+ <li class="covered" data-hits="1" data-linenumber="149">
2745
+ <span class="hits">1</span>
2746
+
2747
+ <code class="ruby"> def []=(key, val)</code>
2748
+ </li>
2749
+
2750
+ <li class="missed" data-hits="0" data-linenumber="150">
2751
+
2752
+
2753
+ <code class="ruby"> @headers[key] = val</code>
2754
+ </li>
2755
+
2756
+ <li class="never" data-hits="" data-linenumber="151">
2757
+
2758
+
2759
+ <code class="ruby"> end</code>
2760
+ </li>
2761
+
2762
+ <li class="covered" data-hits="1" data-linenumber="152">
2763
+ <span class="hits">1</span>
2764
+
2765
+ <code class="ruby"> def [](key)</code>
2766
+ </li>
2767
+
2768
+ <li class="missed" data-hits="0" data-linenumber="153">
2769
+
2770
+
2771
+ <code class="ruby"> @headers[key]</code>
2772
+ </li>
2773
+
2774
+ <li class="never" data-hits="" data-linenumber="154">
2775
+
2776
+
2777
+ <code class="ruby"> end</code>
2778
+ </li>
2779
+
2780
+ <li class="never" data-hits="" data-linenumber="155">
2781
+
2782
+
2783
+ <code class="ruby"></code>
2784
+ </li>
2785
+
2786
+ <li class="covered" data-hits="1" data-linenumber="156">
2787
+ <span class="hits">1</span>
2788
+
2789
+ <code class="ruby"> def body</code>
2790
+ </li>
2791
+
2792
+ <li class="covered" data-hits="83" data-linenumber="157">
2793
+ <span class="hits">83</span>
2794
+
2795
+ <code class="ruby"> raise Exception.new(&quot;Body must respond to to_#{self.format}&quot;) unless @body.respond_to?(&quot;to_#{self.format}&quot;)</code>
2796
+ </li>
2797
+
2798
+ <li class="covered" data-hits="83" data-linenumber="158">
2799
+ <span class="hits">83</span>
2800
+
2801
+ <code class="ruby"> @body.send(&quot;to_#{self.format}&quot;)</code>
2802
+ </li>
2803
+
2804
+ <li class="never" data-hits="" data-linenumber="159">
2805
+
2806
+
2807
+ <code class="ruby"> end</code>
2808
+ </li>
2809
+
2810
+ <li class="never" data-hits="" data-linenumber="160">
2811
+
2812
+
2813
+ <code class="ruby"></code>
2814
+ </li>
2815
+
2816
+ <li class="covered" data-hits="1" data-linenumber="161">
2817
+ <span class="hits">1</span>
2818
+
2819
+ <code class="ruby"> def body_as_object</code>
2820
+ </li>
2821
+
2822
+ <li class="missed" data-hits="0" data-linenumber="162">
2823
+
2824
+
2825
+ <code class="ruby"> return @body</code>
2826
+ </li>
2827
+
2828
+ <li class="never" data-hits="" data-linenumber="163">
2829
+
2830
+
2831
+ <code class="ruby"> end</code>
2832
+ </li>
2833
+
2834
+ <li class="never" data-hits="" data-linenumber="164">
2835
+
2836
+
2837
+ <code class="ruby"></code>
2838
+ </li>
2839
+
2840
+ <li class="covered" data-hits="1" data-linenumber="165">
2841
+ <span class="hits">1</span>
2842
+
2843
+ <code class="ruby"> def generate_response(params)</code>
2844
+ </li>
2845
+
2846
+ <li class="covered" data-hits="71" data-linenumber="166">
2847
+ <span class="hits">71</span>
2848
+
2849
+ <code class="ruby"> @body = @body.instance_exec(params, &amp;self.block) if self.block</code>
2850
+ </li>
2851
+
2852
+ <li class="never" data-hits="" data-linenumber="167">
2853
+
2854
+
2855
+ <code class="ruby"> end</code>
2856
+ </li>
2857
+
2858
+ <li class="never" data-hits="" data-linenumber="168">
2859
+
2860
+
2861
+ <code class="ruby"> end</code>
2862
+ </li>
2863
+
2864
+ <li class="never" data-hits="" data-linenumber="169">
2865
+
2866
+
2867
+ <code class="ruby"></code>
2868
+ </li>
2869
+
2870
+ <li class="covered" data-hits="1" data-linenumber="170">
2871
+ <span class="hits">1</span>
2872
+
2873
+ <code class="ruby"> class MockRequest</code>
2874
+ </li>
2875
+
2876
+ <li class="covered" data-hits="1" data-linenumber="171">
2877
+ <span class="hits">1</span>
2878
+
2879
+ <code class="ruby"> attr_reader :method, :path, :body, :headers, :params, :format, :query</code>
2880
+ </li>
2881
+
2882
+ <li class="never" data-hits="" data-linenumber="172">
2883
+
2884
+
2885
+ <code class="ruby"></code>
2886
+ </li>
2887
+
2888
+ <li class="covered" data-hits="1" data-linenumber="173">
2889
+ <span class="hits">1</span>
2890
+
2891
+ <code class="ruby"> def initialize(method, path, opts = {})</code>
2892
+ </li>
2893
+
2894
+ <li class="covered" data-hits="111" data-linenumber="174">
2895
+ <span class="hits">111</span>
2896
+
2897
+ <code class="ruby"> @method = method.to_sym</code>
2898
+ </li>
2899
+
2900
+ <li class="never" data-hits="" data-linenumber="175">
2901
+
2902
+
2903
+ <code class="ruby"></code>
2904
+ </li>
2905
+
2906
+ <li class="never" data-hits="" data-linenumber="176">
2907
+
2908
+
2909
+ <code class="ruby"> # set the normalized path, format and query string</code>
2910
+ </li>
2911
+
2912
+ <li class="covered" data-hits="111" data-linenumber="177">
2913
+ <span class="hits">111</span>
2914
+
2915
+ <code class="ruby"> @path, @query = path.split(&quot;?&quot;)</code>
2916
+ </li>
2917
+
2918
+ <li class="covered" data-hits="111" data-linenumber="178">
2919
+ <span class="hits">111</span>
2920
+
2921
+ <code class="ruby"> @path, @format = @path.split(&quot;.&quot;)</code>
2922
+ </li>
2923
+
2924
+ <li class="never" data-hits="" data-linenumber="179">
2925
+
2926
+
2927
+ <code class="ruby"></code>
2928
+ </li>
2929
+
2930
+ <li class="never" data-hits="" data-linenumber="180">
2931
+
2932
+
2933
+ <code class="ruby"> # if we have params, it is a MockRequest definition</code>
2934
+ </li>
2935
+
2936
+ <li class="covered" data-hits="111" data-linenumber="181">
2937
+ <span class="hits">111</span>
2938
+
2939
+ <code class="ruby"> if opts[:params]</code>
2940
+ </li>
2941
+
2942
+ <li class="covered" data-hits="34" data-linenumber="182">
2943
+ <span class="hits">34</span>
2944
+
2945
+ <code class="ruby"> @params = opts[:params]</code>
2946
+ </li>
2947
+
2948
+ <li class="never" data-hits="" data-linenumber="183">
2949
+
2950
+
2951
+ <code class="ruby"> # otherwise, we need to check either the query string or the body</code>
2952
+ </li>
2953
+
2954
+ <li class="never" data-hits="" data-linenumber="184">
2955
+
2956
+
2957
+ <code class="ruby"> # depending on the http verb</code>
2958
+ </li>
2959
+
2960
+ <li class="never" data-hits="" data-linenumber="185">
2961
+
2962
+
2963
+ <code class="ruby"> else</code>
2964
+ </li>
2965
+
2966
+ <li class="covered" data-hits="77" data-linenumber="186">
2967
+ <span class="hits">77</span>
2968
+
2969
+ <code class="ruby"> case @method</code>
2970
+ </li>
2971
+
2972
+ <li class="never" data-hits="" data-linenumber="187">
2973
+
2974
+
2975
+ <code class="ruby"> when :post, :put</code>
2976
+ </li>
2977
+
2978
+ <li class="covered" data-hits="5" data-linenumber="188">
2979
+ <span class="hits">5</span>
2980
+
2981
+ <code class="ruby"> @params = JSON.parse(opts[:body] || &quot;&quot;)</code>
2982
+ </li>
2983
+
2984
+ <li class="never" data-hits="" data-linenumber="189">
2985
+
2986
+
2987
+ <code class="ruby"> when :get, :delete, :head</code>
2988
+ </li>
2989
+
2990
+ <li class="covered" data-hits="72" data-linenumber="190">
2991
+ <span class="hits">72</span>
2992
+
2993
+ <code class="ruby"> @params = typecast_values(</code>
2994
+ </li>
2995
+
2996
+ <li class="never" data-hits="" data-linenumber="191">
2997
+
2998
+
2999
+ <code class="ruby"> Rack::Utils.parse_nested_query(@query || &quot;&quot;)</code>
3000
+ </li>
3001
+
3002
+ <li class="never" data-hits="" data-linenumber="192">
3003
+
3004
+
3005
+ <code class="ruby"> )</code>
3006
+ </li>
3007
+
3008
+ <li class="never" data-hits="" data-linenumber="193">
3009
+
3010
+
3011
+ <code class="ruby"> end</code>
3012
+ </li>
3013
+
3014
+ <li class="never" data-hits="" data-linenumber="194">
3015
+
3016
+
3017
+ <code class="ruby"> end</code>
3018
+ </li>
3019
+
3020
+ <li class="covered" data-hits="111" data-linenumber="195">
3021
+ <span class="hits">111</span>
3022
+
3023
+ <code class="ruby"> @body = opts[:body]</code>
3024
+ </li>
3025
+
3026
+ <li class="covered" data-hits="111" data-linenumber="196">
3027
+ <span class="hits">111</span>
3028
+
3029
+ <code class="ruby"> @headers = opts[:headers] || {}</code>
3030
+ </li>
3031
+
3032
+ <li class="covered" data-hits="111" data-linenumber="197">
3033
+ <span class="hits">111</span>
3034
+
3035
+ <code class="ruby"> @headers[&quot;Content-Length&quot;] = @body.blank? ? &quot;0&quot; : @body.size.to_s</code>
3036
+ </li>
3037
+
3038
+ <li class="never" data-hits="" data-linenumber="198">
3039
+
3040
+
3041
+ <code class="ruby"> end</code>
3042
+ </li>
3043
+
3044
+ <li class="never" data-hits="" data-linenumber="199">
3045
+
3046
+
3047
+ <code class="ruby"></code>
3048
+ </li>
3049
+
3050
+ <li class="never" data-hits="" data-linenumber="200">
3051
+
3052
+
3053
+ <code class="ruby"> # </code>
3054
+ </li>
3055
+
3056
+ <li class="covered" data-hits="1" data-linenumber="201">
3057
+ <span class="hits">1</span>
3058
+
3059
+ <code class="ruby"> def typecast_values(data)</code>
3060
+ </li>
3061
+
3062
+ <li class="covered" data-hits="90" data-linenumber="202">
3063
+ <span class="hits">90</span>
3064
+
3065
+ <code class="ruby"> if data.is_a?(Hash)</code>
3066
+ </li>
3067
+
3068
+ <li class="covered" data-hits="74" data-linenumber="203">
3069
+ <span class="hits">74</span>
3070
+
3071
+ <code class="ruby"> data.each_pair do |k,v|</code>
3072
+ </li>
3073
+
3074
+ <li class="covered" data-hits="16" data-linenumber="204">
3075
+ <span class="hits">16</span>
3076
+
3077
+ <code class="ruby"> data[k] = typecast_values(v)</code>
3078
+ </li>
3079
+
3080
+ <li class="never" data-hits="" data-linenumber="205">
3081
+
3082
+
3083
+ <code class="ruby"> end</code>
3084
+ </li>
3085
+
3086
+ <li class="never" data-hits="" data-linenumber="206">
3087
+
3088
+
3089
+ <code class="ruby"> elsif data.is_a?(Array)</code>
3090
+ </li>
3091
+
3092
+ <li class="covered" data-hits="1" data-linenumber="207">
3093
+ <span class="hits">1</span>
3094
+
3095
+ <code class="ruby"> data = data.collect{|v|</code>
3096
+ </li>
3097
+
3098
+ <li class="covered" data-hits="2" data-linenumber="208">
3099
+ <span class="hits">2</span>
3100
+
3101
+ <code class="ruby"> typecast_values(v)</code>
3102
+ </li>
3103
+
3104
+ <li class="never" data-hits="" data-linenumber="209">
3105
+
3106
+
3107
+ <code class="ruby"> }</code>
3108
+ </li>
3109
+
3110
+ <li class="never" data-hits="" data-linenumber="210">
3111
+
3112
+
3113
+ <code class="ruby"> else</code>
3114
+ </li>
3115
+
3116
+ <li class="covered" data-hits="15" data-linenumber="211">
3117
+ <span class="hits">15</span>
3118
+
3119
+ <code class="ruby"> data = if data.to_s =~ /^\d+$/</code>
3120
+ </li>
3121
+
3122
+ <li class="missed" data-hits="0" data-linenumber="212">
3123
+
3124
+
3125
+ <code class="ruby"> data.to_i</code>
3126
+ </li>
3127
+
3128
+ <li class="never" data-hits="" data-linenumber="213">
3129
+
3130
+
3131
+ <code class="ruby"> elsif data =~ /^[\d\.]+$/</code>
3132
+ </li>
3133
+
3134
+ <li class="missed" data-hits="0" data-linenumber="214">
3135
+
3136
+
3137
+ <code class="ruby"> data.to_f</code>
3138
+ </li>
3139
+
3140
+ <li class="never" data-hits="" data-linenumber="215">
3141
+
3142
+
3143
+ <code class="ruby"> elsif data == &quot;true&quot;</code>
3144
+ </li>
3145
+
3146
+ <li class="covered" data-hits="9" data-linenumber="216">
3147
+ <span class="hits">9</span>
3148
+
3149
+ <code class="ruby"> true</code>
3150
+ </li>
3151
+
3152
+ <li class="never" data-hits="" data-linenumber="217">
3153
+
3154
+
3155
+ <code class="ruby"> elsif data == &quot;false&quot;</code>
3156
+ </li>
3157
+
3158
+ <li class="covered" data-hits="1" data-linenumber="218">
3159
+ <span class="hits">1</span>
3160
+
3161
+ <code class="ruby"> false</code>
3162
+ </li>
3163
+
3164
+ <li class="never" data-hits="" data-linenumber="219">
3165
+
3166
+
3167
+ <code class="ruby"> else</code>
3168
+ </li>
3169
+
3170
+ <li class="covered" data-hits="5" data-linenumber="220">
3171
+ <span class="hits">5</span>
3172
+
3173
+ <code class="ruby"> data</code>
3174
+ </li>
3175
+
3176
+ <li class="never" data-hits="" data-linenumber="221">
3177
+
3178
+
3179
+ <code class="ruby"> end</code>
3180
+ </li>
3181
+
3182
+ <li class="never" data-hits="" data-linenumber="222">
3183
+
3184
+
3185
+ <code class="ruby"> end</code>
3186
+ </li>
3187
+
3188
+ <li class="covered" data-hits="90" data-linenumber="223">
3189
+ <span class="hits">90</span>
3190
+
3191
+ <code class="ruby"> data.nil? ? &quot;&quot; : data</code>
3192
+ </li>
3193
+
3194
+ <li class="never" data-hits="" data-linenumber="224">
3195
+
3196
+
3197
+ <code class="ruby"> end</code>
3198
+ </li>
3199
+
3200
+ <li class="never" data-hits="" data-linenumber="225">
3201
+
3202
+
3203
+ <code class="ruby"></code>
3204
+ </li>
3205
+
3206
+ <li class="never" data-hits="" data-linenumber="226">
3207
+
3208
+
3209
+ <code class="ruby"> # because of the context these come from, we can assume that the path already matches</code>
3210
+ </li>
3211
+
3212
+ <li class="covered" data-hits="1" data-linenumber="227">
3213
+ <span class="hits">1</span>
3214
+
3215
+ <code class="ruby"> def match?(request)</code>
3216
+ </li>
3217
+
3218
+ <li class="covered" data-hits="164" data-linenumber="228">
3219
+ <span class="hits">164</span>
3220
+
3221
+ <code class="ruby"> return false unless self.method == request.method</code>
3222
+ </li>
3223
+
3224
+ <li class="covered" data-hits="126" data-linenumber="229">
3225
+ <span class="hits">126</span>
3226
+
3227
+ <code class="ruby"> return false unless self.format == request.format || request.format.nil? || self.format.nil?</code>
3228
+ </li>
3229
+
3230
+ <li class="covered" data-hits="126" data-linenumber="230">
3231
+ <span class="hits">126</span>
3232
+
3233
+ <code class="ruby"> Comparator.diff(self.params, request.params) == {}</code>
3234
+ </li>
3235
+
3236
+ <li class="never" data-hits="" data-linenumber="231">
3237
+
3238
+
3239
+ <code class="ruby"> end</code>
3240
+ </li>
3241
+
3242
+ <li class="never" data-hits="" data-linenumber="232">
3243
+
3244
+
3245
+ <code class="ruby"> # string representation</code>
3246
+ </li>
3247
+
3248
+ <li class="covered" data-hits="1" data-linenumber="233">
3249
+ <span class="hits">1</span>
3250
+
3251
+ <code class="ruby"> def to_s</code>
3252
+ </li>
3253
+
3254
+ <li class="covered" data-hits="3" data-linenumber="234">
3255
+ <span class="hits">3</span>
3256
+
3257
+ <code class="ruby"> &quot;#{self.method.upcase} #{self.format} #{self.path} #{self.params}&quot;</code>
3258
+ </li>
3259
+
3260
+ <li class="never" data-hits="" data-linenumber="235">
3261
+
3262
+
3263
+ <code class="ruby"> end</code>
3264
+ </li>
3265
+
3266
+ <li class="never" data-hits="" data-linenumber="236">
3267
+
3268
+
3269
+ <code class="ruby"> end</code>
3270
+ </li>
3271
+
3272
+ <li class="covered" data-hits="1" data-linenumber="237">
3273
+ <span class="hits">1</span>
3274
+
3275
+ <code class="ruby"> class Connection</code>
3276
+ </li>
3277
+
3278
+ <li class="never" data-hits="" data-linenumber="238">
3279
+
3280
+
3281
+ <code class="ruby"></code>
3282
+ </li>
3283
+
3284
+ <li class="covered" data-hits="1" data-linenumber="239">
3285
+ <span class="hits">1</span>
3286
+
3287
+ <code class="ruby"> cattr_accessor :requests</code>
3288
+ </li>
3289
+
3290
+ <li class="covered" data-hits="1" data-linenumber="240">
3291
+ <span class="hits">1</span>
3292
+
3293
+ <code class="ruby"> self.requests = []</code>
3294
+ </li>
3295
+
3296
+ <li class="never" data-hits="" data-linenumber="241">
3297
+
3298
+
3299
+ <code class="ruby"></code>
3300
+ </li>
3301
+
3302
+ <li class="never" data-hits="" data-linenumber="242">
3303
+
3304
+
3305
+ <code class="ruby"> # body? methods</code>
3306
+ </li>
3307
+
3308
+ <li class="never" data-hits="" data-linenumber="243">
3309
+
3310
+
3311
+ <code class="ruby"> { true =&gt; %w(post put),</code>
3312
+ </li>
3313
+
3314
+ <li class="covered" data-hits="1" data-linenumber="244">
3315
+ <span class="hits">1</span>
3316
+
3317
+ <code class="ruby"> false =&gt; %w(get delete head) }.each do |has_body, methods|</code>
3318
+ </li>
3319
+
3320
+ <li class="covered" data-hits="2" data-linenumber="245">
3321
+ <span class="hits">2</span>
3322
+
3323
+ <code class="ruby"> methods.each do |method|</code>
3324
+ </li>
3325
+
3326
+ <li class="never" data-hits="" data-linenumber="246">
3327
+
3328
+
3329
+ <code class="ruby"> # def post(path, body, headers)</code>
3330
+ </li>
3331
+
3332
+ <li class="never" data-hits="" data-linenumber="247">
3333
+
3334
+
3335
+ <code class="ruby"> # request = ApiResource::Request.new(:post, path, body, headers)</code>
3336
+ </li>
3337
+
3338
+ <li class="never" data-hits="" data-linenumber="248">
3339
+
3340
+
3341
+ <code class="ruby"> # self.class.requests &lt;&lt; request</code>
3342
+ </li>
3343
+
3344
+ <li class="never" data-hits="" data-linenumber="249">
3345
+
3346
+
3347
+ <code class="ruby"> # if response = LifebookerClient::Mocks.find_response(request)</code>
3348
+ </li>
3349
+
3350
+ <li class="never" data-hits="" data-linenumber="250">
3351
+
3352
+
3353
+ <code class="ruby"> # response</code>
3354
+ </li>
3355
+
3356
+ <li class="never" data-hits="" data-linenumber="251">
3357
+
3358
+
3359
+ <code class="ruby"> # else</code>
3360
+ </li>
3361
+
3362
+ <li class="never" data-hits="" data-linenumber="252">
3363
+
3364
+
3365
+ <code class="ruby"> # raise InvalidRequestError.new(&quot;Could not find a response </code>
3366
+ </li>
3367
+
3368
+ <li class="never" data-hits="" data-linenumber="253">
3369
+
3370
+
3371
+ <code class="ruby"> # recorded for #{request.to_s} - Responses recorded are: -</code>
3372
+ </li>
3373
+
3374
+ <li class="never" data-hits="" data-linenumber="254">
3375
+
3376
+
3377
+ <code class="ruby"> # #{inspect_responses}&quot;)</code>
3378
+ </li>
3379
+
3380
+ <li class="never" data-hits="" data-linenumber="255">
3381
+
3382
+
3383
+ <code class="ruby"> # end</code>
3384
+ </li>
3385
+
3386
+ <li class="never" data-hits="" data-linenumber="256">
3387
+
3388
+
3389
+ <code class="ruby"> # end</code>
3390
+ </li>
3391
+
3392
+ <li class="covered" data-hits="5" data-linenumber="257">
3393
+ <span class="hits">5</span>
3394
+
3395
+ <code class="ruby"> instance_eval &lt;&lt;-EOE, __FILE__, __LINE__ + 1</code>
3396
+ </li>
3397
+
3398
+ <li class="never" data-hits="" data-linenumber="258">
3399
+
3400
+
3401
+ <code class="ruby"> def #{method}(path, #{'body, ' if has_body}headers)</code>
3402
+ </li>
3403
+
3404
+ <li class="never" data-hits="" data-linenumber="259">
3405
+
3406
+
3407
+ <code class="ruby"> opts = {:headers =&gt; headers}</code>
3408
+ </li>
3409
+
3410
+ <li class="never" data-hits="" data-linenumber="260">
3411
+
3412
+
3413
+ <code class="ruby"> #{&quot;opts[:body] = body&quot; if has_body}</code>
3414
+ </li>
3415
+
3416
+ <li class="never" data-hits="" data-linenumber="261">
3417
+
3418
+
3419
+ <code class="ruby"> request = MockRequest.new(:#{method}, path, opts)</code>
3420
+ </li>
3421
+
3422
+ <li class="never" data-hits="" data-linenumber="262">
3423
+
3424
+
3425
+ <code class="ruby"> self.requests &lt;&lt; request</code>
3426
+ </li>
3427
+
3428
+ <li class="never" data-hits="" data-linenumber="263">
3429
+
3430
+
3431
+ <code class="ruby"> if response = Mocks.find_response(request)</code>
3432
+ </li>
3433
+
3434
+ <li class="never" data-hits="" data-linenumber="264">
3435
+
3436
+
3437
+ <code class="ruby"> response[:response].tap{|resp| </code>
3438
+ </li>
3439
+
3440
+ <li class="never" data-hits="" data-linenumber="265">
3441
+
3442
+
3443
+ <code class="ruby"> resp.generate_response(</code>
3444
+ </li>
3445
+
3446
+ <li class="never" data-hits="" data-linenumber="266">
3447
+
3448
+
3449
+ <code class="ruby"> request.params</code>
3450
+ </li>
3451
+
3452
+ <li class="never" data-hits="" data-linenumber="267">
3453
+
3454
+
3455
+ <code class="ruby"> .with_indifferent_access</code>
3456
+ </li>
3457
+
3458
+ <li class="never" data-hits="" data-linenumber="268">
3459
+
3460
+
3461
+ <code class="ruby"> .merge(response[:params].with_indifferent_access)</code>
3462
+ </li>
3463
+
3464
+ <li class="never" data-hits="" data-linenumber="269">
3465
+
3466
+
3467
+ <code class="ruby"> )</code>
3468
+ </li>
3469
+
3470
+ <li class="never" data-hits="" data-linenumber="270">
3471
+
3472
+
3473
+ <code class="ruby"> }</code>
3474
+ </li>
3475
+
3476
+ <li class="never" data-hits="" data-linenumber="271">
3477
+
3478
+
3479
+ <code class="ruby"> else</code>
3480
+ </li>
3481
+
3482
+ <li class="never" data-hits="" data-linenumber="272">
3483
+
3484
+
3485
+ <code class="ruby"> raise ApiResource::ResourceNotFound.new(</code>
3486
+ </li>
3487
+
3488
+ <li class="never" data-hits="" data-linenumber="273">
3489
+
3490
+
3491
+ <code class="ruby"> MockResponse.new({}, {:headers =&gt; {&quot;Content-type&quot; =&gt; &quot;application/json&quot;}, :status_code =&gt; 404}),</code>
3492
+ </li>
3493
+
3494
+ <li class="never" data-hits="" data-linenumber="274">
3495
+
3496
+
3497
+ <code class="ruby"> :message =&gt; &quot;\nCould not find a response recorded for \#{request.pretty_inspect}\n&quot; +</code>
3498
+ </li>
3499
+
3500
+ <li class="never" data-hits="" data-linenumber="275">
3501
+
3502
+
3503
+ <code class="ruby"> &quot;Potential Responses Are:\n&quot; +</code>
3504
+ </li>
3505
+
3506
+ <li class="never" data-hits="" data-linenumber="276">
3507
+
3508
+
3509
+ <code class="ruby"> &quot;\#{Array.wrap(Mocks.responses_for_path(request.path)[:responses]).collect(&amp;:first).pretty_inspect}&quot;</code>
3510
+ </li>
3511
+
3512
+ <li class="never" data-hits="" data-linenumber="277">
3513
+
3514
+
3515
+ <code class="ruby"> )</code>
3516
+ </li>
3517
+
3518
+ <li class="never" data-hits="" data-linenumber="278">
3519
+
3520
+
3521
+ <code class="ruby"> end</code>
3522
+ </li>
3523
+
3524
+ <li class="never" data-hits="" data-linenumber="279">
3525
+
3526
+
3527
+ <code class="ruby"> end</code>
3528
+ </li>
3529
+
3530
+ <li class="never" data-hits="" data-linenumber="280">
3531
+
3532
+
3533
+ <code class="ruby"> EOE</code>
3534
+ </li>
3535
+
3536
+ <li class="never" data-hits="" data-linenumber="281">
3537
+
3538
+
3539
+ <code class="ruby"> end</code>
3540
+ </li>
3541
+
3542
+ <li class="never" data-hits="" data-linenumber="282">
3543
+
3544
+
3545
+ <code class="ruby"> end</code>
3546
+ </li>
3547
+
3548
+ <li class="never" data-hits="" data-linenumber="283">
3549
+
3550
+
3551
+ <code class="ruby"> end</code>
3552
+ </li>
3553
+
3554
+ <li class="never" data-hits="" data-linenumber="284">
3555
+
3556
+
3557
+ <code class="ruby"> end</code>
3558
+ </li>
3559
+
3560
+ <li class="never" data-hits="" data-linenumber="285">
3561
+
3562
+
3563
+ <code class="ruby">end</code>
3564
+ </li>
3565
+
3566
+ </ol>
3567
+ </pre>
3568
+ </div>
3569
+
3570
+ </div>
3571
+ </div>
3572
+ </body>
3573
+ </html>