api_resource 0.4.2 → 0.4.3

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