braintree-rails 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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">