braintree-rails 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/Gemfile.lock +2 -2
  4. data/braintree-rails.gemspec +1 -1
  5. data/coverage/index.html +630 -480
  6. data/lib/braintree_rails/association.rb +11 -0
  7. data/lib/braintree_rails/attributes.rb +1 -1
  8. data/lib/braintree_rails/collection_association.rb +6 -0
  9. data/lib/braintree_rails/model.rb +1 -0
  10. data/lib/braintree_rails/persistence.rb +5 -0
  11. data/lib/braintree_rails/subscriptions.rb +1 -0
  12. data/lib/braintree_rails/transactions.rb +1 -0
  13. data/lib/braintree_rails/version.rb +1 -1
  14. data/tags +124 -40
  15. data/test/integration/braintree_rails/credit_card_integration_test.rb +1 -1
  16. data/test/integration/braintree_rails/customer_integration_test.rb +14 -1
  17. data/test/integration/braintree_rails/transaction_integration_test.rb +21 -9
  18. data/test/integration/coverage/assets/0.7.1/application.css +1110 -0
  19. data/test/integration/coverage/assets/0.7.1/application.js +626 -0
  20. data/test/integration/coverage/assets/0.7.1/fancybox/blank.gif +0 -0
  21. data/test/integration/coverage/assets/0.7.1/fancybox/fancy_close.png +0 -0
  22. data/test/integration/coverage/assets/0.7.1/fancybox/fancy_loading.png +0 -0
  23. data/test/integration/coverage/assets/0.7.1/fancybox/fancy_nav_left.png +0 -0
  24. data/test/integration/coverage/assets/0.7.1/fancybox/fancy_nav_right.png +0 -0
  25. data/test/integration/coverage/assets/0.7.1/fancybox/fancy_shadow_e.png +0 -0
  26. data/test/integration/coverage/assets/0.7.1/fancybox/fancy_shadow_n.png +0 -0
  27. data/test/integration/coverage/assets/0.7.1/fancybox/fancy_shadow_ne.png +0 -0
  28. data/test/integration/coverage/assets/0.7.1/fancybox/fancy_shadow_nw.png +0 -0
  29. data/test/integration/coverage/assets/0.7.1/fancybox/fancy_shadow_s.png +0 -0
  30. data/test/integration/coverage/assets/0.7.1/fancybox/fancy_shadow_se.png +0 -0
  31. data/test/integration/coverage/assets/0.7.1/fancybox/fancy_shadow_sw.png +0 -0
  32. data/test/integration/coverage/assets/0.7.1/fancybox/fancy_shadow_w.png +0 -0
  33. data/test/integration/coverage/assets/0.7.1/fancybox/fancy_title_left.png +0 -0
  34. data/test/integration/coverage/assets/0.7.1/fancybox/fancy_title_main.png +0 -0
  35. data/test/integration/coverage/assets/0.7.1/fancybox/fancy_title_over.png +0 -0
  36. data/test/integration/coverage/assets/0.7.1/fancybox/fancy_title_right.png +0 -0
  37. data/test/integration/coverage/assets/0.7.1/fancybox/fancybox-x.png +0 -0
  38. data/test/integration/coverage/assets/0.7.1/fancybox/fancybox-y.png +0 -0
  39. data/test/integration/coverage/assets/0.7.1/fancybox/fancybox.png +0 -0
  40. data/test/integration/coverage/assets/0.7.1/favicon_green.png +0 -0
  41. data/test/integration/coverage/assets/0.7.1/favicon_red.png +0 -0
  42. data/test/integration/coverage/assets/0.7.1/favicon_yellow.png +0 -0
  43. data/test/integration/coverage/assets/0.7.1/loading.gif +0 -0
  44. data/test/integration/coverage/assets/0.7.1/magnify.png +0 -0
  45. data/test/integration/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  46. data/test/integration/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  47. data/test/integration/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  48. data/test/integration/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  49. data/test/integration/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  50. data/test/integration/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  51. data/test/integration/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  52. data/test/integration/coverage/assets/0.7.1/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  53. data/test/integration/coverage/assets/0.7.1/smoothness/images/ui-icons_222222_256x240.png +0 -0
  54. data/test/integration/coverage/assets/0.7.1/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  55. data/test/integration/coverage/assets/0.7.1/smoothness/images/ui-icons_454545_256x240.png +0 -0
  56. data/test/integration/coverage/assets/0.7.1/smoothness/images/ui-icons_888888_256x240.png +0 -0
  57. data/test/integration/coverage/assets/0.7.1/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  58. data/test/integration/coverage/index.html +72 -0
  59. data/test/test_helper.rb +5 -5
  60. metadata +44 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 26e78a5056adf4b2c24b9b125128039c65c2dcbc
4
- data.tar.gz: cacacc159a0492cc98b8003a57a633e7d5bdba1b
3
+ metadata.gz: ce2ee8094e7cf57e6fa7abb577482d0760eac01a
4
+ data.tar.gz: a6220fd1679ab33702c32e0cc0fa7a9477bbb28d
5
5
  SHA512:
6
- metadata.gz: 067a207b3045cd6d9d5061baa727a00813c07756face9520aeef311353855f0864eb7fb45591c131b4e321c63b40f2a576e576f28ce62cd88dc9868ed43caa83
7
- data.tar.gz: 717f654572caecc2161c09e0fc39fb31df023203b7a549ed605db09886431c4c133a081d7fabbb71bbfa1c2254a45adefc760e3a1e37e8c454e41b8849755cf1
6
+ metadata.gz: be83fc74a90b38204ca15cafb9dc150b62734af77320a5e91634499cf372f154d312f4273f682effd8b364ec742f5875c88a07efbd5b941161224236478f03e5
7
+ data.tar.gz: d9f9542c271e15c398671c381ecccce9fec20a2991414ebe4d54081e249169326b8b4b7e9c83510b36222990d73e6f5b37ca905b5eadf1d8908f122e39220675
data/CHANGELOG.md CHANGED
@@ -1,4 +1,12 @@
1
1
  ## Unreleased (master)
2
+ ### Enhancements
3
+ * Make all tests run in ruby 1.9.2
4
+ * Adding `reload` method for all models
5
+
6
+ ### Bug Fixes
7
+ * Fixed a bug where updating a vaulted card with `:options => {:verify_card => true}` is not working.
8
+
9
+ ## v1.1.0 (13033d9), Apr 12 2013
2
10
  ### Enhancements
3
11
  * `BraintreeRails` and its submodules are now eager loadable.
4
12
  * `BraintreeRails::CreditCard`'s `number` and `cvv` are now updatable.
data/Gemfile.lock CHANGED
@@ -7,14 +7,14 @@ GEM
7
7
  activesupport (3.2.13)
8
8
  i18n (= 0.6.1)
9
9
  multi_json (~> 1.0)
10
- addressable (2.3.3)
10
+ addressable (2.3.4)
11
11
  ansi (1.4.3)
12
12
  braintree (2.22.0)
13
13
  builder (>= 2.0.0)
14
14
  builder (3.0.4)
15
15
  crack (0.3.2)
16
16
  i18n (0.6.1)
17
- minitest (4.7.0)
17
+ minitest (4.7.3)
18
18
  multi_json (1.7.2)
19
19
  rake (10.0.4)
20
20
  simplecov (0.7.1)
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
  spec.files = Dir['**/*']
12
12
  spec.test_files = Dir['test/**']
13
13
  spec.homepage = 'https://github.com/lyang/braintree-rails'
14
- spec.required_ruby_version = '>= 1.9.3'
14
+ spec.required_ruby_version = '>= 1.9.2'
15
15
  spec.add_runtime_dependency 'braintree', '>= 2.16.0'
16
16
  spec.add_runtime_dependency 'activemodel', '>= 3.0'
17
17
  spec.add_runtime_dependency 'activesupport', '>= 3.0'
data/coverage/index.html CHANGED
@@ -14,7 +14,7 @@
14
14
  <img src="./assets/0.7.1/loading.gif" alt="loading"/>
15
15
  </div>
16
16
  <div id="wrapper" style="display:none;">
17
- <div class="timestamp">Generated <abbr class="timeago" title="2013-04-12T08:11:45-07:00">2013-04-12T08:11:45-07:00</abbr></div>
17
+ <div class="timestamp">Generated <abbr class="timeago" title="2013-05-31T14:53:41-07:00">2013-05-31T14:53:41-07:00</abbr></div>
18
18
  <ul class="group_tabs"></ul>
19
19
 
20
20
  <div id="content">
@@ -25,15 +25,15 @@
25
25
  covered at
26
26
  <span class="covered_strength">
27
27
  <span class="green">
28
- 175.35
28
+ 183.9
29
29
  </span>
30
30
  </span> hits/line)
31
31
  </h2>
32
32
  <a name="AllFiles"></a>
33
33
  <div>
34
34
  <b>43</b> files in total.
35
- <b>722</b> relevant lines.
36
- <span class="green"><b>722</b> lines covered</span> and
35
+ <b>739</b> relevant lines.
36
+ <span class="green"><b>739</b> lines covered</span> and
37
37
  <span class="red"><b>0</b> lines missed </span>
38
38
  </div>
39
39
  <table class="file_list">
@@ -87,7 +87,7 @@
87
87
  <td>39</td>
88
88
  <td>39</td>
89
89
  <td>0</td>
90
- <td>5491.2</td>
90
+ <td>5727.1</td>
91
91
  </tr>
92
92
 
93
93
  <tr>
@@ -97,7 +97,7 @@
97
97
  <td>6</td>
98
98
  <td>6</td>
99
99
  <td>0</td>
100
- <td>119.5</td>
100
+ <td>120.5</td>
101
101
  </tr>
102
102
 
103
103
  <tr>
@@ -133,11 +133,11 @@
133
133
  <tr>
134
134
  <td class="strong"><a href="#82236d686bcfd99b21c7ffbcd693d20b2a265a7b" class="src_link" title="lib/braintree_rails/association.rb">lib/braintree_rails/association.rb</a></td>
135
135
  <td class="green strong">100.0 %</td>
136
- <td>39</td>
137
- <td>23</td>
138
- <td>23</td>
136
+ <td>50</td>
137
+ <td>30</td>
138
+ <td>30</td>
139
139
  <td>0</td>
140
- <td>78.0</td>
140
+ <td>66.3</td>
141
141
  </tr>
142
142
 
143
143
  <tr>
@@ -147,7 +147,7 @@
147
147
  <td>38</td>
148
148
  <td>38</td>
149
149
  <td>0</td>
150
- <td>1243.8</td>
150
+ <td>1318.7</td>
151
151
  </tr>
152
152
 
153
153
  <tr>
@@ -157,7 +157,7 @@
157
157
  <td>4</td>
158
158
  <td>4</td>
159
159
  <td>0</td>
160
- <td>20.8</td>
160
+ <td>21.8</td>
161
161
  </tr>
162
162
 
163
163
  <tr>
@@ -167,7 +167,7 @@
167
167
  <td>32</td>
168
168
  <td>32</td>
169
169
  <td>0</td>
170
- <td>8.1</td>
170
+ <td>8.6</td>
171
171
  </tr>
172
172
 
173
173
  <tr>
@@ -183,11 +183,11 @@
183
183
  <tr>
184
184
  <td class="strong"><a href="#a6eec70f72248f842b74d4783f9e55cf4ce7425d" class="src_link" title="lib/braintree_rails/collection_association.rb">lib/braintree_rails/collection_association.rb</a></td>
185
185
  <td class="green strong">100.0 %</td>
186
- <td>55</td>
187
- <td>30</td>
188
- <td>30</td>
186
+ <td>61</td>
187
+ <td>34</td>
188
+ <td>34</td>
189
189
  <td>0</td>
190
- <td>63.4</td>
190
+ <td>56.8</td>
191
191
  </tr>
192
192
 
193
193
  <tr>
@@ -207,7 +207,7 @@
207
207
  <td>36</td>
208
208
  <td>36</td>
209
209
  <td>0</td>
210
- <td>17.9</td>
210
+ <td>19.8</td>
211
211
  </tr>
212
212
 
213
213
  <tr>
@@ -217,7 +217,7 @@
217
217
  <td>21</td>
218
218
  <td>21</td>
219
219
  <td>0</td>
220
- <td>50.4</td>
220
+ <td>51.8</td>
221
221
  </tr>
222
222
 
223
223
  <tr>
@@ -227,7 +227,7 @@
227
227
  <td>8</td>
228
228
  <td>8</td>
229
229
  <td>0</td>
230
- <td>8.5</td>
230
+ <td>9.4</td>
231
231
  </tr>
232
232
 
233
233
  <tr>
@@ -237,7 +237,7 @@
237
237
  <td>17</td>
238
238
  <td>17</td>
239
239
  <td>0</td>
240
- <td>16.6</td>
240
+ <td>18.1</td>
241
241
  </tr>
242
242
 
243
243
  <tr>
@@ -293,11 +293,11 @@
293
293
  <tr>
294
294
  <td class="strong"><a href="#32029dbba5376212048623c1c2834e7bc5619f36" class="src_link" title="lib/braintree_rails/model.rb">lib/braintree_rails/model.rb</a></td>
295
295
  <td class="green strong">100.0 %</td>
296
- <td>75</td>
297
- <td>45</td>
298
- <td>45</td>
296
+ <td>76</td>
297
+ <td>46</td>
298
+ <td>46</td>
299
299
  <td>0</td>
300
- <td>97.5</td>
300
+ <td>162.3</td>
301
301
  </tr>
302
302
 
303
303
  <tr>
@@ -343,11 +343,11 @@
343
343
  <tr>
344
344
  <td class="strong"><a href="#7cc93f5626eca1a0a27666e5a0bfed54a026a45e" class="src_link" title="lib/braintree_rails/persistence.rb">lib/braintree_rails/persistence.rb</a></td>
345
345
  <td class="green strong">100.0 %</td>
346
- <td>152</td>
347
- <td>86</td>
348
- <td>86</td>
346
+ <td>157</td>
347
+ <td>89</td>
348
+ <td>89</td>
349
349
  <td>0</td>
350
- <td>58.7</td>
350
+ <td>58.9</td>
351
351
  </tr>
352
352
 
353
353
  <tr>
@@ -403,11 +403,11 @@
403
403
  <tr>
404
404
  <td class="strong"><a href="#490ecc61d2f0bcd43e617d94b78fad1195e89904" class="src_link" title="lib/braintree_rails/subscriptions.rb">lib/braintree_rails/subscriptions.rb</a></td>
405
405
  <td class="green strong">100.0 %</td>
406
- <td>37</td>
407
- <td>21</td>
408
- <td>21</td>
406
+ <td>38</td>
407
+ <td>22</td>
408
+ <td>22</td>
409
409
  <td>0</td>
410
- <td>2.9</td>
410
+ <td>3.0</td>
411
411
  </tr>
412
412
 
413
413
  <tr>
@@ -417,7 +417,7 @@
417
417
  <td>60</td>
418
418
  <td>60</td>
419
419
  <td>0</td>
420
- <td>6.6</td>
420
+ <td>6.9</td>
421
421
  </tr>
422
422
 
423
423
  <tr>
@@ -427,17 +427,17 @@
427
427
  <td>24</td>
428
428
  <td>24</td>
429
429
  <td>0</td>
430
- <td>10.8</td>
430
+ <td>11.0</td>
431
431
  </tr>
432
432
 
433
433
  <tr>
434
434
  <td class="strong"><a href="#eae625daab79481cc1f2db6f3c1efc496337eeb4" class="src_link" title="lib/braintree_rails/transactions.rb">lib/braintree_rails/transactions.rb</a></td>
435
435
  <td class="green strong">100.0 %</td>
436
- <td>42</td>
437
- <td>24</td>
438
- <td>24</td>
436
+ <td>43</td>
437
+ <td>25</td>
438
+ <td>25</td>
439
439
  <td>0</td>
440
- <td>4.7</td>
440
+ <td>5.1</td>
441
441
  </tr>
442
442
 
443
443
  <tr>
@@ -447,7 +447,7 @@
447
447
  <td>23</td>
448
448
  <td>23</td>
449
449
  <td>0</td>
450
- <td>15.4</td>
450
+ <td>16.3</td>
451
451
  </tr>
452
452
 
453
453
  <tr>
@@ -840,20 +840,20 @@
840
840
  <code class="ruby"> define_method(&quot;#{country_attribute}=&quot;) do |value|</code>
841
841
  </li>
842
842
 
843
- <li class="covered" data-hits="302" data-linenumber="22">
844
- <span class="hits">302</span>
843
+ <li class="covered" data-hits="315" data-linenumber="22">
844
+ <span class="hits">315</span>
845
845
 
846
846
  <code class="ruby"> CountryNames.except(country_attribute).each do |other_attribute, other_index|</code>
847
847
  </li>
848
848
 
849
- <li class="covered" data-hits="212316" data-linenumber="23">
850
- <span class="hits">212316</span>
849
+ <li class="covered" data-hits="221442" data-linenumber="23">
850
+ <span class="hits">221442</span>
851
851
 
852
852
  <code class="ruby"> other_value = Braintree::Address::CountryNames.find{|country_name| country_name[index] == value}.try(:[], other_index)</code>
853
853
  </li>
854
854
 
855
- <li class="covered" data-hits="906" data-linenumber="24">
856
- <span class="hits">906</span>
855
+ <li class="covered" data-hits="945" data-linenumber="24">
856
+ <span class="hits">945</span>
857
857
 
858
858
  <code class="ruby"> instance_variable_set(&quot;@#{other_attribute}&quot;, other_value)</code>
859
859
  </li>
@@ -864,8 +864,8 @@
864
864
  <code class="ruby"> end</code>
865
865
  </li>
866
866
 
867
- <li class="covered" data-hits="302" data-linenumber="26">
868
- <span class="hits">302</span>
867
+ <li class="covered" data-hits="315" data-linenumber="26">
868
+ <span class="hits">315</span>
869
869
 
870
870
  <code class="ruby"> instance_variable_set(&quot;@#{country_attribute}&quot;, value)</code>
871
871
  </li>
@@ -942,8 +942,8 @@
942
942
  <code class="ruby"> def ensure_model(model)</code>
943
943
  </li>
944
944
 
945
- <li class="covered" data-hits="132" data-linenumber="39">
946
- <span class="hits">132</span>
945
+ <li class="covered" data-hits="136" data-linenumber="39">
946
+ <span class="hits">136</span>
947
947
 
948
948
  <code class="ruby"> if Braintree::Transaction::AddressDetails === model</code>
949
949
  </li>
@@ -972,8 +972,8 @@
972
972
  <code class="ruby"> else</code>
973
973
  </li>
974
974
 
975
- <li class="covered" data-hits="130" data-linenumber="44">
976
- <span class="hits">130</span>
975
+ <li class="covered" data-hits="134" data-linenumber="44">
976
+ <span class="hits">134</span>
977
977
 
978
978
  <code class="ruby"> super</code>
979
979
  </li>
@@ -1242,14 +1242,14 @@
1242
1242
  <code class="ruby"> [:country_name, :allow_blank =&gt; true, :inclusion =&gt; { :in =&gt; Braintree::Address::CountryNames.map {|country| country[0]}, :message =&gt; &quot;%{value} is not allowed&quot; }],</code>
1243
1243
  </li>
1244
1244
 
1245
- <li class="covered" data-hits="73" data-linenumber="7">
1246
- <span class="hits">73</span>
1245
+ <li class="covered" data-hits="75" data-linenumber="7">
1246
+ <span class="hits">75</span>
1247
1247
 
1248
1248
  <code class="ruby"> [:street_address, :presence =&gt; true, :if =&gt; Proc.new { Configuration.require_street_address }],</code>
1249
1249
  </li>
1250
1250
 
1251
- <li class="covered" data-hits="146" data-linenumber="8">
1252
- <span class="hits">146</span>
1251
+ <li class="covered" data-hits="150" data-linenumber="8">
1252
+ <span class="hits">150</span>
1253
1253
 
1254
1254
  <code class="ruby"> [:postal_code, :presence =&gt; true, :format =&gt; { :with =&gt; /\A[- a-z0-9]+\z/i}, :if =&gt; Proc.new { |address| address.errors[:postal_code].blank? &amp;&amp; Configuration.require_postal_code }]</code>
1255
1255
  </li>
@@ -1563,8 +1563,8 @@
1563
1563
  <h3>lib/braintree_rails/association.rb</h3>
1564
1564
  <h4><span class="green">100.0 %</span> covered</h4>
1565
1565
  <div>
1566
- <b>23</b> relevant lines.
1567
- <span class="green"><b>23</b> lines covered</span> and
1566
+ <b>30</b> relevant lines.
1567
+ <span class="green"><b>30</b> lines covered</span> and
1568
1568
  <span class="red"><b>0</b> lines missed.</span>
1569
1569
  </div>
1570
1570
  </div>
@@ -1593,214 +1593,280 @@
1593
1593
  <li class="covered" data-hits="2" data-linenumber="4">
1594
1594
  <span class="hits">2</span>
1595
1595
 
1596
+ <code class="ruby"> def self.extended(receiver)</code>
1597
+ </li>
1598
+
1599
+ <li class="covered" data-hits="13" data-linenumber="5">
1600
+ <span class="hits">13</span>
1601
+
1602
+ <code class="ruby"> receiver.singleton_class.send(:attr_accessor, :associations)</code>
1603
+ </li>
1604
+
1605
+ <li class="covered" data-hits="13" data-linenumber="6">
1606
+ <span class="hits">13</span>
1607
+
1608
+ <code class="ruby"> receiver.associations = []</code>
1609
+ </li>
1610
+
1611
+ <li class="never" data-hits="" data-linenumber="7">
1612
+
1613
+
1614
+ <code class="ruby"> end</code>
1615
+ </li>
1616
+
1617
+ <li class="never" data-hits="" data-linenumber="8">
1618
+
1619
+
1620
+ <code class="ruby"></code>
1621
+ </li>
1622
+
1623
+ <li class="covered" data-hits="2" data-linenumber="9">
1624
+ <span class="hits">2</span>
1625
+
1626
+ <code class="ruby"> def inherited(subclass)</code>
1627
+ </li>
1628
+
1629
+ <li class="covered" data-hits="6" data-linenumber="10">
1630
+ <span class="hits">6</span>
1631
+
1632
+ <code class="ruby"> subclass.associations = self.associations</code>
1633
+ </li>
1634
+
1635
+ <li class="never" data-hits="" data-linenumber="11">
1636
+
1637
+
1638
+ <code class="ruby"> end</code>
1639
+ </li>
1640
+
1641
+ <li class="never" data-hits="" data-linenumber="12">
1642
+
1643
+
1644
+ <code class="ruby"></code>
1645
+ </li>
1646
+
1647
+ <li class="covered" data-hits="2" data-linenumber="13">
1648
+ <span class="hits">2</span>
1649
+
1596
1650
  <code class="ruby"> def has_many(name, options)</code>
1597
1651
  </li>
1598
1652
 
1599
- <li class="covered" data-hits="26" data-linenumber="5">
1653
+ <li class="covered" data-hits="26" data-linenumber="14">
1654
+ <span class="hits">26</span>
1655
+
1656
+ <code class="ruby"> associations &lt;&lt; name</code>
1657
+ </li>
1658
+
1659
+ <li class="covered" data-hits="26" data-linenumber="15">
1600
1660
  <span class="hits">26</span>
1601
1661
 
1602
1662
  <code class="ruby"> define_association_reader(name, options.merge(:foreign_key =&gt; :presence))</code>
1603
1663
  </li>
1604
1664
 
1605
- <li class="never" data-hits="" data-linenumber="6">
1665
+ <li class="never" data-hits="" data-linenumber="16">
1606
1666
 
1607
1667
 
1608
1668
  <code class="ruby"> end</code>
1609
1669
  </li>
1610
1670
 
1611
- <li class="never" data-hits="" data-linenumber="7">
1671
+ <li class="never" data-hits="" data-linenumber="17">
1612
1672
 
1613
1673
 
1614
1674
  <code class="ruby"></code>
1615
1675
  </li>
1616
1676
 
1617
- <li class="covered" data-hits="2" data-linenumber="8">
1677
+ <li class="covered" data-hits="2" data-linenumber="18">
1618
1678
  <span class="hits">2</span>
1619
1679
 
1620
1680
  <code class="ruby"> def belongs_to(name, options)</code>
1621
1681
  </li>
1622
1682
 
1623
- <li class="covered" data-hits="20" data-linenumber="9">
1683
+ <li class="covered" data-hits="20" data-linenumber="19">
1684
+ <span class="hits">20</span>
1685
+
1686
+ <code class="ruby"> associations &lt;&lt; name</code>
1687
+ </li>
1688
+
1689
+ <li class="covered" data-hits="20" data-linenumber="20">
1624
1690
  <span class="hits">20</span>
1625
1691
 
1626
1692
  <code class="ruby"> define_association_reader(name, options)</code>
1627
1693
  </li>
1628
1694
 
1629
- <li class="covered" data-hits="20" data-linenumber="10">
1695
+ <li class="covered" data-hits="20" data-linenumber="21">
1630
1696
  <span class="hits">20</span>
1631
1697
 
1632
1698
  <code class="ruby"> define_association_writer(name, options)</code>
1633
1699
  </li>
1634
1700
 
1635
- <li class="never" data-hits="" data-linenumber="11">
1701
+ <li class="never" data-hits="" data-linenumber="22">
1636
1702
 
1637
1703
 
1638
1704
  <code class="ruby"> end</code>
1639
1705
  </li>
1640
1706
 
1641
- <li class="never" data-hits="" data-linenumber="12">
1707
+ <li class="never" data-hits="" data-linenumber="23">
1642
1708
 
1643
1709
 
1644
1710
  <code class="ruby"></code>
1645
1711
  </li>
1646
1712
 
1647
- <li class="covered" data-hits="2" data-linenumber="13">
1713
+ <li class="covered" data-hits="2" data-linenumber="24">
1648
1714
  <span class="hits">2</span>
1649
1715
 
1650
1716
  <code class="ruby"> def has_one(name, options)</code>
1651
1717
  </li>
1652
1718
 
1653
- <li class="covered" data-hits="4" data-linenumber="14">
1719
+ <li class="covered" data-hits="4" data-linenumber="25">
1654
1720
  <span class="hits">4</span>
1655
1721
 
1656
1722
  <code class="ruby"> belongs_to(name, options)</code>
1657
1723
  </li>
1658
1724
 
1659
- <li class="never" data-hits="" data-linenumber="15">
1725
+ <li class="never" data-hits="" data-linenumber="26">
1660
1726
 
1661
1727
 
1662
1728
  <code class="ruby"> end</code>
1663
1729
  </li>
1664
1730
 
1665
- <li class="never" data-hits="" data-linenumber="16">
1731
+ <li class="never" data-hits="" data-linenumber="27">
1666
1732
 
1667
1733
 
1668
1734
  <code class="ruby"></code>
1669
1735
  </li>
1670
1736
 
1671
- <li class="covered" data-hits="2" data-linenumber="17">
1737
+ <li class="covered" data-hits="2" data-linenumber="28">
1672
1738
  <span class="hits">2</span>
1673
1739
 
1674
1740
  <code class="ruby"> def define_association_reader(name, options)</code>
1675
1741
  </li>
1676
1742
 
1677
- <li class="covered" data-hits="46" data-linenumber="18">
1743
+ <li class="covered" data-hits="46" data-linenumber="29">
1678
1744
  <span class="hits">46</span>
1679
1745
 
1680
1746
  <code class="ruby"> define_method(name) do</code>
1681
1747
  </li>
1682
1748
 
1683
- <li class="covered" data-hits="493" data-linenumber="19">
1684
- <span class="hits">493</span>
1749
+ <li class="covered" data-hits="517" data-linenumber="30">
1750
+ <span class="hits">517</span>
1685
1751
 
1686
1752
  <code class="ruby"> value = instance_variable_get(&quot;@#{name}&quot;)</code>
1687
1753
  </li>
1688
1754
 
1689
- <li class="covered" data-hits="493" data-linenumber="20">
1690
- <span class="hits">493</span>
1755
+ <li class="covered" data-hits="517" data-linenumber="31">
1756
+ <span class="hits">517</span>
1691
1757
 
1692
1758
  <code class="ruby"> return value if value.present?</code>
1693
1759
  </li>
1694
1760
 
1695
- <li class="covered" data-hits="187" data-linenumber="21">
1696
- <span class="hits">187</span>
1761
+ <li class="covered" data-hits="207" data-linenumber="32">
1762
+ <span class="hits">207</span>
1697
1763
 
1698
1764
  <code class="ruby"> value = self.send(options[:foreign_key])</code>
1699
1765
  </li>
1700
1766
 
1701
- <li class="covered" data-hits="187" data-linenumber="22">
1702
- <span class="hits">187</span>
1767
+ <li class="covered" data-hits="207" data-linenumber="33">
1768
+ <span class="hits">207</span>
1703
1769
 
1704
1770
  <code class="ruby"> value &amp;&amp;= options[:class].new(value)</code>
1705
1771
  </li>
1706
1772
 
1707
- <li class="covered" data-hits="187" data-linenumber="23">
1708
- <span class="hits">187</span>
1773
+ <li class="covered" data-hits="207" data-linenumber="34">
1774
+ <span class="hits">207</span>
1709
1775
 
1710
1776
  <code class="ruby"> instance_variable_set(&quot;@#{name}&quot;, value)</code>
1711
1777
  </li>
1712
1778
 
1713
- <li class="never" data-hits="" data-linenumber="24">
1779
+ <li class="never" data-hits="" data-linenumber="35">
1714
1780
 
1715
1781
 
1716
1782
  <code class="ruby"> end</code>
1717
1783
  </li>
1718
1784
 
1719
- <li class="never" data-hits="" data-linenumber="25">
1785
+ <li class="never" data-hits="" data-linenumber="36">
1720
1786
 
1721
1787
 
1722
1788
  <code class="ruby"> end</code>
1723
1789
  </li>
1724
1790
 
1725
- <li class="never" data-hits="" data-linenumber="26">
1791
+ <li class="never" data-hits="" data-linenumber="37">
1726
1792
 
1727
1793
 
1728
1794
  <code class="ruby"></code>
1729
1795
  </li>
1730
1796
 
1731
- <li class="covered" data-hits="2" data-linenumber="27">
1797
+ <li class="covered" data-hits="2" data-linenumber="38">
1732
1798
  <span class="hits">2</span>
1733
1799
 
1734
1800
  <code class="ruby"> def define_association_writer(name, options)</code>
1735
1801
  </li>
1736
1802
 
1737
- <li class="covered" data-hits="20" data-linenumber="28">
1803
+ <li class="covered" data-hits="20" data-linenumber="39">
1738
1804
  <span class="hits">20</span>
1739
1805
 
1740
1806
  <code class="ruby"> define_method(&quot;#{name}=&quot;) do |value|</code>
1741
1807
  </li>
1742
1808
 
1743
- <li class="covered" data-hits="40" data-linenumber="29">
1744
- <span class="hits">40</span>
1809
+ <li class="covered" data-hits="42" data-linenumber="40">
1810
+ <span class="hits">42</span>
1745
1811
 
1746
1812
  <code class="ruby"> value &amp;&amp;= options[:class].new(value)</code>
1747
1813
  </li>
1748
1814
 
1749
- <li class="covered" data-hits="40" data-linenumber="30">
1750
- <span class="hits">40</span>
1815
+ <li class="covered" data-hits="42" data-linenumber="41">
1816
+ <span class="hits">42</span>
1751
1817
 
1752
1818
  <code class="ruby"> instance_variable_set(&quot;@#{name}&quot;, value)</code>
1753
1819
  </li>
1754
1820
 
1755
- <li class="never" data-hits="" data-linenumber="31">
1821
+ <li class="never" data-hits="" data-linenumber="42">
1756
1822
 
1757
1823
 
1758
1824
  <code class="ruby"> end</code>
1759
1825
  </li>
1760
1826
 
1761
- <li class="never" data-hits="" data-linenumber="32">
1827
+ <li class="never" data-hits="" data-linenumber="43">
1762
1828
 
1763
1829
 
1764
1830
  <code class="ruby"> end</code>
1765
1831
  </li>
1766
1832
 
1767
- <li class="never" data-hits="" data-linenumber="33">
1833
+ <li class="never" data-hits="" data-linenumber="44">
1768
1834
 
1769
1835
 
1770
1836
  <code class="ruby"> end</code>
1771
1837
  </li>
1772
1838
 
1773
- <li class="never" data-hits="" data-linenumber="34">
1839
+ <li class="never" data-hits="" data-linenumber="45">
1774
1840
 
1775
1841
 
1776
1842
  <code class="ruby"></code>
1777
1843
  </li>
1778
1844
 
1779
- <li class="covered" data-hits="2" data-linenumber="35">
1845
+ <li class="covered" data-hits="2" data-linenumber="46">
1780
1846
  <span class="hits">2</span>
1781
1847
 
1782
1848
  <code class="ruby"> def self.included(receiver)</code>
1783
1849
  </li>
1784
1850
 
1785
- <li class="covered" data-hits="13" data-linenumber="36">
1851
+ <li class="covered" data-hits="13" data-linenumber="47">
1786
1852
  <span class="hits">13</span>
1787
1853
 
1788
1854
  <code class="ruby"> receiver.extend ClassMethods</code>
1789
1855
  </li>
1790
1856
 
1791
- <li class="never" data-hits="" data-linenumber="37">
1857
+ <li class="never" data-hits="" data-linenumber="48">
1792
1858
 
1793
1859
 
1794
1860
  <code class="ruby"> end</code>
1795
1861
  </li>
1796
1862
 
1797
- <li class="never" data-hits="" data-linenumber="38">
1863
+ <li class="never" data-hits="" data-linenumber="49">
1798
1864
 
1799
1865
 
1800
1866
  <code class="ruby"> end</code>
1801
1867
  </li>
1802
1868
 
1803
- <li class="never" data-hits="" data-linenumber="39">
1869
+ <li class="never" data-hits="" data-linenumber="50">
1804
1870
 
1805
1871
 
1806
1872
  <code class="ruby">end</code>
@@ -1860,14 +1926,14 @@
1860
1926
  <code class="ruby"> attr_accessor(*all_attributes)</code>
1861
1927
  </li>
1862
1928
 
1863
- <li class="covered" data-hits="164" data-linenumber="7">
1864
- <span class="hits">164</span>
1929
+ <li class="covered" data-hits="177" data-linenumber="7">
1930
+ <span class="hits">177</span>
1865
1931
 
1866
1932
  <code class="ruby"> singleton_class.send(:define_method, :attributes_for) { |action| attributes[action] }</code>
1867
1933
  </li>
1868
1934
 
1869
- <li class="covered" data-hits="850" data-linenumber="8">
1870
- <span class="hits">850</span>
1935
+ <li class="covered" data-hits="900" data-linenumber="8">
1936
+ <span class="hits">900</span>
1871
1937
 
1872
1938
  <code class="ruby"> singleton_class.send(:define_method, :attributes) { all_attributes }</code>
1873
1939
  </li>
@@ -1902,20 +1968,20 @@
1902
1968
  <code class="ruby"> def attributes</code>
1903
1969
  </li>
1904
1970
 
1905
- <li class="covered" data-hits="208" data-linenumber="14">
1906
- <span class="hits">208</span>
1971
+ <li class="covered" data-hits="226" data-linenumber="14">
1972
+ <span class="hits">226</span>
1907
1973
 
1908
1974
  <code class="ruby"> self.class.attributes.inject({}) do |hash, attribute|</code>
1909
1975
  </li>
1910
1976
 
1911
- <li class="covered" data-hits="4328" data-linenumber="15">
1912
- <span class="hits">4328</span>
1977
+ <li class="covered" data-hits="4668" data-linenumber="15">
1978
+ <span class="hits">4668</span>
1913
1979
 
1914
1980
  <code class="ruby"> if (value = self.send(attribute)).present?</code>
1915
1981
  </li>
1916
1982
 
1917
- <li class="covered" data-hits="2066" data-linenumber="16">
1918
- <span class="hits">2066</span>
1983
+ <li class="covered" data-hits="2216" data-linenumber="16">
1984
+ <span class="hits">2216</span>
1919
1985
 
1920
1986
  <code class="ruby"> hash[attribute] = value.respond_to?(:attributes_for) ? value.attributes_for(:as_association) : value</code>
1921
1987
  </li>
@@ -1926,8 +1992,8 @@
1926
1992
  <code class="ruby"> end</code>
1927
1993
  </li>
1928
1994
 
1929
- <li class="covered" data-hits="4328" data-linenumber="18">
1930
- <span class="hits">4328</span>
1995
+ <li class="covered" data-hits="4668" data-linenumber="18">
1996
+ <span class="hits">4668</span>
1931
1997
 
1932
1998
  <code class="ruby"> hash</code>
1933
1999
  </li>
@@ -1956,20 +2022,20 @@
1956
2022
  <code class="ruby"> def attributes_for(action)</code>
1957
2023
  </li>
1958
2024
 
1959
- <li class="covered" data-hits="151" data-linenumber="23">
1960
- <span class="hits">151</span>
2025
+ <li class="covered" data-hits="164" data-linenumber="23">
2026
+ <span class="hits">164</span>
1961
2027
 
1962
2028
  <code class="ruby"> attributes_for_action = attributes.slice(*self.class.attributes_for(action))</code>
1963
2029
  </li>
1964
2030
 
1965
- <li class="covered" data-hits="151" data-linenumber="24">
1966
- <span class="hits">151</span>
2031
+ <li class="covered" data-hits="164" data-linenumber="24">
2032
+ <span class="hits">164</span>
1967
2033
 
1968
2034
  <code class="ruby"> attributes_for_action.slice!(*changed) unless action == :as_association</code>
1969
2035
  </li>
1970
2036
 
1971
- <li class="covered" data-hits="151" data-linenumber="25">
1972
- <span class="hits">151</span>
2037
+ <li class="covered" data-hits="164" data-linenumber="25">
2038
+ <span class="hits">164</span>
1973
2039
 
1974
2040
  <code class="ruby"> attributes_for_action</code>
1975
2041
  </li>
@@ -1992,14 +2058,14 @@
1992
2058
  <code class="ruby"> def assign_attributes(hash)</code>
1993
2059
  </li>
1994
2060
 
1995
- <li class="covered" data-hits="621" data-linenumber="29">
1996
- <span class="hits">621</span>
2061
+ <li class="covered" data-hits="653" data-linenumber="29">
2062
+ <span class="hits">653</span>
1997
2063
 
1998
2064
  <code class="ruby"> hash.each do |attribute, value|</code>
1999
2065
  </li>
2000
2066
 
2001
- <li class="covered" data-hits="6493" data-linenumber="30">
2002
- <span class="hits">6493</span>
2067
+ <li class="covered" data-hits="6948" data-linenumber="30">
2068
+ <span class="hits">6948</span>
2003
2069
 
2004
2070
  <code class="ruby"> send(&quot;#{attribute}=&quot;, value) if respond_to?(&quot;#{attribute}=&quot;)</code>
2005
2071
  </li>
@@ -2028,20 +2094,20 @@
2028
2094
  <code class="ruby"> def extract_values(obj)</code>
2029
2095
  </li>
2030
2096
 
2031
- <li class="covered" data-hits="607" data-linenumber="35">
2032
- <span class="hits">607</span>
2097
+ <li class="covered" data-hits="639" data-linenumber="35">
2098
+ <span class="hits">639</span>
2033
2099
 
2034
2100
  <code class="ruby"> self.class.attributes.inject({}) do |hash, attr|</code>
2035
2101
  </li>
2036
2102
 
2037
- <li class="covered" data-hits="13268" data-linenumber="36">
2038
- <span class="hits">13268</span>
2103
+ <li class="covered" data-hits="13942" data-linenumber="36">
2104
+ <span class="hits">13942</span>
2039
2105
 
2040
2106
  <code class="ruby"> hash[attr] = obj.send(attr) if obj.respond_to?(attr)</code>
2041
2107
  </li>
2042
2108
 
2043
- <li class="covered" data-hits="13268" data-linenumber="37">
2044
- <span class="hits">13268</span>
2109
+ <li class="covered" data-hits="13942" data-linenumber="37">
2110
+ <span class="hits">13942</span>
2045
2111
 
2046
2112
  <code class="ruby"> hash</code>
2047
2113
  </li>
@@ -2070,8 +2136,8 @@
2070
2136
  <code class="ruby"> def changed</code>
2071
2137
  </li>
2072
2138
 
2073
- <li class="covered" data-hits="52" data-linenumber="42">
2074
- <span class="hits">52</span>
2139
+ <li class="covered" data-hits="57" data-linenumber="42">
2140
+ <span class="hits">57</span>
2075
2141
 
2076
2142
  <code class="ruby"> new_record? ? changed_for_new_record : changed_for_persisted</code>
2077
2143
  </li>
@@ -2100,14 +2166,14 @@
2100
2166
  <code class="ruby"> attributes.map do |attribute, value|</code>
2101
2167
  </li>
2102
2168
 
2103
- <li class="covered" data-hits="192" data-linenumber="47">
2104
- <span class="hits">192</span>
2169
+ <li class="covered" data-hits="210" data-linenumber="47">
2170
+ <span class="hits">210</span>
2105
2171
 
2106
2172
  <code class="ruby"> attribute if value.present?</code>
2107
2173
  </li>
2108
2174
 
2109
- <li class="covered" data-hits="40" data-linenumber="48">
2110
- <span class="hits">40</span>
2175
+ <li class="covered" data-hits="45" data-linenumber="48">
2176
+ <span class="hits">45</span>
2111
2177
 
2112
2178
  <code class="ruby"> end.compact</code>
2113
2179
  </li>
@@ -2136,10 +2202,10 @@
2136
2202
  <code class="ruby"> attributes.map do |attribute, value|</code>
2137
2203
  </li>
2138
2204
 
2139
- <li class="covered" data-hits="211" data-linenumber="53">
2140
- <span class="hits">211</span>
2205
+ <li class="covered" data-hits="213" data-linenumber="53">
2206
+ <span class="hits">213</span>
2141
2207
 
2142
- <code class="ruby"> attribute if value != raw_object.send(attribute)</code>
2208
+ <code class="ruby"> attribute if !raw_object.respond_to?(attribute) || value != raw_object.send(attribute)</code>
2143
2209
  </li>
2144
2210
 
2145
2211
  <li class="covered" data-hits="12" data-linenumber="54">
@@ -2250,8 +2316,8 @@
2250
2316
  <code class="ruby"> def self.braintree_model_name</code>
2251
2317
  </li>
2252
2318
 
2253
- <li class="covered" data-hits="77" data-linenumber="4">
2254
- <span class="hits">77</span>
2319
+ <li class="covered" data-hits="81" data-linenumber="4">
2320
+ <span class="hits">81</span>
2255
2321
 
2256
2322
  <code class="ruby"> superclass.braintree_model_name</code>
2257
2323
  </li>
@@ -2508,8 +2574,8 @@
2508
2574
  <code class="ruby"> def id</code>
2509
2575
  </li>
2510
2576
 
2511
- <li class="covered" data-hits="36" data-linenumber="37">
2512
- <span class="hits">36</span>
2577
+ <li class="covered" data-hits="38" data-linenumber="37">
2578
+ <span class="hits">38</span>
2513
2579
 
2514
2580
  <code class="ruby"> token</code>
2515
2581
  </li>
@@ -2532,8 +2598,8 @@
2532
2598
  <code class="ruby"> def expired</code>
2533
2599
  </li>
2534
2600
 
2535
- <li class="covered" data-hits="49" data-linenumber="41">
2536
- <span class="hits">49</span>
2601
+ <li class="covered" data-hits="51" data-linenumber="41">
2602
+ <span class="hits">51</span>
2537
2603
 
2538
2604
  <code class="ruby"> @expired</code>
2539
2605
  </li>
@@ -2556,8 +2622,8 @@
2556
2622
  <code class="ruby"> def default</code>
2557
2623
  </li>
2558
2624
 
2559
- <li class="covered" data-hits="54" data-linenumber="45">
2560
- <span class="hits">54</span>
2625
+ <li class="covered" data-hits="56" data-linenumber="45">
2626
+ <span class="hits">56</span>
2561
2627
 
2562
2628
  <code class="ruby"> @default</code>
2563
2629
  </li>
@@ -2658,8 +2724,8 @@
2658
2724
  <code class="ruby"> def id</code>
2659
2725
  </li>
2660
2726
 
2661
- <li class="covered" data-hits="6" data-linenumber="62">
2662
- <span class="hits">6</span>
2727
+ <li class="covered" data-hits="16" data-linenumber="62">
2728
+ <span class="hits">16</span>
2663
2729
 
2664
2730
  <code class="ruby"> token</code>
2665
2731
  </li>
@@ -2775,8 +2841,8 @@
2775
2841
  <h3>lib/braintree_rails/collection_association.rb</h3>
2776
2842
  <h4><span class="green">100.0 %</span> covered</h4>
2777
2843
  <div>
2778
- <b>30</b> relevant lines.
2779
- <span class="green"><b>30</b> lines covered</span> and
2844
+ <b>34</b> relevant lines.
2845
+ <span class="green"><b>34</b> lines covered</span> and
2780
2846
  <span class="red"><b>0</b> lines missed.</span>
2781
2847
  </div>
2782
2848
  </div>
@@ -2856,8 +2922,8 @@
2856
2922
  <code class="ruby"> methods.each do |method|</code>
2857
2923
  </li>
2858
2924
 
2859
- <li class="covered" data-hits="1344" data-linenumber="13">
2860
- <span class="hits">1344</span>
2925
+ <li class="covered" data-hits="1347" data-linenumber="13">
2926
+ <span class="hits">1347</span>
2861
2927
 
2862
2928
  <code class="ruby"> define_method(method) { |*args, &amp;block| load!; super(*args, &amp;block) }</code>
2863
2929
  </li>
@@ -2898,8 +2964,8 @@
2898
2964
  <code class="ruby"> def initialize(collection)</code>
2899
2965
  </li>
2900
2966
 
2901
- <li class="covered" data-hits="68" data-linenumber="20">
2902
- <span class="hits">68</span>
2967
+ <li class="covered" data-hits="72" data-linenumber="20">
2968
+ <span class="hits">72</span>
2903
2969
 
2904
2970
  <code class="ruby"> super(self.collection = (collection || []))</code>
2905
2971
  </li>
@@ -2946,8 +3012,8 @@
2946
3012
  <code class="ruby"> def build(params = {})</code>
2947
3013
  </li>
2948
3014
 
2949
- <li class="covered" data-hits="21" data-linenumber="28">
2950
- <span class="hits">21</span>
3015
+ <li class="covered" data-hits="22" data-linenumber="28">
3016
+ <span class="hits">22</span>
2951
3017
 
2952
3018
  <code class="ruby"> model_class.new(default_options.merge(params))</code>
2953
3019
  </li>
@@ -2994,8 +3060,8 @@
2994
3060
  <code class="ruby"> def create!(params = {})</code>
2995
3061
  </li>
2996
3062
 
2997
- <li class="covered" data-hits="20" data-linenumber="36">
2998
- <span class="hits">20</span>
3063
+ <li class="covered" data-hits="22" data-linenumber="36">
3064
+ <span class="hits">22</span>
2999
3065
 
3000
3066
  <code class="ruby"> build(params).tap { |model| push(model) if model.save! }</code>
3001
3067
  </li>
@@ -3018,8 +3084,8 @@
3018
3084
  <code class="ruby"> def model_class</code>
3019
3085
  </li>
3020
3086
 
3021
- <li class="covered" data-hits="79" data-linenumber="40">
3022
- <span class="hits">79</span>
3087
+ <li class="covered" data-hits="82" data-linenumber="40">
3088
+ <span class="hits">82</span>
3023
3089
 
3024
3090
  <code class="ruby"> self.class.name.singularize.constantize</code>
3025
3091
  </li>
@@ -3042,20 +3108,20 @@
3042
3108
  <code class="ruby"> def load!</code>
3043
3109
  </li>
3044
3110
 
3045
- <li class="covered" data-hits="75" data-linenumber="44">
3046
- <span class="hits">75</span>
3111
+ <li class="covered" data-hits="77" data-linenumber="44">
3112
+ <span class="hits">77</span>
3047
3113
 
3048
3114
  <code class="ruby"> return if loaded</code>
3049
3115
  </li>
3050
3116
 
3051
- <li class="covered" data-hits="49" data-linenumber="45">
3052
- <span class="hits">49</span>
3117
+ <li class="covered" data-hits="52" data-linenumber="45">
3118
+ <span class="hits">52</span>
3053
3119
 
3054
3120
  <code class="ruby"> self.loaded = true</code>
3055
3121
  </li>
3056
3122
 
3057
- <li class="covered" data-hits="107" data-linenumber="46">
3058
- <span class="hits">107</span>
3123
+ <li class="covered" data-hits="112" data-linenumber="46">
3124
+ <span class="hits">112</span>
3059
3125
 
3060
3126
  <code class="ruby"> __setobj__(collection.map{|model| model_class.new(model)})</code>
3061
3127
  </li>
@@ -3069,46 +3135,82 @@
3069
3135
  <li class="never" data-hits="" data-linenumber="48">
3070
3136
 
3071
3137
 
3138
+ <code class="ruby"></code>
3139
+ </li>
3140
+
3141
+ <li class="covered" data-hits="2" data-linenumber="49">
3142
+ <span class="hits">2</span>
3143
+
3144
+ <code class="ruby"> def reload</code>
3145
+ </li>
3146
+
3147
+ <li class="covered" data-hits="1" data-linenumber="50">
3148
+ <span class="hits">1</span>
3149
+
3150
+ <code class="ruby"> self.loaded = false</code>
3151
+ </li>
3152
+
3153
+ <li class="covered" data-hits="1" data-linenumber="51">
3154
+ <span class="hits">1</span>
3155
+
3156
+ <code class="ruby"> self.load!</code>
3157
+ </li>
3158
+
3159
+ <li class="covered" data-hits="1" data-linenumber="52">
3160
+ <span class="hits">1</span>
3161
+
3162
+ <code class="ruby"> self</code>
3163
+ </li>
3164
+
3165
+ <li class="never" data-hits="" data-linenumber="53">
3166
+
3167
+
3168
+ <code class="ruby"> end</code>
3169
+ </li>
3170
+
3171
+ <li class="never" data-hits="" data-linenumber="54">
3172
+
3173
+
3072
3174
  <code class="ruby"> end</code>
3073
3175
  </li>
3074
3176
 
3075
- <li class="never" data-hits="" data-linenumber="49">
3177
+ <li class="never" data-hits="" data-linenumber="55">
3076
3178
 
3077
3179
 
3078
3180
  <code class="ruby"></code>
3079
3181
  </li>
3080
3182
 
3081
- <li class="covered" data-hits="2" data-linenumber="50">
3183
+ <li class="covered" data-hits="2" data-linenumber="56">
3082
3184
  <span class="hits">2</span>
3083
3185
 
3084
3186
  <code class="ruby"> def self.included(receiver)</code>
3085
3187
  </li>
3086
3188
 
3087
- <li class="covered" data-hits="10" data-linenumber="51">
3189
+ <li class="covered" data-hits="10" data-linenumber="57">
3088
3190
  <span class="hits">10</span>
3089
3191
 
3090
3192
  <code class="ruby"> receiver.extend ClassMethods</code>
3091
3193
  </li>
3092
3194
 
3093
- <li class="covered" data-hits="10" data-linenumber="52">
3195
+ <li class="covered" data-hits="10" data-linenumber="58">
3094
3196
  <span class="hits">10</span>
3095
3197
 
3096
3198
  <code class="ruby"> receiver.send :include, InstanceMethods</code>
3097
3199
  </li>
3098
3200
 
3099
- <li class="never" data-hits="" data-linenumber="53">
3201
+ <li class="never" data-hits="" data-linenumber="59">
3100
3202
 
3101
3203
 
3102
3204
  <code class="ruby"> end</code>
3103
3205
  </li>
3104
3206
 
3105
- <li class="never" data-hits="" data-linenumber="54">
3207
+ <li class="never" data-hits="" data-linenumber="60">
3106
3208
 
3107
3209
 
3108
3210
  <code class="ruby"> end</code>
3109
3211
  </li>
3110
3212
 
3111
- <li class="never" data-hits="" data-linenumber="55">
3213
+ <li class="never" data-hits="" data-linenumber="61">
3112
3214
 
3113
3215
 
3114
3216
  <code class="ruby">end</code>
@@ -3414,26 +3516,26 @@
3414
3516
  <code class="ruby"> def ensure_model(model)</code>
3415
3517
  </li>
3416
3518
 
3417
- <li class="covered" data-hits="126" data-linenumber="24">
3418
- <span class="hits">126</span>
3519
+ <li class="covered" data-hits="140" data-linenumber="24">
3520
+ <span class="hits">140</span>
3419
3521
 
3420
3522
  <code class="ruby"> if Braintree::Transaction::CreditCardDetails === model</code>
3421
3523
  </li>
3422
3524
 
3423
- <li class="covered" data-hits="6" data-linenumber="25">
3424
- <span class="hits">6</span>
3525
+ <li class="covered" data-hits="16" data-linenumber="25">
3526
+ <span class="hits">16</span>
3425
3527
 
3426
3528
  <code class="ruby"> assign_attributes(extract_values(model))</code>
3427
3529
  </li>
3428
3530
 
3429
- <li class="covered" data-hits="6" data-linenumber="26">
3430
- <span class="hits">6</span>
3531
+ <li class="covered" data-hits="16" data-linenumber="26">
3532
+ <span class="hits">16</span>
3431
3533
 
3432
3534
  <code class="ruby"> self.persisted = model.id.present?</code>
3433
3535
  </li>
3434
3536
 
3435
- <li class="covered" data-hits="6" data-linenumber="27">
3436
- <span class="hits">6</span>
3537
+ <li class="covered" data-hits="16" data-linenumber="27">
3538
+ <span class="hits">16</span>
3437
3539
 
3438
3540
  <code class="ruby"> model</code>
3439
3541
  </li>
@@ -3444,8 +3546,8 @@
3444
3546
  <code class="ruby"> else</code>
3445
3547
  </li>
3446
3548
 
3447
- <li class="covered" data-hits="120" data-linenumber="29">
3448
- <span class="hits">120</span>
3549
+ <li class="covered" data-hits="124" data-linenumber="29">
3550
+ <span class="hits">124</span>
3449
3551
 
3450
3552
  <code class="ruby"> super</code>
3451
3553
  </li>
@@ -3546,8 +3648,8 @@
3546
3648
  <code class="ruby"> def billing_address=(value)</code>
3547
3649
  </li>
3548
3650
 
3549
- <li class="covered" data-hits="93" data-linenumber="46">
3550
- <span class="hits">93</span>
3651
+ <li class="covered" data-hits="97" data-linenumber="46">
3652
+ <span class="hits">97</span>
3551
3653
 
3552
3654
  <code class="ruby"> @billing_address = value &amp;&amp; BillingAddress.new(value)</code>
3553
3655
  </li>
@@ -3600,14 +3702,14 @@
3600
3702
  <code class="ruby"> def attributes_for(action)</code>
3601
3703
  </li>
3602
3704
 
3603
- <li class="covered" data-hits="35" data-linenumber="55">
3604
- <span class="hits">35</span>
3705
+ <li class="covered" data-hits="38" data-linenumber="55">
3706
+ <span class="hits">38</span>
3605
3707
 
3606
3708
  <code class="ruby"> super.tap do |attributes|</code>
3607
3709
  </li>
3608
3710
 
3609
- <li class="covered" data-hits="35" data-linenumber="56">
3610
- <span class="hits">35</span>
3711
+ <li class="covered" data-hits="38" data-linenumber="56">
3712
+ <span class="hits">38</span>
3611
3713
 
3612
3714
  <code class="ruby"> if attributes[:billing_address] &amp;&amp; action == :update</code>
3613
3715
  </li>
@@ -3648,8 +3750,8 @@
3648
3750
  <code class="ruby"> def clear_encryped_attributes</code>
3649
3751
  </li>
3650
3752
 
3651
- <li class="covered" data-hits="29" data-linenumber="63">
3652
- <span class="hits">29</span>
3753
+ <li class="covered" data-hits="31" data-linenumber="63">
3754
+ <span class="hits">31</span>
3653
3755
 
3654
3756
  <code class="ruby"> yield if block_given?</code>
3655
3757
  </li>
@@ -3660,20 +3762,20 @@
3660
3762
  <code class="ruby"> ensure</code>
3661
3763
  </li>
3662
3764
 
3663
- <li class="covered" data-hits="29" data-linenumber="65">
3664
- <span class="hits">29</span>
3765
+ <li class="covered" data-hits="31" data-linenumber="65">
3766
+ <span class="hits">31</span>
3665
3767
 
3666
3768
  <code class="ruby"> return unless Configuration.mode == Configuration::Mode::JS</code>
3667
3769
  </li>
3668
3770
 
3669
- <li class="covered" data-hits="29" data-linenumber="66">
3670
- <span class="hits">29</span>
3771
+ <li class="covered" data-hits="31" data-linenumber="66">
3772
+ <span class="hits">31</span>
3671
3773
 
3672
3774
  <code class="ruby"> [:number=, :cvv=].each do |encrypted_attribute|</code>
3673
3775
  </li>
3674
3776
 
3675
- <li class="covered" data-hits="58" data-linenumber="67">
3676
- <span class="hits">58</span>
3777
+ <li class="covered" data-hits="62" data-linenumber="67">
3778
+ <span class="hits">62</span>
3677
3779
 
3678
3780
  <code class="ruby"> self.send(encrypted_attribute, nil)</code>
3679
3781
  </li>
@@ -3756,8 +3858,8 @@
3756
3858
  <code class="ruby"> [:number, :presence =&gt; true, :allow_blank =&gt; false, :if =&gt; :new_record?],</code>
3757
3859
  </li>
3758
3860
 
3759
- <li class="covered" data-hits="216" data-linenumber="7">
3760
- <span class="hits">216</span>
3861
+ <li class="covered" data-hits="222" data-linenumber="7">
3862
+ <span class="hits">222</span>
3761
3863
 
3762
3864
  <code class="ruby"> [:number, :numericality =&gt; {:only_integer =&gt; true}, :length =&gt; {:minimum =&gt; 12, :maximum =&gt; 19}, &#39;braintree_rails/luhn_10&#39; =&gt; true, :if =&gt; Proc.new { Configuration.mode == Configuration::Mode::S2S }],</code>
3763
3865
  </li>
@@ -3768,38 +3870,38 @@
3768
3870
  <code class="ruby"> [:cvv, :presence =&gt; true, :allow_blank =&gt; false, :if =&gt; :new_record?],</code>
3769
3871
  </li>
3770
3872
 
3771
- <li class="covered" data-hits="144" data-linenumber="9">
3772
- <span class="hits">144</span>
3873
+ <li class="covered" data-hits="148" data-linenumber="9">
3874
+ <span class="hits">148</span>
3773
3875
 
3774
3876
  <code class="ruby"> [:cvv, :numericality =&gt; {:only_integer =&gt; true}, :length =&gt; {:minimum =&gt; 3, :maximum =&gt; 4}, :if =&gt; Proc.new { Configuration.mode == Configuration::Mode::S2S }],</code>
3775
3877
  </li>
3776
3878
 
3777
- <li class="covered" data-hits="72" data-linenumber="10">
3778
- <span class="hits">72</span>
3879
+ <li class="covered" data-hits="74" data-linenumber="10">
3880
+ <span class="hits">74</span>
3779
3881
 
3780
3882
  <code class="ruby"> [:expiration_month, :presence =&gt; true, :if =&gt; Proc.new { |credit_card| credit_card.new_record? &amp;&amp; credit_card.expiration_date.blank? }],</code>
3781
3883
  </li>
3782
3884
 
3783
- <li class="covered" data-hits="72" data-linenumber="11">
3784
- <span class="hits">72</span>
3885
+ <li class="covered" data-hits="74" data-linenumber="11">
3886
+ <span class="hits">74</span>
3785
3887
 
3786
3888
  <code class="ruby"> [:expiration_year, :presence =&gt; true, :if =&gt; Proc.new { |credit_card| credit_card.new_record? &amp;&amp; credit_card.expiration_date.blank? }],</code>
3787
3889
  </li>
3788
3890
 
3789
- <li class="covered" data-hits="72" data-linenumber="12">
3790
- <span class="hits">72</span>
3891
+ <li class="covered" data-hits="74" data-linenumber="12">
3892
+ <span class="hits">74</span>
3791
3893
 
3792
3894
  <code class="ruby"> [:expiration_date, :presence =&gt; true, :if =&gt; Proc.new { |credit_card| credit_card.new_record? &amp;&amp; credit_card.expiration_month.blank? }],</code>
3793
3895
  </li>
3794
3896
 
3795
- <li class="covered" data-hits="72" data-linenumber="13">
3796
- <span class="hits">72</span>
3897
+ <li class="covered" data-hits="74" data-linenumber="13">
3898
+ <span class="hits">74</span>
3797
3899
 
3798
3900
  <code class="ruby"> [:expiration_month, :numericality =&gt; { :only_integer =&gt; true, :greater_than_or_equal_to =&gt; 1, :less_than_or_equal_to =&gt; 12 }, :if =&gt; Proc.new { Configuration.mode == Configuration::Mode::S2S }],</code>
3799
3901
  </li>
3800
3902
 
3801
- <li class="covered" data-hits="72" data-linenumber="14">
3802
- <span class="hits">72</span>
3903
+ <li class="covered" data-hits="74" data-linenumber="14">
3904
+ <span class="hits">74</span>
3803
3905
 
3804
3906
  <code class="ruby"> [:expiration_year, :numericality =&gt; { :only_integer =&gt; true, :greater_than_or_equal_to =&gt; 1976, :less_than_or_equal_to =&gt; 2200 }, :if =&gt; Proc.new { Configuration.mode == Configuration::Mode::S2S }],</code>
3805
3907
  </li>
@@ -3822,8 +3924,8 @@
3822
3924
  <code class="ruby"> def validate(credit_card)</code>
3823
3925
  </li>
3824
3926
 
3825
- <li class="covered" data-hits="72" data-linenumber="18">
3826
- <span class="hits">72</span>
3927
+ <li class="covered" data-hits="74" data-linenumber="18">
3928
+ <span class="hits">74</span>
3827
3929
 
3828
3930
  <code class="ruby"> have_valid_billing_address(credit_card) if validate_billing_address?</code>
3829
3931
  </li>
@@ -3846,20 +3948,20 @@
3846
3948
  <code class="ruby"> def have_valid_billing_address(credit_card)</code>
3847
3949
  </li>
3848
3950
 
3849
- <li class="covered" data-hits="72" data-linenumber="22">
3850
- <span class="hits">72</span>
3951
+ <li class="covered" data-hits="74" data-linenumber="22">
3952
+ <span class="hits">74</span>
3851
3953
 
3852
3954
  <code class="ruby"> credit_card.instance_eval do</code>
3853
3955
  </li>
3854
3956
 
3855
- <li class="covered" data-hits="72" data-linenumber="23">
3856
- <span class="hits">72</span>
3957
+ <li class="covered" data-hits="74" data-linenumber="23">
3958
+ <span class="hits">74</span>
3857
3959
 
3858
3960
  <code class="ruby"> errors.add(:billing_address, &quot;is empty&quot;) and return if billing_address.blank?</code>
3859
3961
  </li>
3860
3962
 
3861
- <li class="covered" data-hits="34" data-linenumber="24">
3862
- <span class="hits">34</span>
3963
+ <li class="covered" data-hits="36" data-linenumber="24">
3964
+ <span class="hits">36</span>
3863
3965
 
3864
3966
  <code class="ruby"> if billing_address.invalid?</code>
3865
3967
  </li>
@@ -3918,8 +4020,8 @@
3918
4020
  <code class="ruby"> def validate_billing_address?</code>
3919
4021
  </li>
3920
4022
 
3921
- <li class="covered" data-hits="72" data-linenumber="34">
3922
- <span class="hits">72</span>
4023
+ <li class="covered" data-hits="74" data-linenumber="34">
4024
+ <span class="hits">74</span>
3923
4025
 
3924
4026
  <code class="ruby"> Configuration.require_postal_code || Configuration.require_street_address</code>
3925
4027
  </li>
@@ -3990,14 +4092,14 @@
3990
4092
  <code class="ruby"> def initialize(customer)</code>
3991
4093
  </li>
3992
4094
 
3993
- <li class="covered" data-hits="25" data-linenumber="6">
3994
- <span class="hits">25</span>
4095
+ <li class="covered" data-hits="28" data-linenumber="6">
4096
+ <span class="hits">28</span>
3995
4097
 
3996
4098
  <code class="ruby"> @customer = customer</code>
3997
4099
  </li>
3998
4100
 
3999
- <li class="covered" data-hits="25" data-linenumber="7">
4000
- <span class="hits">25</span>
4101
+ <li class="covered" data-hits="28" data-linenumber="7">
4102
+ <span class="hits">28</span>
4001
4103
 
4002
4104
  <code class="ruby"> super(customer.raw_object.credit_cards)</code>
4003
4105
  </li>
@@ -4020,8 +4122,8 @@
4020
4122
  <code class="ruby"> def default_options</code>
4021
4123
  </li>
4022
4124
 
4023
- <li class="covered" data-hits="8" data-linenumber="11">
4024
- <span class="hits">8</span>
4125
+ <li class="covered" data-hits="9" data-linenumber="11">
4126
+ <span class="hits">9</span>
4025
4127
 
4026
4128
  <code class="ruby"> {:customer_id =&gt; @customer.id}</code>
4027
4129
  </li>
@@ -4158,26 +4260,26 @@
4158
4260
  <code class="ruby"> def ensure_model(model)</code>
4159
4261
  </li>
4160
4262
 
4161
- <li class="covered" data-hits="117" data-linenumber="17">
4162
- <span class="hits">117</span>
4263
+ <li class="covered" data-hits="128" data-linenumber="17">
4264
+ <span class="hits">128</span>
4163
4265
 
4164
4266
  <code class="ruby"> if Braintree::Transaction::CustomerDetails === model</code>
4165
4267
  </li>
4166
4268
 
4167
- <li class="covered" data-hits="1" data-linenumber="18">
4168
- <span class="hits">1</span>
4269
+ <li class="covered" data-hits="3" data-linenumber="18">
4270
+ <span class="hits">3</span>
4169
4271
 
4170
4272
  <code class="ruby"> assign_attributes(extract_values(model))</code>
4171
4273
  </li>
4172
4274
 
4173
- <li class="covered" data-hits="1" data-linenumber="19">
4174
- <span class="hits">1</span>
4275
+ <li class="covered" data-hits="3" data-linenumber="19">
4276
+ <span class="hits">3</span>
4175
4277
 
4176
4278
  <code class="ruby"> self.persisted = model.id.present?</code>
4177
4279
  </li>
4178
4280
 
4179
- <li class="covered" data-hits="1" data-linenumber="20">
4180
- <span class="hits">1</span>
4281
+ <li class="covered" data-hits="3" data-linenumber="20">
4282
+ <span class="hits">3</span>
4181
4283
 
4182
4284
  <code class="ruby"> model</code>
4183
4285
  </li>
@@ -4188,8 +4290,8 @@
4188
4290
  <code class="ruby"> else</code>
4189
4291
  </li>
4190
4292
 
4191
- <li class="covered" data-hits="116" data-linenumber="22">
4192
- <span class="hits">116</span>
4293
+ <li class="covered" data-hits="125" data-linenumber="22">
4294
+ <span class="hits">125</span>
4193
4295
 
4194
4296
  <code class="ruby"> super</code>
4195
4297
  </li>
@@ -4593,8 +4695,8 @@
4593
4695
  <h3>lib/braintree_rails/model.rb</h3>
4594
4696
  <h4><span class="green">100.0 %</span> covered</h4>
4595
4697
  <div>
4596
- <b>45</b> relevant lines.
4597
- <span class="green"><b>45</b> lines covered</span> and
4698
+ <b>46</b> relevant lines.
4699
+ <span class="green"><b>46</b> lines covered</span> and
4598
4700
  <span class="red"><b>0</b> lines missed.</span>
4599
4701
  </div>
4600
4702
  </div>
@@ -4716,8 +4818,8 @@
4716
4818
  <code class="ruby"> def initialize(model = {})</code>
4717
4819
  </li>
4718
4820
 
4719
- <li class="covered" data-hits="554" data-linenumber="20">
4720
- <span class="hits">554</span>
4821
+ <li class="covered" data-hits="579" data-linenumber="20">
4822
+ <span class="hits">579</span>
4721
4823
 
4722
4824
  <code class="ruby"> init(model)</code>
4723
4825
  </li>
@@ -4740,8 +4842,8 @@
4740
4842
  <code class="ruby"> def ensure_model(model)</code>
4741
4843
  </li>
4742
4844
 
4743
- <li class="covered" data-hits="598" data-linenumber="24">
4744
- <span class="hits">598</span>
4845
+ <li class="covered" data-hits="618" data-linenumber="24">
4846
+ <span class="hits">618</span>
4745
4847
 
4746
4848
  <code class="ruby"> model = case model</code>
4747
4849
  </li>
@@ -4770,14 +4872,14 @@
4770
4872
  <code class="ruby"> when self.class.braintree_model_class</code>
4771
4873
  </li>
4772
4874
 
4773
- <li class="covered" data-hits="205" data-linenumber="29">
4774
- <span class="hits">205</span>
4875
+ <li class="covered" data-hits="216" data-linenumber="29">
4876
+ <span class="hits">216</span>
4775
4877
 
4776
4878
  <code class="ruby"> self.persisted = model.id.present?</code>
4777
4879
  </li>
4778
4880
 
4779
- <li class="covered" data-hits="205" data-linenumber="30">
4780
- <span class="hits">205</span>
4881
+ <li class="covered" data-hits="216" data-linenumber="30">
4882
+ <span class="hits">216</span>
4781
4883
 
4782
4884
  <code class="ruby"> model</code>
4783
4885
  </li>
@@ -4788,14 +4890,14 @@
4788
4890
  <code class="ruby"> when Hash</code>
4789
4891
  </li>
4790
4892
 
4791
- <li class="covered" data-hits="288" data-linenumber="32">
4792
- <span class="hits">288</span>
4893
+ <li class="covered" data-hits="294" data-linenumber="32">
4894
+ <span class="hits">294</span>
4793
4895
 
4794
4896
  <code class="ruby"> self.persisted = false</code>
4795
4897
  </li>
4796
4898
 
4797
- <li class="covered" data-hits="288" data-linenumber="33">
4798
- <span class="hits">288</span>
4899
+ <li class="covered" data-hits="294" data-linenumber="33">
4900
+ <span class="hits">294</span>
4799
4901
 
4800
4902
  <code class="ruby"> OpenStruct.new(model)</code>
4801
4903
  </li>
@@ -4806,14 +4908,14 @@
4806
4908
  <code class="ruby"> else</code>
4807
4909
  </li>
4808
4910
 
4809
- <li class="covered" data-hits="65" data-linenumber="35">
4810
- <span class="hits">65</span>
4911
+ <li class="covered" data-hits="68" data-linenumber="35">
4912
+ <span class="hits">68</span>
4811
4913
 
4812
4914
  <code class="ruby"> self.persisted = model.respond_to?(:persisted?) ? model.persisted? : false</code>
4813
4915
  </li>
4814
4916
 
4815
- <li class="covered" data-hits="65" data-linenumber="36">
4816
- <span class="hits">65</span>
4917
+ <li class="covered" data-hits="68" data-linenumber="36">
4918
+ <span class="hits">68</span>
4817
4919
 
4818
4920
  <code class="ruby"> model</code>
4819
4921
  </li>
@@ -4824,14 +4926,14 @@
4824
4926
  <code class="ruby"> end</code>
4825
4927
  </li>
4826
4928
 
4827
- <li class="covered" data-hits="598" data-linenumber="38">
4828
- <span class="hits">598</span>
4929
+ <li class="covered" data-hits="618" data-linenumber="38">
4930
+ <span class="hits">618</span>
4829
4931
 
4830
4932
  <code class="ruby"> assign_attributes(extract_values(model))</code>
4831
4933
  </li>
4832
4934
 
4833
- <li class="covered" data-hits="598" data-linenumber="39">
4834
- <span class="hits">598</span>
4935
+ <li class="covered" data-hits="618" data-linenumber="39">
4936
+ <span class="hits">618</span>
4835
4937
 
4836
4938
  <code class="ruby"> model</code>
4837
4939
  </li>
@@ -4968,85 +5070,91 @@
4968
5070
  <code class="ruby"> def init(model)</code>
4969
5071
  </li>
4970
5072
 
4971
- <li class="covered" data-hits="607" data-linenumber="62">
4972
- <span class="hits">607</span>
5073
+ <li class="covered" data-hits="2924" data-linenumber="62">
5074
+ <span class="hits">2924</span>
5075
+
5076
+ <code class="ruby"> self.class.associations.each {|association| instance_variable_set(&quot;@#{association}&quot;, nil)}</code>
5077
+ </li>
5078
+
5079
+ <li class="covered" data-hits="639" data-linenumber="63">
5080
+ <span class="hits">639</span>
4973
5081
 
4974
5082
  <code class="ruby"> @raw_object = ensure_model(model)</code>
4975
5083
  </li>
4976
5084
 
4977
- <li class="never" data-hits="" data-linenumber="63">
5085
+ <li class="never" data-hits="" data-linenumber="64">
4978
5086
 
4979
5087
 
4980
5088
  <code class="ruby"> end</code>
4981
5089
  </li>
4982
5090
 
4983
- <li class="never" data-hits="" data-linenumber="64">
5091
+ <li class="never" data-hits="" data-linenumber="65">
4984
5092
 
4985
5093
 
4986
5094
  <code class="ruby"> end</code>
4987
5095
  </li>
4988
5096
 
4989
- <li class="never" data-hits="" data-linenumber="65">
5097
+ <li class="never" data-hits="" data-linenumber="66">
4990
5098
 
4991
5099
 
4992
5100
  <code class="ruby"></code>
4993
5101
  </li>
4994
5102
 
4995
- <li class="covered" data-hits="2" data-linenumber="66">
5103
+ <li class="covered" data-hits="2" data-linenumber="67">
4996
5104
  <span class="hits">2</span>
4997
5105
 
4998
5106
  <code class="ruby"> def self.included(receiver)</code>
4999
5107
  </li>
5000
5108
 
5001
- <li class="covered" data-hits="13" data-linenumber="67">
5109
+ <li class="covered" data-hits="13" data-linenumber="68">
5002
5110
  <span class="hits">13</span>
5003
5111
 
5004
5112
  <code class="ruby"> receiver.send :include, BraintreeRails::Attributes</code>
5005
5113
  </li>
5006
5114
 
5007
- <li class="covered" data-hits="13" data-linenumber="68">
5115
+ <li class="covered" data-hits="13" data-linenumber="69">
5008
5116
  <span class="hits">13</span>
5009
5117
 
5010
5118
  <code class="ruby"> receiver.send :include, BraintreeRails::Association</code>
5011
5119
  </li>
5012
5120
 
5013
- <li class="covered" data-hits="13" data-linenumber="69">
5121
+ <li class="covered" data-hits="13" data-linenumber="70">
5014
5122
  <span class="hits">13</span>
5015
5123
 
5016
5124
  <code class="ruby"> receiver.send :include, BraintreeRails::Persistence</code>
5017
5125
  </li>
5018
5126
 
5019
- <li class="covered" data-hits="13" data-linenumber="70">
5127
+ <li class="covered" data-hits="13" data-linenumber="71">
5020
5128
  <span class="hits">13</span>
5021
5129
 
5022
5130
  <code class="ruby"> receiver.send :include, BraintreeRails::Validations</code>
5023
5131
  </li>
5024
5132
 
5025
- <li class="covered" data-hits="13" data-linenumber="71">
5133
+ <li class="covered" data-hits="13" data-linenumber="72">
5026
5134
  <span class="hits">13</span>
5027
5135
 
5028
5136
  <code class="ruby"> receiver.send :include, InstanceMethods</code>
5029
5137
  </li>
5030
5138
 
5031
- <li class="covered" data-hits="13" data-linenumber="72">
5139
+ <li class="covered" data-hits="13" data-linenumber="73">
5032
5140
  <span class="hits">13</span>
5033
5141
 
5034
5142
  <code class="ruby"> receiver.extend ClassMethods</code>
5035
5143
  </li>
5036
5144
 
5037
- <li class="never" data-hits="" data-linenumber="73">
5145
+ <li class="never" data-hits="" data-linenumber="74">
5038
5146
 
5039
5147
 
5040
5148
  <code class="ruby"> end</code>
5041
5149
  </li>
5042
5150
 
5043
- <li class="never" data-hits="" data-linenumber="74">
5151
+ <li class="never" data-hits="" data-linenumber="75">
5044
5152
 
5045
5153
 
5046
5154
  <code class="ruby"> end</code>
5047
5155
  </li>
5048
5156
 
5049
- <li class="never" data-hits="" data-linenumber="75">
5157
+ <li class="never" data-hits="" data-linenumber="76">
5050
5158
 
5051
5159
 
5052
5160
  <code class="ruby">end</code>
@@ -5403,8 +5511,8 @@
5403
5511
  <h3>lib/braintree_rails/persistence.rb</h3>
5404
5512
  <h4><span class="green">100.0 %</span> covered</h4>
5405
5513
  <div>
5406
- <b>86</b> relevant lines.
5407
- <span class="green"><b>86</b> lines covered</span> and
5514
+ <b>89</b> relevant lines.
5515
+ <span class="green"><b>89</b> lines covered</span> and
5408
5516
  <span class="red"><b>0</b> lines missed.</span>
5409
5517
  </div>
5410
5518
  </div>
@@ -5460,8 +5568,8 @@
5460
5568
  <code class="ruby"> def create!(params)</code>
5461
5569
  </li>
5462
5570
 
5463
- <li class="covered" data-hits="32" data-linenumber="9">
5464
- <span class="hits">32</span>
5571
+ <li class="covered" data-hits="40" data-linenumber="9">
5572
+ <span class="hits">40</span>
5465
5573
 
5466
5574
  <code class="ruby"> new(params).tap { |new_record| new_record.save! }</code>
5467
5575
  </li>
@@ -5532,8 +5640,8 @@
5532
5640
  <code class="ruby"> def braintree_model_class</code>
5533
5641
  </li>
5534
5642
 
5535
- <li class="covered" data-hits="698" data-linenumber="21">
5536
- <span class="hits">698</span>
5643
+ <li class="covered" data-hits="725" data-linenumber="21">
5644
+ <span class="hits">725</span>
5537
5645
 
5538
5646
  <code class="ruby"> &quot;braintree/#{braintree_model_name}&quot;.camelize.constantize</code>
5539
5647
  </li>
@@ -5556,8 +5664,8 @@
5556
5664
  <code class="ruby"> def braintree_model_name</code>
5557
5665
  </li>
5558
5666
 
5559
- <li class="covered" data-hits="764" data-linenumber="25">
5560
- <span class="hits">764</span>
5667
+ <li class="covered" data-hits="796" data-linenumber="25">
5668
+ <span class="hits">796</span>
5561
5669
 
5562
5670
  <code class="ruby"> name.demodulize.underscore</code>
5563
5671
  </li>
@@ -5592,8 +5700,8 @@
5592
5700
  <code class="ruby"> def persisted?</code>
5593
5701
  </li>
5594
5702
 
5595
- <li class="covered" data-hits="1389" data-linenumber="31">
5596
- <span class="hits">1389</span>
5703
+ <li class="covered" data-hits="1426" data-linenumber="31">
5704
+ <span class="hits">1426</span>
5597
5705
 
5598
5706
  <code class="ruby"> !!persisted</code>
5599
5707
  </li>
@@ -5616,8 +5724,8 @@
5616
5724
  <code class="ruby"> def new_record?</code>
5617
5725
  </li>
5618
5726
 
5619
- <li class="covered" data-hits="1250" data-linenumber="35">
5620
- <span class="hits">1250</span>
5727
+ <li class="covered" data-hits="1282" data-linenumber="35">
5728
+ <span class="hits">1282</span>
5621
5729
 
5622
5730
  <code class="ruby"> !persisted?</code>
5623
5731
  </li>
@@ -5637,688 +5745,718 @@
5637
5745
  <li class="covered" data-hits="2" data-linenumber="38">
5638
5746
  <span class="hits">2</span>
5639
5747
 
5748
+ <code class="ruby"> def reload</code>
5749
+ </li>
5750
+
5751
+ <li class="covered" data-hits="2" data-linenumber="39">
5752
+ <span class="hits">2</span>
5753
+
5754
+ <code class="ruby"> init(self.class.braintree_model_class.find(id))</code>
5755
+ </li>
5756
+
5757
+ <li class="covered" data-hits="2" data-linenumber="40">
5758
+ <span class="hits">2</span>
5759
+
5760
+ <code class="ruby"> self</code>
5761
+ </li>
5762
+
5763
+ <li class="never" data-hits="" data-linenumber="41">
5764
+
5765
+
5766
+ <code class="ruby"> end</code>
5767
+ </li>
5768
+
5769
+ <li class="never" data-hits="" data-linenumber="42">
5770
+
5771
+
5772
+ <code class="ruby"></code>
5773
+ </li>
5774
+
5775
+ <li class="covered" data-hits="2" data-linenumber="43">
5776
+ <span class="hits">2</span>
5777
+
5640
5778
  <code class="ruby"> def save(*)</code>
5641
5779
  </li>
5642
5780
 
5643
- <li class="covered" data-hits="18" data-linenumber="39">
5781
+ <li class="covered" data-hits="18" data-linenumber="44">
5644
5782
  <span class="hits">18</span>
5645
5783
 
5646
5784
  <code class="ruby"> run_callbacks :save do</code>
5647
5785
  </li>
5648
5786
 
5649
- <li class="covered" data-hits="18" data-linenumber="40">
5787
+ <li class="covered" data-hits="18" data-linenumber="45">
5650
5788
  <span class="hits">18</span>
5651
5789
 
5652
5790
  <code class="ruby"> create_or_update</code>
5653
5791
  </li>
5654
5792
 
5655
- <li class="never" data-hits="" data-linenumber="41">
5793
+ <li class="never" data-hits="" data-linenumber="46">
5656
5794
 
5657
5795
 
5658
5796
  <code class="ruby"> end</code>
5659
5797
  </li>
5660
5798
 
5661
- <li class="never" data-hits="" data-linenumber="42">
5799
+ <li class="never" data-hits="" data-linenumber="47">
5662
5800
 
5663
5801
 
5664
5802
  <code class="ruby"> rescue RecordInvalid</code>
5665
5803
  </li>
5666
5804
 
5667
- <li class="covered" data-hits="1" data-linenumber="43">
5805
+ <li class="covered" data-hits="1" data-linenumber="48">
5668
5806
  <span class="hits">1</span>
5669
5807
 
5670
5808
  <code class="ruby"> false</code>
5671
5809
  </li>
5672
5810
 
5673
- <li class="never" data-hits="" data-linenumber="44">
5811
+ <li class="never" data-hits="" data-linenumber="49">
5674
5812
 
5675
5813
 
5676
5814
  <code class="ruby"> end</code>
5677
5815
  </li>
5678
5816
 
5679
- <li class="never" data-hits="" data-linenumber="45">
5817
+ <li class="never" data-hits="" data-linenumber="50">
5680
5818
 
5681
5819
 
5682
5820
  <code class="ruby"></code>
5683
5821
  </li>
5684
5822
 
5685
- <li class="covered" data-hits="2" data-linenumber="46">
5823
+ <li class="covered" data-hits="2" data-linenumber="51">
5686
5824
  <span class="hits">2</span>
5687
5825
 
5688
5826
  <code class="ruby"> def save!(*)</code>
5689
5827
  </li>
5690
5828
 
5691
- <li class="covered" data-hits="34" data-linenumber="47">
5692
- <span class="hits">34</span>
5829
+ <li class="covered" data-hits="39" data-linenumber="52">
5830
+ <span class="hits">39</span>
5693
5831
 
5694
5832
  <code class="ruby"> run_callbacks :save do</code>
5695
5833
  </li>
5696
5834
 
5697
- <li class="covered" data-hits="34" data-linenumber="48">
5698
- <span class="hits">34</span>
5835
+ <li class="covered" data-hits="39" data-linenumber="53">
5836
+ <span class="hits">39</span>
5699
5837
 
5700
5838
  <code class="ruby"> create_or_update!</code>
5701
5839
  </li>
5702
5840
 
5703
- <li class="never" data-hits="" data-linenumber="49">
5841
+ <li class="never" data-hits="" data-linenumber="54">
5704
5842
 
5705
5843
 
5706
5844
  <code class="ruby"> end</code>
5707
5845
  </li>
5708
5846
 
5709
- <li class="never" data-hits="" data-linenumber="50">
5847
+ <li class="never" data-hits="" data-linenumber="55">
5710
5848
 
5711
5849
 
5712
5850
  <code class="ruby"> end</code>
5713
5851
  </li>
5714
5852
 
5715
- <li class="never" data-hits="" data-linenumber="51">
5853
+ <li class="never" data-hits="" data-linenumber="56">
5716
5854
 
5717
5855
 
5718
5856
  <code class="ruby"></code>
5719
5857
  </li>
5720
5858
 
5721
- <li class="covered" data-hits="2" data-linenumber="52">
5859
+ <li class="covered" data-hits="2" data-linenumber="57">
5722
5860
  <span class="hits">2</span>
5723
5861
 
5724
5862
  <code class="ruby"> def update_attributes(attributes)</code>
5725
5863
  </li>
5726
5864
 
5727
- <li class="covered" data-hits="7" data-linenumber="53">
5865
+ <li class="covered" data-hits="7" data-linenumber="58">
5728
5866
  <span class="hits">7</span>
5729
5867
 
5730
5868
  <code class="ruby"> assign_attributes(attributes)</code>
5731
5869
  </li>
5732
5870
 
5733
- <li class="covered" data-hits="7" data-linenumber="54">
5871
+ <li class="covered" data-hits="7" data-linenumber="59">
5734
5872
  <span class="hits">7</span>
5735
5873
 
5736
5874
  <code class="ruby"> save</code>
5737
5875
  </li>
5738
5876
 
5739
- <li class="never" data-hits="" data-linenumber="55">
5877
+ <li class="never" data-hits="" data-linenumber="60">
5740
5878
 
5741
5879
 
5742
5880
  <code class="ruby"> end</code>
5743
5881
  </li>
5744
5882
 
5745
- <li class="never" data-hits="" data-linenumber="56">
5883
+ <li class="never" data-hits="" data-linenumber="61">
5746
5884
 
5747
5885
 
5748
5886
  <code class="ruby"></code>
5749
5887
  </li>
5750
5888
 
5751
- <li class="covered" data-hits="2" data-linenumber="57">
5889
+ <li class="covered" data-hits="2" data-linenumber="62">
5752
5890
  <span class="hits">2</span>
5753
5891
 
5754
5892
  <code class="ruby"> def update_attributes!(attributes)</code>
5755
5893
  </li>
5756
5894
 
5757
- <li class="covered" data-hits="6" data-linenumber="58">
5895
+ <li class="covered" data-hits="6" data-linenumber="63">
5758
5896
  <span class="hits">6</span>
5759
5897
 
5760
5898
  <code class="ruby"> assign_attributes(attributes)</code>
5761
5899
  </li>
5762
5900
 
5763
- <li class="covered" data-hits="6" data-linenumber="59">
5901
+ <li class="covered" data-hits="6" data-linenumber="64">
5764
5902
  <span class="hits">6</span>
5765
5903
 
5766
5904
  <code class="ruby"> save!</code>
5767
5905
  </li>
5768
5906
 
5769
- <li class="never" data-hits="" data-linenumber="60">
5907
+ <li class="never" data-hits="" data-linenumber="65">
5770
5908
 
5771
5909
 
5772
5910
  <code class="ruby"> end</code>
5773
5911
  </li>
5774
5912
 
5775
- <li class="never" data-hits="" data-linenumber="61">
5913
+ <li class="never" data-hits="" data-linenumber="66">
5776
5914
 
5777
5915
 
5778
5916
  <code class="ruby"></code>
5779
5917
  </li>
5780
5918
 
5781
- <li class="covered" data-hits="2" data-linenumber="62">
5919
+ <li class="covered" data-hits="2" data-linenumber="67">
5782
5920
  <span class="hits">2</span>
5783
5921
 
5784
5922
  <code class="ruby"> def destroy</code>
5785
5923
  </li>
5786
5924
 
5787
- <li class="covered" data-hits="6" data-linenumber="63">
5925
+ <li class="covered" data-hits="6" data-linenumber="68">
5788
5926
  <span class="hits">6</span>
5789
5927
 
5790
5928
  <code class="ruby"> if persisted?</code>
5791
5929
  </li>
5792
5930
 
5793
- <li class="covered" data-hits="5" data-linenumber="64">
5931
+ <li class="covered" data-hits="5" data-linenumber="69">
5794
5932
  <span class="hits">5</span>
5795
5933
 
5796
5934
  <code class="ruby"> run_callbacks :destroy do</code>
5797
5935
  </li>
5798
5936
 
5799
- <li class="covered" data-hits="5" data-linenumber="65">
5937
+ <li class="covered" data-hits="5" data-linenumber="70">
5800
5938
  <span class="hits">5</span>
5801
5939
 
5802
5940
  <code class="ruby"> self.class.delete(id)</code>
5803
5941
  </li>
5804
5942
 
5805
- <li class="never" data-hits="" data-linenumber="66">
5943
+ <li class="never" data-hits="" data-linenumber="71">
5806
5944
 
5807
5945
 
5808
5946
  <code class="ruby"> end</code>
5809
5947
  </li>
5810
5948
 
5811
- <li class="never" data-hits="" data-linenumber="67">
5949
+ <li class="never" data-hits="" data-linenumber="72">
5812
5950
 
5813
5951
 
5814
5952
  <code class="ruby"> end</code>
5815
5953
  </li>
5816
5954
 
5817
- <li class="covered" data-hits="6" data-linenumber="68">
5955
+ <li class="covered" data-hits="6" data-linenumber="73">
5818
5956
  <span class="hits">6</span>
5819
5957
 
5820
5958
  <code class="ruby"> self.persisted = false unless frozen?</code>
5821
5959
  </li>
5822
5960
 
5823
- <li class="covered" data-hits="6" data-linenumber="69">
5961
+ <li class="covered" data-hits="6" data-linenumber="74">
5824
5962
  <span class="hits">6</span>
5825
5963
 
5826
5964
  <code class="ruby"> freeze</code>
5827
5965
  </li>
5828
5966
 
5829
- <li class="never" data-hits="" data-linenumber="70">
5967
+ <li class="never" data-hits="" data-linenumber="75">
5830
5968
 
5831
5969
 
5832
5970
  <code class="ruby"> end</code>
5833
5971
  </li>
5834
5972
 
5835
- <li class="never" data-hits="" data-linenumber="71">
5973
+ <li class="never" data-hits="" data-linenumber="76">
5836
5974
 
5837
5975
 
5838
5976
  <code class="ruby"></code>
5839
5977
  </li>
5840
5978
 
5841
- <li class="covered" data-hits="2" data-linenumber="72">
5979
+ <li class="covered" data-hits="2" data-linenumber="77">
5842
5980
  <span class="hits">2</span>
5843
5981
 
5844
5982
  <code class="ruby"> def delete; destroy; end</code>
5845
5983
  </li>
5846
5984
 
5847
- <li class="covered" data-hits="2" data-linenumber="73">
5985
+ <li class="covered" data-hits="2" data-linenumber="78">
5848
5986
  <span class="hits">2</span>
5849
5987
 
5850
5988
  <code class="ruby"> def delete!; destroy; end</code>
5851
5989
  </li>
5852
5990
 
5853
- <li class="covered" data-hits="4" data-linenumber="74">
5991
+ <li class="covered" data-hits="4" data-linenumber="79">
5854
5992
  <span class="hits">4</span>
5855
5993
 
5856
5994
  <code class="ruby"> def destroy!; destroy; end</code>
5857
5995
  </li>
5858
5996
 
5859
- <li class="never" data-hits="" data-linenumber="75">
5997
+ <li class="never" data-hits="" data-linenumber="80">
5860
5998
 
5861
5999
 
5862
6000
  <code class="ruby"></code>
5863
6001
  </li>
5864
6002
 
5865
- <li class="covered" data-hits="2" data-linenumber="76">
6003
+ <li class="covered" data-hits="2" data-linenumber="81">
5866
6004
  <span class="hits">2</span>
5867
6005
 
5868
6006
  <code class="ruby"> protected</code>
5869
6007
  </li>
5870
6008
 
5871
- <li class="covered" data-hits="2" data-linenumber="77">
6009
+ <li class="covered" data-hits="2" data-linenumber="82">
5872
6010
  <span class="hits">2</span>
5873
6011
 
5874
6012
  <code class="ruby"> def create_or_update</code>
5875
6013
  </li>
5876
6014
 
5877
- <li class="covered" data-hits="18" data-linenumber="78">
6015
+ <li class="covered" data-hits="18" data-linenumber="83">
5878
6016
  <span class="hits">18</span>
5879
6017
 
5880
6018
  <code class="ruby"> !!(new_record? ? create : update)</code>
5881
6019
  </li>
5882
6020
 
5883
- <li class="never" data-hits="" data-linenumber="79">
6021
+ <li class="never" data-hits="" data-linenumber="84">
5884
6022
 
5885
6023
 
5886
6024
  <code class="ruby"> end</code>
5887
6025
  </li>
5888
6026
 
5889
- <li class="never" data-hits="" data-linenumber="80">
6027
+ <li class="never" data-hits="" data-linenumber="85">
5890
6028
 
5891
6029
 
5892
6030
  <code class="ruby"></code>
5893
6031
  </li>
5894
6032
 
5895
- <li class="covered" data-hits="2" data-linenumber="81">
6033
+ <li class="covered" data-hits="2" data-linenumber="86">
5896
6034
  <span class="hits">2</span>
5897
6035
 
5898
6036
  <code class="ruby"> def create_or_update!</code>
5899
6037
  </li>
5900
6038
 
5901
- <li class="covered" data-hits="34" data-linenumber="82">
5902
- <span class="hits">34</span>
6039
+ <li class="covered" data-hits="39" data-linenumber="87">
6040
+ <span class="hits">39</span>
5903
6041
 
5904
6042
  <code class="ruby"> !!(new_record? ? create! : update!)</code>
5905
6043
  </li>
5906
6044
 
5907
- <li class="never" data-hits="" data-linenumber="83">
6045
+ <li class="never" data-hits="" data-linenumber="88">
5908
6046
 
5909
6047
 
5910
6048
  <code class="ruby"> end</code>
5911
6049
  </li>
5912
6050
 
5913
- <li class="never" data-hits="" data-linenumber="84">
6051
+ <li class="never" data-hits="" data-linenumber="89">
5914
6052
 
5915
6053
 
5916
6054
  <code class="ruby"></code>
5917
6055
  </li>
5918
6056
 
5919
- <li class="covered" data-hits="2" data-linenumber="85">
6057
+ <li class="covered" data-hits="2" data-linenumber="90">
5920
6058
  <span class="hits">2</span>
5921
6059
 
5922
6060
  <code class="ruby"> def create</code>
5923
6061
  </li>
5924
6062
 
5925
- <li class="covered" data-hits="12" data-linenumber="86">
6063
+ <li class="covered" data-hits="12" data-linenumber="91">
5926
6064
  <span class="hits">12</span>
5927
6065
 
5928
6066
  <code class="ruby"> with_update_braintree(:create) do</code>
5929
6067
  </li>
5930
6068
 
5931
- <li class="covered" data-hits="11" data-linenumber="87">
6069
+ <li class="covered" data-hits="11" data-linenumber="92">
5932
6070
  <span class="hits">11</span>
5933
6071
 
5934
6072
  <code class="ruby"> self.class.braintree_model_class.create(attributes_for(:create))</code>
5935
6073
  </li>
5936
6074
 
5937
- <li class="never" data-hits="" data-linenumber="88">
6075
+ <li class="never" data-hits="" data-linenumber="93">
5938
6076
 
5939
6077
 
5940
6078
  <code class="ruby"> end</code>
5941
6079
  </li>
5942
6080
 
5943
- <li class="never" data-hits="" data-linenumber="89">
6081
+ <li class="never" data-hits="" data-linenumber="94">
5944
6082
 
5945
6083
 
5946
6084
  <code class="ruby"> end</code>
5947
6085
  </li>
5948
6086
 
5949
- <li class="never" data-hits="" data-linenumber="90">
6087
+ <li class="never" data-hits="" data-linenumber="95">
5950
6088
 
5951
6089
 
5952
6090
  <code class="ruby"></code>
5953
6091
  </li>
5954
6092
 
5955
- <li class="covered" data-hits="2" data-linenumber="91">
6093
+ <li class="covered" data-hits="2" data-linenumber="96">
5956
6094
  <span class="hits">2</span>
5957
6095
 
5958
6096
  <code class="ruby"> def create!</code>
5959
6097
  </li>
5960
6098
 
5961
- <li class="covered" data-hits="28" data-linenumber="92">
5962
- <span class="hits">28</span>
6099
+ <li class="covered" data-hits="33" data-linenumber="97">
6100
+ <span class="hits">33</span>
5963
6101
 
5964
6102
  <code class="ruby"> with_update_braintree(:create) do</code>
5965
6103
  </li>
5966
6104
 
5967
- <li class="covered" data-hits="28" data-linenumber="93">
5968
- <span class="hits">28</span>
6105
+ <li class="covered" data-hits="33" data-linenumber="98">
6106
+ <span class="hits">33</span>
5969
6107
 
5970
6108
  <code class="ruby"> self.class.braintree_model_class.create!(attributes_for(:create))</code>
5971
6109
  </li>
5972
6110
 
5973
- <li class="never" data-hits="" data-linenumber="94">
6111
+ <li class="never" data-hits="" data-linenumber="99">
5974
6112
 
5975
6113
 
5976
6114
  <code class="ruby"> end</code>
5977
6115
  </li>
5978
6116
 
5979
- <li class="never" data-hits="" data-linenumber="95">
6117
+ <li class="never" data-hits="" data-linenumber="100">
5980
6118
 
5981
6119
 
5982
6120
  <code class="ruby"> end</code>
5983
6121
  </li>
5984
6122
 
5985
- <li class="never" data-hits="" data-linenumber="96">
6123
+ <li class="never" data-hits="" data-linenumber="101">
5986
6124
 
5987
6125
 
5988
6126
  <code class="ruby"></code>
5989
6127
  </li>
5990
6128
 
5991
- <li class="covered" data-hits="2" data-linenumber="97">
6129
+ <li class="covered" data-hits="2" data-linenumber="102">
5992
6130
  <span class="hits">2</span>
5993
6131
 
5994
6132
  <code class="ruby"> def update</code>
5995
6133
  </li>
5996
6134
 
5997
- <li class="covered" data-hits="4" data-linenumber="98">
6135
+ <li class="covered" data-hits="4" data-linenumber="103">
5998
6136
  <span class="hits">4</span>
5999
6137
 
6000
6138
  <code class="ruby"> with_update_braintree(:update) do</code>
6001
6139
  </li>
6002
6140
 
6003
- <li class="covered" data-hits="4" data-linenumber="99">
6141
+ <li class="covered" data-hits="4" data-linenumber="104">
6004
6142
  <span class="hits">4</span>
6005
6143
 
6006
6144
  <code class="ruby"> self.class.braintree_model_class.update(id, attributes_for(:update))</code>
6007
6145
  </li>
6008
6146
 
6009
- <li class="never" data-hits="" data-linenumber="100">
6147
+ <li class="never" data-hits="" data-linenumber="105">
6010
6148
 
6011
6149
 
6012
6150
  <code class="ruby"> end</code>
6013
6151
  </li>
6014
6152
 
6015
- <li class="never" data-hits="" data-linenumber="101">
6153
+ <li class="never" data-hits="" data-linenumber="106">
6016
6154
 
6017
6155
 
6018
6156
  <code class="ruby"> end</code>
6019
6157
  </li>
6020
6158
 
6021
- <li class="never" data-hits="" data-linenumber="102">
6159
+ <li class="never" data-hits="" data-linenumber="107">
6022
6160
 
6023
6161
 
6024
6162
  <code class="ruby"></code>
6025
6163
  </li>
6026
6164
 
6027
- <li class="covered" data-hits="2" data-linenumber="103">
6165
+ <li class="covered" data-hits="2" data-linenumber="108">
6028
6166
  <span class="hits">2</span>
6029
6167
 
6030
6168
  <code class="ruby"> def update!</code>
6031
6169
  </li>
6032
6170
 
6033
- <li class="covered" data-hits="5" data-linenumber="104">
6171
+ <li class="covered" data-hits="5" data-linenumber="109">
6034
6172
  <span class="hits">5</span>
6035
6173
 
6036
6174
  <code class="ruby"> with_update_braintree(:update) do</code>
6037
6175
  </li>
6038
6176
 
6039
- <li class="covered" data-hits="5" data-linenumber="105">
6177
+ <li class="covered" data-hits="5" data-linenumber="110">
6040
6178
  <span class="hits">5</span>
6041
6179
 
6042
6180
  <code class="ruby"> self.class.braintree_model_class.update!(id, attributes_for(:update))</code>
6043
6181
  </li>
6044
6182
 
6045
- <li class="never" data-hits="" data-linenumber="106">
6183
+ <li class="never" data-hits="" data-linenumber="111">
6046
6184
 
6047
6185
 
6048
6186
  <code class="ruby"> end</code>
6049
6187
  </li>
6050
6188
 
6051
- <li class="never" data-hits="" data-linenumber="107">
6189
+ <li class="never" data-hits="" data-linenumber="112">
6052
6190
 
6053
6191
 
6054
6192
  <code class="ruby"> end</code>
6055
6193
  </li>
6056
6194
 
6057
- <li class="never" data-hits="" data-linenumber="108">
6195
+ <li class="never" data-hits="" data-linenumber="113">
6058
6196
 
6059
6197
 
6060
6198
  <code class="ruby"></code>
6061
6199
  </li>
6062
6200
 
6063
- <li class="covered" data-hits="2" data-linenumber="109">
6201
+ <li class="covered" data-hits="2" data-linenumber="114">
6064
6202
  <span class="hits">2</span>
6065
6203
 
6066
6204
  <code class="ruby"> def with_update_braintree(context)</code>
6067
6205
  </li>
6068
6206
 
6069
- <li class="covered" data-hits="65" data-linenumber="110">
6070
- <span class="hits">65</span>
6207
+ <li class="covered" data-hits="70" data-linenumber="115">
6208
+ <span class="hits">70</span>
6071
6209
 
6072
6210
  <code class="ruby"> raise RecordInvalid.new(self) unless valid?(context)</code>
6073
6211
  </li>
6074
6212
 
6075
- <li class="covered" data-hits="58" data-linenumber="111">
6076
- <span class="hits">58</span>
6213
+ <li class="covered" data-hits="63" data-linenumber="116">
6214
+ <span class="hits">63</span>
6077
6215
 
6078
6216
  <code class="ruby"> run_callbacks context do</code>
6079
6217
  </li>
6080
6218
 
6081
- <li class="covered" data-hits="58" data-linenumber="112">
6082
- <span class="hits">58</span>
6219
+ <li class="covered" data-hits="63" data-linenumber="117">
6220
+ <span class="hits">63</span>
6083
6221
 
6084
6222
  <code class="ruby"> result = yield</code>
6085
6223
  </li>
6086
6224
 
6087
- <li class="covered" data-hits="56" data-linenumber="113">
6088
- <span class="hits">56</span>
6225
+ <li class="covered" data-hits="61" data-linenumber="118">
6226
+ <span class="hits">61</span>
6089
6227
 
6090
6228
  <code class="ruby"> if result.respond_to?(:success?) &amp;&amp; !result.success?</code>
6091
6229
  </li>
6092
6230
 
6093
- <li class="covered" data-hits="3" data-linenumber="114">
6231
+ <li class="covered" data-hits="3" data-linenumber="119">
6094
6232
  <span class="hits">3</span>
6095
6233
 
6096
6234
  <code class="ruby"> add_errors(extract_errors(result))</code>
6097
6235
  </li>
6098
6236
 
6099
- <li class="covered" data-hits="3" data-linenumber="115">
6237
+ <li class="covered" data-hits="3" data-linenumber="120">
6100
6238
  <span class="hits">3</span>
6101
6239
 
6102
6240
  <code class="ruby"> false</code>
6103
6241
  </li>
6104
6242
 
6105
- <li class="never" data-hits="" data-linenumber="116">
6243
+ <li class="never" data-hits="" data-linenumber="121">
6106
6244
 
6107
6245
 
6108
6246
  <code class="ruby"> else</code>
6109
6247
  </li>
6110
6248
 
6111
- <li class="covered" data-hits="53" data-linenumber="117">
6112
- <span class="hits">53</span>
6249
+ <li class="covered" data-hits="58" data-linenumber="122">
6250
+ <span class="hits">58</span>
6113
6251
 
6114
6252
  <code class="ruby"> new_record = result.respond_to?(self.class.braintree_model_name) ? result.send(self.class.braintree_model_name) : result</code>
6115
6253
  </li>
6116
6254
 
6117
- <li class="covered" data-hits="53" data-linenumber="118">
6118
- <span class="hits">53</span>
6255
+ <li class="covered" data-hits="58" data-linenumber="123">
6256
+ <span class="hits">58</span>
6119
6257
 
6120
6258
  <code class="ruby"> init(new_record)</code>
6121
6259
  </li>
6122
6260
 
6123
- <li class="never" data-hits="" data-linenumber="119">
6261
+ <li class="never" data-hits="" data-linenumber="124">
6124
6262
 
6125
6263
 
6126
6264
  <code class="ruby"> end</code>
6127
6265
  </li>
6128
6266
 
6129
- <li class="never" data-hits="" data-linenumber="120">
6267
+ <li class="never" data-hits="" data-linenumber="125">
6130
6268
 
6131
6269
 
6132
6270
  <code class="ruby"> end</code>
6133
6271
  </li>
6134
6272
 
6135
- <li class="never" data-hits="" data-linenumber="121">
6273
+ <li class="never" data-hits="" data-linenumber="126">
6136
6274
 
6137
6275
 
6138
6276
  <code class="ruby"> end</code>
6139
6277
  </li>
6140
6278
 
6141
- <li class="never" data-hits="" data-linenumber="122">
6279
+ <li class="never" data-hits="" data-linenumber="127">
6142
6280
 
6143
6281
 
6144
6282
  <code class="ruby"></code>
6145
6283
  </li>
6146
6284
 
6147
- <li class="covered" data-hits="2" data-linenumber="123">
6285
+ <li class="covered" data-hits="2" data-linenumber="128">
6148
6286
  <span class="hits">2</span>
6149
6287
 
6150
6288
  <code class="ruby"> def extract_errors(result)</code>
6151
6289
  </li>
6152
6290
 
6153
- <li class="covered" data-hits="3" data-linenumber="124">
6291
+ <li class="covered" data-hits="3" data-linenumber="129">
6154
6292
  <span class="hits">3</span>
6155
6293
 
6156
6294
  <code class="ruby"> base_errors(result).merge(attribute_errors(result))</code>
6157
6295
  </li>
6158
6296
 
6159
- <li class="never" data-hits="" data-linenumber="125">
6297
+ <li class="never" data-hits="" data-linenumber="130">
6160
6298
 
6161
6299
 
6162
6300
  <code class="ruby"> end</code>
6163
6301
  </li>
6164
6302
 
6165
- <li class="never" data-hits="" data-linenumber="126">
6303
+ <li class="never" data-hits="" data-linenumber="131">
6166
6304
 
6167
6305
 
6168
6306
  <code class="ruby"></code>
6169
6307
  </li>
6170
6308
 
6171
- <li class="covered" data-hits="2" data-linenumber="127">
6309
+ <li class="covered" data-hits="2" data-linenumber="132">
6172
6310
  <span class="hits">2</span>
6173
6311
 
6174
6312
  <code class="ruby"> def base_errors(result)</code>
6175
6313
  </li>
6176
6314
 
6177
- <li class="covered" data-hits="3" data-linenumber="128">
6315
+ <li class="covered" data-hits="3" data-linenumber="133">
6178
6316
  <span class="hits">3</span>
6179
6317
 
6180
6318
  <code class="ruby"> all_messages = result.message.split(&quot;\n&quot;)</code>
6181
6319
  </li>
6182
6320
 
6183
- <li class="covered" data-hits="3" data-linenumber="129">
6321
+ <li class="covered" data-hits="3" data-linenumber="134">
6184
6322
  <span class="hits">3</span>
6185
6323
 
6186
6324
  <code class="ruby"> base_messages = all_messages - attribute_errors(result).values.map(&amp;:to_s)</code>
6187
6325
  </li>
6188
6326
 
6189
- <li class="covered" data-hits="3" data-linenumber="130">
6327
+ <li class="covered" data-hits="3" data-linenumber="135">
6190
6328
  <span class="hits">3</span>
6191
6329
 
6192
6330
  <code class="ruby"> base_messages.empty? ? {} : {&#39;base&#39; =&gt; base_messages}</code>
6193
6331
  </li>
6194
6332
 
6195
- <li class="never" data-hits="" data-linenumber="131">
6333
+ <li class="never" data-hits="" data-linenumber="136">
6196
6334
 
6197
6335
 
6198
6336
  <code class="ruby"> end</code>
6199
6337
  </li>
6200
6338
 
6201
- <li class="never" data-hits="" data-linenumber="132">
6339
+ <li class="never" data-hits="" data-linenumber="137">
6202
6340
 
6203
6341
 
6204
6342
  <code class="ruby"></code>
6205
6343
  </li>
6206
6344
 
6207
- <li class="covered" data-hits="2" data-linenumber="133">
6345
+ <li class="covered" data-hits="2" data-linenumber="138">
6208
6346
  <span class="hits">2</span>
6209
6347
 
6210
6348
  <code class="ruby"> def attribute_errors(result)</code>
6211
6349
  </li>
6212
6350
 
6213
- <li class="covered" data-hits="6" data-linenumber="134">
6351
+ <li class="covered" data-hits="6" data-linenumber="139">
6214
6352
  <span class="hits">6</span>
6215
6353
 
6216
6354
  <code class="ruby"> result.errors.inject({}) do |hash, error|</code>
6217
6355
  </li>
6218
6356
 
6219
- <li class="covered" data-hits="18" data-linenumber="135">
6357
+ <li class="covered" data-hits="18" data-linenumber="140">
6220
6358
  <span class="hits">18</span>
6221
6359
 
6222
6360
  <code class="ruby"> next hash if error.attribute.to_s == &#39;base&#39;</code>
6223
6361
  </li>
6224
6362
 
6225
- <li class="covered" data-hits="18" data-linenumber="136">
6363
+ <li class="covered" data-hits="18" data-linenumber="141">
6226
6364
  <span class="hits">18</span>
6227
6365
 
6228
6366
  <code class="ruby"> hash[error.attribute.to_s] = BraintreeRails::ApiError.new(error.message, error.code)</code>
6229
6367
  </li>
6230
6368
 
6231
- <li class="covered" data-hits="18" data-linenumber="137">
6369
+ <li class="covered" data-hits="18" data-linenumber="142">
6232
6370
  <span class="hits">18</span>
6233
6371
 
6234
6372
  <code class="ruby"> hash</code>
6235
6373
  </li>
6236
6374
 
6237
- <li class="never" data-hits="" data-linenumber="138">
6375
+ <li class="never" data-hits="" data-linenumber="143">
6238
6376
 
6239
6377
 
6240
6378
  <code class="ruby"> end</code>
6241
6379
  </li>
6242
6380
 
6243
- <li class="never" data-hits="" data-linenumber="139">
6381
+ <li class="never" data-hits="" data-linenumber="144">
6244
6382
 
6245
6383
 
6246
6384
  <code class="ruby"> end</code>
6247
6385
  </li>
6248
6386
 
6249
- <li class="never" data-hits="" data-linenumber="140">
6387
+ <li class="never" data-hits="" data-linenumber="145">
6250
6388
 
6251
6389
 
6252
6390
  <code class="ruby"> end</code>
6253
6391
  </li>
6254
6392
 
6255
- <li class="never" data-hits="" data-linenumber="141">
6393
+ <li class="never" data-hits="" data-linenumber="146">
6256
6394
 
6257
6395
 
6258
6396
  <code class="ruby"></code>
6259
6397
  </li>
6260
6398
 
6261
- <li class="covered" data-hits="2" data-linenumber="142">
6399
+ <li class="covered" data-hits="2" data-linenumber="147">
6262
6400
  <span class="hits">2</span>
6263
6401
 
6264
6402
  <code class="ruby"> def self.included(receiver)</code>
6265
6403
  </li>
6266
6404
 
6267
- <li class="covered" data-hits="13" data-linenumber="143">
6405
+ <li class="covered" data-hits="13" data-linenumber="148">
6268
6406
  <span class="hits">13</span>
6269
6407
 
6270
6408
  <code class="ruby"> receiver.extend ActiveModel::Callbacks</code>
6271
6409
  </li>
6272
6410
 
6273
- <li class="covered" data-hits="13" data-linenumber="144">
6411
+ <li class="covered" data-hits="13" data-linenumber="149">
6274
6412
  <span class="hits">13</span>
6275
6413
 
6276
6414
  <code class="ruby"> receiver.extend ClassMethods</code>
6277
6415
  </li>
6278
6416
 
6279
- <li class="covered" data-hits="13" data-linenumber="145">
6417
+ <li class="covered" data-hits="13" data-linenumber="150">
6280
6418
  <span class="hits">13</span>
6281
6419
 
6282
6420
  <code class="ruby"> receiver.send :include, InstanceMethods</code>
6283
6421
  </li>
6284
6422
 
6285
- <li class="covered" data-hits="13" data-linenumber="146">
6423
+ <li class="covered" data-hits="13" data-linenumber="151">
6286
6424
  <span class="hits">13</span>
6287
6425
 
6288
6426
  <code class="ruby"> receiver.class_eval do</code>
6289
6427
  </li>
6290
6428
 
6291
- <li class="covered" data-hits="13" data-linenumber="147">
6429
+ <li class="covered" data-hits="13" data-linenumber="152">
6292
6430
  <span class="hits">13</span>
6293
6431
 
6294
6432
  <code class="ruby"> attr_accessor :persisted</code>
6295
6433
  </li>
6296
6434
 
6297
- <li class="covered" data-hits="13" data-linenumber="148">
6435
+ <li class="covered" data-hits="13" data-linenumber="153">
6298
6436
  <span class="hits">13</span>
6299
6437
 
6300
6438
  <code class="ruby"> define_model_callbacks :validate, :save, :create, :update, :destroy</code>
6301
6439
  </li>
6302
6440
 
6303
- <li class="never" data-hits="" data-linenumber="149">
6441
+ <li class="never" data-hits="" data-linenumber="154">
6304
6442
 
6305
6443
 
6306
6444
  <code class="ruby"> end</code>
6307
6445
  </li>
6308
6446
 
6309
- <li class="never" data-hits="" data-linenumber="150">
6447
+ <li class="never" data-hits="" data-linenumber="155">
6310
6448
 
6311
6449
 
6312
6450
  <code class="ruby"> end</code>
6313
6451
  </li>
6314
6452
 
6315
- <li class="never" data-hits="" data-linenumber="151">
6453
+ <li class="never" data-hits="" data-linenumber="156">
6316
6454
 
6317
6455
 
6318
6456
  <code class="ruby"> end</code>
6319
6457
  </li>
6320
6458
 
6321
- <li class="never" data-hits="" data-linenumber="152">
6459
+ <li class="never" data-hits="" data-linenumber="157">
6322
6460
 
6323
6461
 
6324
6462
  <code class="ruby">end</code>
@@ -7113,8 +7251,8 @@
7113
7251
  <h3>lib/braintree_rails/subscriptions.rb</h3>
7114
7252
  <h4><span class="green">100.0 %</span> covered</h4>
7115
7253
  <div>
7116
- <b>21</b> relevant lines.
7117
- <span class="green"><b>21</b> lines covered</span> and
7254
+ <b>22</b> relevant lines.
7255
+ <span class="green"><b>22</b> lines covered</span> and
7118
7256
  <span class="red"><b>0</b> lines missed.</span>
7119
7257
  </div>
7120
7258
  </div>
@@ -7281,64 +7419,70 @@
7281
7419
  <li class="covered" data-hits="4" data-linenumber="27">
7282
7420
  <span class="hits">4</span>
7283
7421
 
7422
+ <code class="ruby"> return if loaded</code>
7423
+ </li>
7424
+
7425
+ <li class="covered" data-hits="4" data-linenumber="28">
7426
+ <span class="hits">4</span>
7427
+
7284
7428
  <code class="ruby"> self.collection = if @credit_card.present?</code>
7285
7429
  </li>
7286
7430
 
7287
- <li class="covered" data-hits="1" data-linenumber="28">
7431
+ <li class="covered" data-hits="1" data-linenumber="29">
7288
7432
  <span class="hits">1</span>
7289
7433
 
7290
7434
  <code class="ruby"> @credit_card.raw_object.subscriptions</code>
7291
7435
  </li>
7292
7436
 
7293
- <li class="never" data-hits="" data-linenumber="29">
7437
+ <li class="never" data-hits="" data-linenumber="30">
7294
7438
 
7295
7439
 
7296
7440
  <code class="ruby"> elsif @plan.present?</code>
7297
7441
  </li>
7298
7442
 
7299
- <li class="covered" data-hits="4" data-linenumber="30">
7443
+ <li class="covered" data-hits="4" data-linenumber="31">
7300
7444
  <span class="hits">4</span>
7301
7445
 
7302
7446
  <code class="ruby"> Braintree::Subscription.search {|search| search.plan_id.is @plan.id}</code>
7303
7447
  </li>
7304
7448
 
7305
- <li class="never" data-hits="" data-linenumber="31">
7449
+ <li class="never" data-hits="" data-linenumber="32">
7306
7450
 
7307
7451
 
7308
7452
  <code class="ruby"> else</code>
7309
7453
  </li>
7310
7454
 
7311
- <li class="covered" data-hits="1" data-linenumber="32">
7455
+ <li class="covered" data-hits="1" data-linenumber="33">
7312
7456
  <span class="hits">1</span>
7313
7457
 
7314
7458
  <code class="ruby"> Braintree::Subscription.search</code>
7315
7459
  </li>
7316
7460
 
7317
- <li class="never" data-hits="" data-linenumber="33">
7461
+ <li class="never" data-hits="" data-linenumber="34">
7318
7462
 
7319
7463
 
7320
7464
  <code class="ruby"> end</code>
7321
7465
  </li>
7322
7466
 
7323
- <li class="covered" data-hits="4" data-linenumber="34">
7467
+ <li class="covered" data-hits="4" data-linenumber="35">
7324
7468
  <span class="hits">4</span>
7325
7469
 
7326
7470
  <code class="ruby"> super</code>
7327
7471
  </li>
7328
7472
 
7329
- <li class="never" data-hits="" data-linenumber="35">
7473
+ <li class="never" data-hits="" data-linenumber="36">
7330
7474
 
7331
7475
 
7332
7476
  <code class="ruby"> end</code>
7333
7477
  </li>
7334
7478
 
7335
- <li class="never" data-hits="" data-linenumber="36">
7479
+ <li class="never" data-hits="" data-linenumber="37">
7336
7480
 
7337
7481
 
7338
7482
  <code class="ruby"> end</code>
7339
7483
  </li>
7340
7484
 
7341
- <li class="never" data-hits="" data-linenumber="37">
7485
+ <li class="never" data-hits="" data-linenumber="38">
7342
7486
 
7343
7487
 
7344
7488
  <code class="ruby">end</code>
@@ -7554,8 +7698,8 @@
7554
7698
  <code class="ruby"> def type</code>
7555
7699
  </li>
7556
7700
 
7557
- <li class="covered" data-hits="127" data-linenumber="33">
7558
- <span class="hits">127</span>
7701
+ <li class="covered" data-hits="133" data-linenumber="33">
7702
+ <span class="hits">133</span>
7559
7703
 
7560
7704
  <code class="ruby"> @type ||= &#39;sale&#39;</code>
7561
7705
  </li>
@@ -7788,8 +7932,8 @@
7788
7932
  <code class="ruby"> def clear_encryped_attributes</code>
7789
7933
  </li>
7790
7934
 
7791
- <li class="covered" data-hits="17" data-linenumber="72">
7792
- <span class="hits">17</span>
7935
+ <li class="covered" data-hits="18" data-linenumber="72">
7936
+ <span class="hits">18</span>
7793
7937
 
7794
7938
  <code class="ruby"> yield if block_given?</code>
7795
7939
  </li>
@@ -7800,8 +7944,8 @@
7800
7944
  <code class="ruby"> ensure</code>
7801
7945
  </li>
7802
7946
 
7803
- <li class="covered" data-hits="17" data-linenumber="74">
7804
- <span class="hits">17</span>
7947
+ <li class="covered" data-hits="18" data-linenumber="74">
7948
+ <span class="hits">18</span>
7805
7949
 
7806
7950
  <code class="ruby"> credit_card.clear_encryped_attributes if credit_card.present?</code>
7807
7951
  </li>
@@ -7824,8 +7968,8 @@
7824
7968
  <code class="ruby"> def attributes</code>
7825
7969
  </li>
7826
7970
 
7827
- <li class="covered" data-hits="31" data-linenumber="78">
7828
- <span class="hits">31</span>
7971
+ <li class="covered" data-hits="33" data-linenumber="78">
7972
+ <span class="hits">33</span>
7829
7973
 
7830
7974
  <code class="ruby"> super.except(:customer_details, :credit_card_details, :billing_details, :shipping_details, :subscription_details, :status_history)</code>
7831
7975
  </li>
@@ -7896,8 +8040,8 @@
7896
8040
  <code class="ruby"> def attributes_for(action)</code>
7897
8041
  </li>
7898
8042
 
7899
- <li class="covered" data-hits="15" data-linenumber="90">
7900
- <span class="hits">15</span>
8043
+ <li class="covered" data-hits="16" data-linenumber="90">
8044
+ <span class="hits">16</span>
7901
8045
 
7902
8046
  <code class="ruby"> super.merge(customer_attributes).merge(credit_card_attributes)</code>
7903
8047
  </li>
@@ -7920,20 +8064,20 @@
7920
8064
  <code class="ruby"> def customer_attributes</code>
7921
8065
  </li>
7922
8066
 
7923
- <li class="covered" data-hits="15" data-linenumber="94">
7924
- <span class="hits">15</span>
8067
+ <li class="covered" data-hits="16" data-linenumber="94">
8068
+ <span class="hits">16</span>
7925
8069
 
7926
8070
  <code class="ruby"> if customer.present?</code>
7927
8071
  </li>
7928
8072
 
7929
- <li class="covered" data-hits="11" data-linenumber="95">
7930
- <span class="hits">11</span>
8073
+ <li class="covered" data-hits="12" data-linenumber="95">
8074
+ <span class="hits">12</span>
7931
8075
 
7932
8076
  <code class="ruby"> if customer.persisted?</code>
7933
8077
  </li>
7934
8078
 
7935
- <li class="covered" data-hits="10" data-linenumber="96">
7936
- <span class="hits">10</span>
8079
+ <li class="covered" data-hits="11" data-linenumber="96">
8080
+ <span class="hits">11</span>
7937
8081
 
7938
8082
  <code class="ruby"> {:customer_id =&gt; customer.id}</code>
7939
8083
  </li>
@@ -7992,20 +8136,20 @@
7992
8136
  <code class="ruby"> def credit_card_attributes</code>
7993
8137
  </li>
7994
8138
 
7995
- <li class="covered" data-hits="15" data-linenumber="106">
7996
- <span class="hits">15</span>
8139
+ <li class="covered" data-hits="16" data-linenumber="106">
8140
+ <span class="hits">16</span>
7997
8141
 
7998
8142
  <code class="ruby"> if credit_card.present?</code>
7999
8143
  </li>
8000
8144
 
8001
- <li class="covered" data-hits="10" data-linenumber="107">
8002
- <span class="hits">10</span>
8145
+ <li class="covered" data-hits="11" data-linenumber="107">
8146
+ <span class="hits">11</span>
8003
8147
 
8004
8148
  <code class="ruby"> if credit_card.persisted?</code>
8005
8149
  </li>
8006
8150
 
8007
- <li class="covered" data-hits="7" data-linenumber="108">
8008
- <span class="hits">7</span>
8151
+ <li class="covered" data-hits="8" data-linenumber="108">
8152
+ <span class="hits">8</span>
8009
8153
 
8010
8154
  <code class="ruby"> {:payment_method_token =&gt; credit_card.token}</code>
8011
8155
  </li>
@@ -8202,8 +8346,8 @@
8202
8346
  <code class="ruby"> def validate(transaction)</code>
8203
8347
  </li>
8204
8348
 
8205
- <li class="covered" data-hits="63" data-linenumber="19">
8206
- <span class="hits">63</span>
8349
+ <li class="covered" data-hits="65" data-linenumber="19">
8350
+ <span class="hits">65</span>
8207
8351
 
8208
8352
  <code class="ruby"> must_have_credit_card(transaction) if transaction.new_record?</code>
8209
8353
  </li>
@@ -8226,8 +8370,8 @@
8226
8370
  <code class="ruby"> def must_have_credit_card(transaction)</code>
8227
8371
  </li>
8228
8372
 
8229
- <li class="covered" data-hits="47" data-linenumber="23">
8230
- <span class="hits">47</span>
8373
+ <li class="covered" data-hits="49" data-linenumber="23">
8374
+ <span class="hits">49</span>
8231
8375
 
8232
8376
  <code class="ruby"> if transaction.credit_card.blank?</code>
8233
8377
  </li>
@@ -8238,8 +8382,8 @@
8238
8382
  <code class="ruby"> validate_customer_have_default_credit_card(transaction)</code>
8239
8383
  </li>
8240
8384
 
8241
- <li class="covered" data-hits="26" data-linenumber="25">
8242
- <span class="hits">26</span>
8385
+ <li class="covered" data-hits="28" data-linenumber="25">
8386
+ <span class="hits">28</span>
8243
8387
 
8244
8388
  <code class="ruby"> elsif transaction.credit_card.new_record?</code>
8245
8389
  </li>
@@ -8385,8 +8529,8 @@
8385
8529
  <h3>lib/braintree_rails/transactions.rb</h3>
8386
8530
  <h4><span class="green">100.0 %</span> covered</h4>
8387
8531
  <div>
8388
- <b>24</b> relevant lines.
8389
- <span class="green"><b>24</b> lines covered</span> and
8532
+ <b>25</b> relevant lines.
8533
+ <span class="green"><b>25</b> lines covered</span> and
8390
8534
  <span class="red"><b>0</b> lines missed.</span>
8391
8535
  </div>
8392
8536
  </div>
@@ -8424,8 +8568,8 @@
8424
8568
  <code class="ruby"> def initialize(belongs_to)</code>
8425
8569
  </li>
8426
8570
 
8427
- <li class="covered" data-hits="15" data-linenumber="6">
8428
- <span class="hits">15</span>
8571
+ <li class="covered" data-hits="16" data-linenumber="6">
8572
+ <span class="hits">16</span>
8429
8573
 
8430
8574
  <code class="ruby"> case belongs_to</code>
8431
8575
  </li>
@@ -8436,8 +8580,8 @@
8436
8580
  <code class="ruby"> when BraintreeRails::Customer</code>
8437
8581
  </li>
8438
8582
 
8439
- <li class="covered" data-hits="8" data-linenumber="8">
8440
- <span class="hits">8</span>
8583
+ <li class="covered" data-hits="9" data-linenumber="8">
8584
+ <span class="hits">9</span>
8441
8585
 
8442
8586
  <code class="ruby"> @customer = belongs_to</code>
8443
8587
  </li>
@@ -8478,8 +8622,8 @@
8478
8622
  <code class="ruby"> end</code>
8479
8623
  </li>
8480
8624
 
8481
- <li class="covered" data-hits="15" data-linenumber="15">
8482
- <span class="hits">15</span>
8625
+ <li class="covered" data-hits="16" data-linenumber="15">
8626
+ <span class="hits">16</span>
8483
8627
 
8484
8628
  <code class="ruby"> super([])</code>
8485
8629
  </li>
@@ -8568,79 +8712,85 @@
8568
8712
  <code class="ruby"> def load!</code>
8569
8713
  </li>
8570
8714
 
8571
- <li class="covered" data-hits="10" data-linenumber="30">
8715
+ <li class="covered" data-hits="12" data-linenumber="30">
8716
+ <span class="hits">12</span>
8717
+
8718
+ <code class="ruby"> return if loaded</code>
8719
+ </li>
8720
+
8721
+ <li class="covered" data-hits="10" data-linenumber="31">
8572
8722
  <span class="hits">10</span>
8573
8723
 
8574
8724
  <code class="ruby"> self.collection = if @subscription.present?</code>
8575
8725
  </li>
8576
8726
 
8577
- <li class="covered" data-hits="1" data-linenumber="31">
8727
+ <li class="covered" data-hits="1" data-linenumber="32">
8578
8728
  <span class="hits">1</span>
8579
8729
 
8580
8730
  <code class="ruby"> @subscription.raw_object.transactions</code>
8581
8731
  </li>
8582
8732
 
8583
- <li class="never" data-hits="" data-linenumber="32">
8733
+ <li class="never" data-hits="" data-linenumber="33">
8584
8734
 
8585
8735
 
8586
8736
  <code class="ruby"> elsif @credit_card.present?</code>
8587
8737
  </li>
8588
8738
 
8589
- <li class="covered" data-hits="4" data-linenumber="33">
8739
+ <li class="covered" data-hits="4" data-linenumber="34">
8590
8740
  <span class="hits">4</span>
8591
8741
 
8592
8742
  <code class="ruby"> Braintree::Transaction.search {|search| search.payment_method_token.is @credit_card.token}</code>
8593
8743
  </li>
8594
8744
 
8595
- <li class="never" data-hits="" data-linenumber="34">
8745
+ <li class="never" data-hits="" data-linenumber="35">
8596
8746
 
8597
8747
 
8598
8748
  <code class="ruby"> elsif @customer.present?</code>
8599
8749
  </li>
8600
8750
 
8601
- <li class="covered" data-hits="12" data-linenumber="35">
8751
+ <li class="covered" data-hits="12" data-linenumber="36">
8602
8752
  <span class="hits">12</span>
8603
8753
 
8604
8754
  <code class="ruby"> Braintree::Transaction.search {|search| search.customer_id.is @customer.id}</code>
8605
8755
  </li>
8606
8756
 
8607
- <li class="never" data-hits="" data-linenumber="36">
8757
+ <li class="never" data-hits="" data-linenumber="37">
8608
8758
 
8609
8759
 
8610
8760
  <code class="ruby"> else</code>
8611
8761
  </li>
8612
8762
 
8613
- <li class="covered" data-hits="1" data-linenumber="37">
8763
+ <li class="covered" data-hits="1" data-linenumber="38">
8614
8764
  <span class="hits">1</span>
8615
8765
 
8616
8766
  <code class="ruby"> Braintree::Transaction.search</code>
8617
8767
  </li>
8618
8768
 
8619
- <li class="never" data-hits="" data-linenumber="38">
8769
+ <li class="never" data-hits="" data-linenumber="39">
8620
8770
 
8621
8771
 
8622
8772
  <code class="ruby"> end</code>
8623
8773
  </li>
8624
8774
 
8625
- <li class="covered" data-hits="10" data-linenumber="39">
8775
+ <li class="covered" data-hits="10" data-linenumber="40">
8626
8776
  <span class="hits">10</span>
8627
8777
 
8628
8778
  <code class="ruby"> super</code>
8629
8779
  </li>
8630
8780
 
8631
- <li class="never" data-hits="" data-linenumber="40">
8781
+ <li class="never" data-hits="" data-linenumber="41">
8632
8782
 
8633
8783
 
8634
8784
  <code class="ruby"> end</code>
8635
8785
  </li>
8636
8786
 
8637
- <li class="never" data-hits="" data-linenumber="41">
8787
+ <li class="never" data-hits="" data-linenumber="42">
8638
8788
 
8639
8789
 
8640
8790
  <code class="ruby"> end</code>
8641
8791
  </li>
8642
8792
 
8643
- <li class="never" data-hits="" data-linenumber="42">
8793
+ <li class="never" data-hits="" data-linenumber="43">
8644
8794
 
8645
8795
 
8646
8796
  <code class="ruby">end</code>
@@ -8808,14 +8958,14 @@
8808
8958
  <code class="ruby"> def save!(options = {})</code>
8809
8959
  </li>
8810
8960
 
8811
- <li class="covered" data-hits="38" data-linenumber="25">
8812
- <span class="hits">38</span>
8961
+ <li class="covered" data-hits="43" data-linenumber="25">
8962
+ <span class="hits">43</span>
8813
8963
 
8814
8964
  <code class="ruby"> run_callbacks :persist do</code>
8815
8965
  </li>
8816
8966
 
8817
- <li class="covered" data-hits="38" data-linenumber="26">
8818
- <span class="hits">38</span>
8967
+ <li class="covered" data-hits="43" data-linenumber="26">
8968
+ <span class="hits">43</span>
8819
8969
 
8820
8970
  <code class="ruby"> perform_validations(options) ? super : raise(RecordInvalid.new(self))</code>
8821
8971
  </li>
@@ -8844,14 +8994,14 @@
8844
8994
  <code class="ruby"> def perform_validations(options={})</code>
8845
8995
  </li>
8846
8996
 
8847
- <li class="covered" data-hits="61" data-linenumber="31">
8848
- <span class="hits">61</span>
8997
+ <li class="covered" data-hits="66" data-linenumber="31">
8998
+ <span class="hits">66</span>
8849
8999
 
8850
9000
  <code class="ruby"> perform_validation = options[:validate] != false</code>
8851
9001
  </li>
8852
9002
 
8853
- <li class="covered" data-hits="61" data-linenumber="32">
8854
- <span class="hits">61</span>
9003
+ <li class="covered" data-hits="66" data-linenumber="32">
9004
+ <span class="hits">66</span>
8855
9005
 
8856
9006
  <code class="ruby"> perform_validation ? valid?(options[:context]) : true</code>
8857
9007
  </li>
@@ -9177,7 +9327,7 @@
9177
9327
  <li class="covered" data-hits="2" data-linenumber="2">
9178
9328
  <span class="hits">2</span>
9179
9329
 
9180
- <code class="ruby"> Version = &quot;1.1.0&quot;</code>
9330
+ <code class="ruby"> Version = &quot;1.2.0&quot;</code>
9181
9331
  </li>
9182
9332
 
9183
9333
  <li class="never" data-hits="" data-linenumber="3">