api_resource 0.5.1 → 0.6.0

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