spree_core 3.2.1 → 3.2.2

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 (207) hide show
  1. checksums.yaml +4 -4
  2. data/lib/spree/core/version.rb +1 -1
  3. data/spree_core.gemspec +1 -1
  4. metadata +3 -206
  5. data/spec/fixtures/microdata.html +0 -22
  6. data/spec/fixtures/microdata_itemref.html +0 -15
  7. data/spec/fixtures/microdata_no_itemscope.html +0 -20
  8. data/spec/fixtures/thinking-cat.jpg +0 -0
  9. data/spec/helpers/base_helper_spec.rb +0 -200
  10. data/spec/helpers/products_helper_spec.rb +0 -289
  11. data/spec/lib/calculated_adjustments_spec.rb +0 -7
  12. data/spec/lib/i18n_spec.rb +0 -123
  13. data/spec/lib/search/base_spec.rb +0 -86
  14. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -103
  15. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -110
  16. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -17
  17. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -72
  18. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -39
  19. data/spec/lib/spree/core/delegate_belongs_to_spec.rb +0 -22
  20. data/spec/lib/spree/core/importer/order_spec.rb +0 -605
  21. data/spec/lib/spree/core/number_generator_spec.rb +0 -175
  22. data/spec/lib/spree/core/token_generator_spec.rb +0 -24
  23. data/spec/lib/spree/core/validators/email_spec.rb +0 -53
  24. data/spec/lib/spree/core_spec.rb +0 -23
  25. data/spec/lib/spree/localized_number_spec.rb +0 -48
  26. data/spec/lib/spree/migrations_spec.rb +0 -36
  27. data/spec/lib/spree/money_spec.rb +0 -122
  28. data/spec/lib/tasks/exchanges_spec.rb +0 -136
  29. data/spec/mailers/order_mailer_spec.rb +0 -122
  30. data/spec/mailers/reimbursement_mailer_spec.rb +0 -47
  31. data/spec/mailers/shipment_mailer_spec.rb +0 -81
  32. data/spec/mailers/test_mailer_spec.rb +0 -38
  33. data/spec/models/option_type_prototype_spec.rb +0 -9
  34. data/spec/models/spree/ability_spec.rb +0 -251
  35. data/spec/models/spree/address_spec.rb +0 -402
  36. data/spec/models/spree/adjustable/adjuster/base_spec.rb +0 -10
  37. data/spec/models/spree/adjustable/adjuster/promotion_spec.rb +0 -211
  38. data/spec/models/spree/adjustable/adjuster/tax_spec.rb +0 -86
  39. data/spec/models/spree/adjustable/adjustments_updater_spec.rb +0 -26
  40. data/spec/models/spree/adjustment_spec.rb +0 -189
  41. data/spec/models/spree/app_configuration_spec.rb +0 -26
  42. data/spec/models/spree/asset_spec.rb +0 -28
  43. data/spec/models/spree/calculator/default_tax_spec.rb +0 -152
  44. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -25
  45. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -47
  46. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -41
  47. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -15
  48. data/spec/models/spree/calculator/price_sack_spec.rb +0 -30
  49. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -47
  50. data/spec/models/spree/calculator/shipping.rb +0 -8
  51. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -23
  52. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -13
  53. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -52
  54. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -20
  55. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -29
  56. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -40
  57. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -51
  58. data/spec/models/spree/calculator_spec.rb +0 -69
  59. data/spec/models/spree/classification_spec.rb +0 -93
  60. data/spec/models/spree/concerns/display_money_spec.rb +0 -43
  61. data/spec/models/spree/concerns/user_methods_spec.rb +0 -82
  62. data/spec/models/spree/concerns/vat_price_calculation_spec.rb +0 -66
  63. data/spec/models/spree/country_spec.rb +0 -55
  64. data/spec/models/spree/credit_card_spec.rb +0 -328
  65. data/spec/models/spree/customer_return_spec.rb +0 -240
  66. data/spec/models/spree/exchange_spec.rb +0 -75
  67. data/spec/models/spree/gateway/bogus_simple.rb +0 -20
  68. data/spec/models/spree/gateway/bogus_spec.rb +0 -13
  69. data/spec/models/spree/gateway_spec.rb +0 -61
  70. data/spec/models/spree/image_spec.rb +0 -8
  71. data/spec/models/spree/inventory_unit_spec.rb +0 -256
  72. data/spec/models/spree/line_item_spec.rb +0 -346
  73. data/spec/models/spree/option_type_spec.rb +0 -14
  74. data/spec/models/spree/option_value_spec.rb +0 -18
  75. data/spec/models/spree/order/address_spec.rb +0 -50
  76. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  77. data/spec/models/spree/order/callbacks_spec.rb +0 -42
  78. data/spec/models/spree/order/checkout_spec.rb +0 -770
  79. data/spec/models/spree/order/currency_updater_spec.rb +0 -32
  80. data/spec/models/spree/order/finalizing_spec.rb +0 -114
  81. data/spec/models/spree/order/helpers_spec.rb +0 -5
  82. data/spec/models/spree/order/payment_spec.rb +0 -214
  83. data/spec/models/spree/order/risk_assessment_spec.rb +0 -84
  84. data/spec/models/spree/order/shipments_spec.rb +0 -43
  85. data/spec/models/spree/order/state_machine_spec.rb +0 -212
  86. data/spec/models/spree/order/store_credit_spec.rb +0 -426
  87. data/spec/models/spree/order/tax_spec.rb +0 -84
  88. data/spec/models/spree/order/totals_spec.rb +0 -24
  89. data/spec/models/spree/order/updating_spec.rb +0 -18
  90. data/spec/models/spree/order/validations_spec.rb +0 -15
  91. data/spec/models/spree/order_contents_spec.rb +0 -297
  92. data/spec/models/spree/order_inventory_spec.rb +0 -239
  93. data/spec/models/spree/order_merger_spec.rb +0 -135
  94. data/spec/models/spree/order_spec.rb +0 -1046
  95. data/spec/models/spree/order_updater_spec.rb +0 -305
  96. data/spec/models/spree/payment/gateway_options_spec.rb +0 -127
  97. data/spec/models/spree/payment/store_credit_spec.rb +0 -60
  98. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -291
  99. data/spec/models/spree/payment_method_spec.rb +0 -103
  100. data/spec/models/spree/payment_spec.rb +0 -919
  101. data/spec/models/spree/preference_spec.rb +0 -80
  102. data/spec/models/spree/preferences/configuration_spec.rb +0 -30
  103. data/spec/models/spree/preferences/preferable_spec.rb +0 -344
  104. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -58
  105. data/spec/models/spree/preferences/store_spec.rb +0 -46
  106. data/spec/models/spree/price_spec.rb +0 -128
  107. data/spec/models/spree/product/scopes_spec.rb +0 -183
  108. data/spec/models/spree/product_duplicator_spec.rb +0 -103
  109. data/spec/models/spree/product_filter_spec.rb +0 -26
  110. data/spec/models/spree/product_option_type_spec.rb +0 -9
  111. data/spec/models/spree/product_promotion_rule_spec.rb +0 -9
  112. data/spec/models/spree/product_property_spec.rb +0 -26
  113. data/spec/models/spree/product_spec.rb +0 -629
  114. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -113
  115. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -148
  116. data/spec/models/spree/promotion/actions/create_line_items_spec.rb +0 -86
  117. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -36
  118. data/spec/models/spree/promotion/rules/country_spec.rb +0 -36
  119. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -75
  120. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -282
  121. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -42
  122. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -90
  123. data/spec/models/spree/promotion/rules/product_spec.rb +0 -143
  124. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -102
  125. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -27
  126. data/spec/models/spree/promotion/rules/user_spec.rb +0 -45
  127. data/spec/models/spree/promotion_action_spec.rb +0 -10
  128. data/spec/models/spree/promotion_category_spec.rb +0 -17
  129. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -102
  130. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -323
  131. data/spec/models/spree/promotion_handler/free_shipping_spec.rb +0 -48
  132. data/spec/models/spree/promotion_handler/page_spec.rb +0 -44
  133. data/spec/models/spree/promotion_rule_spec.rb +0 -29
  134. data/spec/models/spree/promotion_rule_taxon_spec.rb +0 -9
  135. data/spec/models/spree/promotion_rule_user_spec.rb +0 -9
  136. data/spec/models/spree/promotion_spec.rb +0 -679
  137. data/spec/models/spree/property_prototype_spec.rb +0 -9
  138. data/spec/models/spree/property_spec.rb +0 -5
  139. data/spec/models/spree/prototype_spec.rb +0 -5
  140. data/spec/models/spree/prototype_taxon_spec.rb +0 -9
  141. data/spec/models/spree/refund_reason_spec.rb +0 -20
  142. data/spec/models/spree/refund_spec.rb +0 -195
  143. data/spec/models/spree/reimbursement/credit_spec.rb +0 -36
  144. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -140
  145. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -83
  146. data/spec/models/spree/reimbursement_performer_spec.rb +0 -30
  147. data/spec/models/spree/reimbursement_spec.rb +0 -188
  148. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -63
  149. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -53
  150. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -46
  151. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -55
  152. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -101
  153. data/spec/models/spree/return_authorization_reason_spec.rb +0 -7
  154. data/spec/models/spree/return_authorization_spec.rb +0 -230
  155. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -77
  156. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -58
  157. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -61
  158. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -32
  159. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -29
  160. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -35
  161. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -65
  162. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  163. data/spec/models/spree/return_item_spec.rb +0 -731
  164. data/spec/models/spree/returns_calculator_spec.rb +0 -14
  165. data/spec/models/spree/role_spec.rb +0 -7
  166. data/spec/models/spree/shipment_spec.rb +0 -742
  167. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  168. data/spec/models/spree/shipping_category_spec.rb +0 -19
  169. data/spec/models/spree/shipping_method_spec.rb +0 -95
  170. data/spec/models/spree/shipping_rate_spec.rb +0 -140
  171. data/spec/models/spree/state_spec.rb +0 -29
  172. data/spec/models/spree/stock/availability_validator_spec.rb +0 -36
  173. data/spec/models/spree/stock/content_item_spec.rb +0 -31
  174. data/spec/models/spree/stock/coordinator_spec.rb +0 -61
  175. data/spec/models/spree/stock/differentiator_spec.rb +0 -39
  176. data/spec/models/spree/stock/estimator_spec.rb +0 -202
  177. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -38
  178. data/spec/models/spree/stock/package_spec.rb +0 -182
  179. data/spec/models/spree/stock/packer_spec.rb +0 -70
  180. data/spec/models/spree/stock/prioritizer_spec.rb +0 -125
  181. data/spec/models/spree/stock/quantifier_spec.rb +0 -126
  182. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -29
  183. data/spec/models/spree/stock/splitter/base_spec.rb +0 -21
  184. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -47
  185. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -32
  186. data/spec/models/spree/stock_item_spec.rb +0 -432
  187. data/spec/models/spree/stock_location_spec.rb +0 -243
  188. data/spec/models/spree/stock_movement_spec.rb +0 -120
  189. data/spec/models/spree/stock_transfer_spec.rb +0 -50
  190. data/spec/models/spree/store_credit_event_spec.rb +0 -101
  191. data/spec/models/spree/store_credit_spec.rb +0 -786
  192. data/spec/models/spree/store_spec.rb +0 -78
  193. data/spec/models/spree/tax_category_spec.rb +0 -32
  194. data/spec/models/spree/tax_rate_spec.rb +0 -561
  195. data/spec/models/spree/taxon_spec.rb +0 -85
  196. data/spec/models/spree/taxonomy_spec.rb +0 -18
  197. data/spec/models/spree/tracker_spec.rb +0 -21
  198. data/spec/models/spree/user_spec.rb +0 -203
  199. data/spec/models/spree/variant_spec.rb +0 -818
  200. data/spec/models/spree/zone_member_spec.rb +0 -38
  201. data/spec/models/spree/zone_spec.rb +0 -472
  202. data/spec/spec_helper.rb +0 -79
  203. data/spec/support/big_decimal.rb +0 -5
  204. data/spec/support/concerns/adjustment_source.rb +0 -23
  205. data/spec/support/concerns/default_price.rb +0 -37
  206. data/spec/support/rake.rb +0 -13
  207. data/spec/support/test_gateway.rb +0 -2
@@ -1,9 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::PropertyPrototype do
4
- describe 'Validations' do
5
- it { is_expected.to validate_presence_of(:prototype) }
6
- it { is_expected.to validate_presence_of(:property) }
7
- it { is_expected.to validate_uniqueness_of(:prototype_id).scoped_to(:property_id).allow_nil }
8
- end
9
- end
@@ -1,5 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Property, type: :model do
4
-
5
- end
@@ -1,5 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Prototype, type: :model do
4
-
5
- end
@@ -1,9 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::PrototypeTaxon do
4
- describe 'Validations' do
5
- it { is_expected.to validate_presence_of(:prototype) }
6
- it { is_expected.to validate_presence_of(:taxon) }
7
- it { is_expected.to validate_uniqueness_of(:prototype_id).scoped_to(:taxon_id).allow_nil }
8
- end
9
- end
@@ -1,20 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::RefundReason do
4
- describe 'Associations' do
5
- it { is_expected.to have_many(:refunds).dependent(:restrict_with_error) }
6
- end
7
-
8
- describe 'Class Methods' do
9
- describe '.return_processing_reason' do
10
- context 'default refund reason present' do
11
- let!(:default_refund_reason) { create(:default_refund_reason) }
12
- it { expect(described_class.return_processing_reason).to eq(default_refund_reason) }
13
- end
14
-
15
- context 'default refund reason not present' do
16
- it { expect(described_class.return_processing_reason).to eq(nil) }
17
- end
18
- end
19
- end
20
- end
@@ -1,195 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Refund, type: :model do
4
-
5
- describe 'create' do
6
- let(:amount) { 100.0 }
7
- let(:amount_in_cents) { amount * 100 }
8
-
9
- let(:authorization) { generate(:refund_transaction_id) }
10
-
11
- let(:payment) { create(:payment, amount: payment_amount, payment_method: payment_method) }
12
- let(:payment_amount) { amount*2 }
13
- let(:payment_method) { create(:credit_card_payment_method) }
14
-
15
- let(:refund_reason) { create(:refund_reason) }
16
-
17
- let(:gateway_response) {
18
- ActiveMerchant::Billing::Response.new(
19
- gateway_response_success,
20
- gateway_response_message,
21
- gateway_response_params,
22
- gateway_response_options
23
- )
24
- }
25
- let(:gateway_response_success) { true }
26
- let(:gateway_response_message) { "" }
27
- let(:gateway_response_params) { {} }
28
- let(:gateway_response_options) { {} }
29
-
30
- subject { create(:refund, payment: payment, amount: amount, reason: refund_reason, transaction_id: nil) }
31
-
32
- before do
33
- allow(payment.payment_method)
34
- .to receive(:credit)
35
- .with(amount_in_cents, payment.source, payment.transaction_id, {originator: an_instance_of(Spree::Refund)})
36
- .and_return(gateway_response)
37
- end
38
-
39
- context "transaction id exists on creation" do
40
- let(:transaction_id) { "12kfjas0" }
41
- subject { create(:refund, payment: payment, amount: amount, reason: refund_reason, transaction_id: transaction_id) }
42
-
43
- it "creates a refund record" do
44
- expect{ subject }.to change { Spree::Refund.count }.by(1)
45
- end
46
-
47
- it "maintains the transaction id" do
48
- expect(subject.reload.transaction_id).to eq transaction_id
49
- end
50
-
51
- it "saves the amount" do
52
- expect(subject.reload.amount).to eq amount
53
- end
54
-
55
- it "creates a log entry" do
56
- expect(subject.log_entries).to be_present
57
- end
58
-
59
- it "does not attempt to process a transaction" do
60
- expect(payment.payment_method).not_to receive(:credit)
61
- subject
62
- end
63
-
64
- end
65
-
66
- context "processing is successful" do
67
- let(:gateway_response_options) { { authorization: authorization } }
68
-
69
- it 'should create a refund' do
70
- expect{ subject }.to change{ Spree::Refund.count }.by(1)
71
- end
72
-
73
- it 'return the newly created refund' do
74
- expect(subject).to be_a(Spree::Refund)
75
- end
76
-
77
- it 'should save the returned authorization value' do
78
- expect(subject.reload.transaction_id).to eq authorization
79
- end
80
-
81
- it 'should save the passed amount as the refund amount' do
82
- expect(subject.amount).to eq amount
83
- end
84
-
85
- it 'should create a log entry' do
86
- expect(subject.log_entries).to be_present
87
- end
88
-
89
- it "attempts to process a transaction" do
90
- expect(payment.payment_method).to receive(:credit).once
91
- subject
92
- end
93
-
94
- it 'should update the payment total' do
95
- expect(payment.order.updater).to receive(:update)
96
- subject
97
- end
98
-
99
- end
100
-
101
- context "processing fails" do
102
- let(:gateway_response_success) { false }
103
- let(:gateway_response_message) { "failure message" }
104
-
105
- it 'should raise error and not create a refund' do
106
- expect do
107
- expect { subject }.to raise_error(Spree::Core::GatewayError, gateway_response_message)
108
- end.to_not change{ Spree::Refund.count }
109
- end
110
- end
111
-
112
- context 'without payment profiles supported' do
113
- before do
114
- allow(payment.payment_method).to receive(:payment_profiles_supported?) { false }
115
- end
116
-
117
- it 'should not supply the payment source' do
118
- expect(payment.payment_method)
119
- .to receive(:credit)
120
- .with(amount * 100, payment.transaction_id, {originator: an_instance_of(Spree::Refund)})
121
- .and_return(gateway_response)
122
-
123
- subject
124
- end
125
- end
126
-
127
- context 'with payment profiles supported' do
128
- before do
129
- allow(payment.payment_method).to receive(:payment_profiles_supported?) { true }
130
- end
131
-
132
- it 'should supply the payment source' do
133
- expect(payment.payment_method)
134
- .to receive(:credit)
135
- .with(amount_in_cents, payment.source, payment.transaction_id, {originator: an_instance_of(Spree::Refund)})
136
- .and_return(gateway_response)
137
-
138
- subject
139
- end
140
- end
141
-
142
- context 'with an activemerchant gateway connection error' do
143
- before do
144
- message = double("gateway_error")
145
- expect(payment.payment_method).to receive(:credit).with(
146
- amount_in_cents,
147
- payment.source,
148
- payment.transaction_id,
149
- originator: an_instance_of(Spree::Refund)
150
- ).and_raise(ActiveMerchant::ConnectionError.new(message, nil))
151
- end
152
-
153
- it 'raises Spree::Core::GatewayError' do
154
- expect { subject }.to raise_error(Spree::Core::GatewayError, Spree.t(:unable_to_connect_to_gateway))
155
- end
156
- end
157
-
158
- context 'with amount too large' do
159
- let(:payment_amount) { 10 }
160
- let(:amount) { payment_amount*2 }
161
-
162
- it 'is invalid' do
163
- expect { subject }.to raise_error { |error|
164
- expect(error).to be_a(ActiveRecord::RecordInvalid)
165
- expect(error.record.errors.full_messages).to eq ["Amount #{I18n.t('activerecord.errors.models.spree/refund.attributes.amount.greater_than_allowed')}"]
166
- }
167
- end
168
- end
169
- end
170
-
171
- describe 'total_amount_reimbursed_for' do
172
- let(:customer_return) { reimbursement.customer_return}
173
- let(:reimbursement) { create(:reimbursement) }
174
- let!(:default_refund_reason) { Spree::RefundReason.find_or_create_by!(name: Spree::RefundReason::RETURN_PROCESSING_REASON, mutable: false) }
175
-
176
- subject { Spree::Refund.total_amount_reimbursed_for(reimbursement) }
177
-
178
- context 'with reimbursements performed' do
179
- before { reimbursement.perform! }
180
-
181
- it 'returns the total amount' do
182
- amount = Spree::Refund.total_amount_reimbursed_for(reimbursement)
183
- expect(amount).to be > 0
184
- expect(amount).to eq reimbursement.total
185
- end
186
- end
187
-
188
- context 'without reimbursements performed' do
189
- it 'returns zero' do
190
- amount = Spree::Refund.total_amount_reimbursed_for(reimbursement)
191
- expect(amount).to eq 0
192
- end
193
- end
194
- end
195
- end
@@ -1,36 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spree
4
- describe Reimbursement::Credit, type: :model do
5
- context 'class methods' do
6
- describe '.total_amount_reimbursed_for' do
7
- subject { Spree::Reimbursement::Credit.total_amount_reimbursed_for(reimbursement) }
8
-
9
- let(:reimbursement) { create(:reimbursement) }
10
- let(:credit_double) { double(amount: 99.99) }
11
-
12
- before { allow(reimbursement).to receive(:credits).and_return([credit_double, credit_double])}
13
-
14
- it 'should sum the amounts of all of the reimbursements credits' do
15
- expect(subject).to eq BigDecimal.new('199.98')
16
- end
17
- end
18
- end
19
-
20
- describe '#description' do
21
- let(:credit) { Spree::Reimbursement::Credit.new(amount: 100, creditable: mock_model(Spree::PaymentMethod::Check)) }
22
-
23
- it "should be the creditable's class name" do
24
- expect(credit.description).to eq 'Check'
25
- end
26
- end
27
-
28
- describe '#display_amount' do
29
- let(:credit) { Spree::Reimbursement::Credit.new(amount: 100) }
30
-
31
- it 'should be a money object' do
32
- expect(credit.display_amount).to eq Spree::Money.new(100, currency: "USD")
33
- end
34
- end
35
- end
36
- end
@@ -1,140 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spree
4
- describe Reimbursement::ReimbursementTypeEngine, type: :model do
5
- describe '#calculate_reimbursement_types' do
6
- let(:return_item) { create(:return_item) }
7
- let(:return_items) { [ return_item ] }
8
- let(:reimbursement_type_engine) { Spree::Reimbursement::ReimbursementTypeEngine.new(return_items) }
9
- let(:expired_reimbursement_type) { Spree::ReimbursementType::OriginalPayment }
10
- let(:override_reimbursement_type) { Spree::ReimbursementType::OriginalPayment.new }
11
- let(:preferred_reimbursement_type) { Spree::ReimbursementType::OriginalPayment.new }
12
- let(:calculated_reimbursement_types) { subject }
13
- let(:all_reimbursement_types) {[
14
- reimbursement_type_engine.default_reimbursement_type,
15
- reimbursement_type_engine.exchange_reimbursement_type,
16
- expired_reimbursement_type,
17
- override_reimbursement_type,
18
- preferred_reimbursement_type
19
- ]}
20
-
21
- subject { reimbursement_type_engine.calculate_reimbursement_types }
22
-
23
- shared_examples_for "reimbursement type hash" do
24
- it "contain all keys that respond to reimburse" do
25
- calculated_reimbursement_types.keys.each do |r_type|
26
- expect(r_type).to respond_to :reimburse
27
- end
28
- end
29
- end
30
-
31
- before do
32
- reimbursement_type_engine.expired_reimbursement_type = expired_reimbursement_type
33
- allow(return_item.inventory_unit.shipment).to receive(:shipped_at).and_return(Date.yesterday)
34
- allow(return_item).to receive(:exchange_required?).and_return(false)
35
- end
36
-
37
- context 'the return item requires exchange' do
38
- before { allow(return_item).to receive(:exchange_required?).and_return(true) }
39
-
40
- it 'returns a hash with the exchange reimbursement type associated to the return items' do
41
- expect(calculated_reimbursement_types[reimbursement_type_engine.exchange_reimbursement_type]).to eq(return_items)
42
- end
43
-
44
- it 'the return items are not included in any of the other reimbursement types' do
45
- (all_reimbursement_types - [reimbursement_type_engine.exchange_reimbursement_type]).each do |r_type|
46
- expect(calculated_reimbursement_types[r_type]).to eq([])
47
- end
48
- end
49
-
50
- it_should_behave_like 'reimbursement type hash'
51
- end
52
-
53
- context 'the return item does not require exchange' do
54
- context 'the return item has an override reimbursement type' do
55
- before { allow(return_item).to receive(:override_reimbursement_type).and_return(override_reimbursement_type) }
56
-
57
- it 'returns a hash with the override reimbursement type associated to the return items' do
58
- expect(calculated_reimbursement_types[override_reimbursement_type.class]).to eq(return_items)
59
- end
60
-
61
- it 'the return items are not included in any of the other reimbursement types' do
62
- (all_reimbursement_types - [override_reimbursement_type.class]).each do |r_type|
63
- expect(calculated_reimbursement_types[r_type]).to eq([])
64
- end
65
- end
66
-
67
- it_should_behave_like 'reimbursement type hash'
68
- end
69
-
70
- context 'the return item does not have an override reimbursement type' do
71
- context 'the return item has a preferred reimbursement type' do
72
- before { allow(return_item).to receive(:preferred_reimbursement_type).and_return(preferred_reimbursement_type) }
73
-
74
- context 'the reimbursement type is not valid for the return item' do
75
- before { expect(reimbursement_type_engine).to receive(:valid_preferred_reimbursement_type?).and_return(false) }
76
-
77
- it 'returns a hash with no return items associated to the preferred reimbursement type' do
78
- expect(calculated_reimbursement_types[preferred_reimbursement_type]).to eq([])
79
- end
80
-
81
- it 'the return items are not included in any of the other reimbursement types' do
82
- (all_reimbursement_types - [preferred_reimbursement_type]).each do |r_type|
83
- expect(calculated_reimbursement_types[r_type]).to eq([])
84
- end
85
- end
86
-
87
- it_should_behave_like 'reimbursement type hash'
88
- end
89
-
90
- context 'the reimbursement type is valid for the return item' do
91
- it 'returns a hash with the expired reimbursement type associated to the return items' do
92
- expect(calculated_reimbursement_types[preferred_reimbursement_type.class]).to eq(return_items)
93
- end
94
-
95
- it 'the return items are not included in any of the other reimbursement types' do
96
- (all_reimbursement_types - [preferred_reimbursement_type.class]).each do |r_type|
97
- expect(calculated_reimbursement_types[r_type]).to eq([])
98
- end
99
- end
100
-
101
- it_should_behave_like 'reimbursement type hash'
102
- end
103
- end
104
-
105
- context 'the return item does not have a preferred reimbursement type' do
106
- context 'the return item is past the time constraint' do
107
- before { allow(reimbursement_type_engine).to receive(:past_reimbursable_time_period?).and_return(true) }
108
-
109
- it 'returns a hash with the expired reimbursement type associated to the return items' do
110
- expect(calculated_reimbursement_types[expired_reimbursement_type]).to eq(return_items)
111
- end
112
-
113
- it 'the return items are not included in any of the other reimbursement types' do
114
- (all_reimbursement_types - [expired_reimbursement_type]).each do |r_type|
115
- expect(calculated_reimbursement_types[r_type]).to eq([])
116
- end
117
- end
118
-
119
- it_should_behave_like 'reimbursement type hash'
120
- end
121
-
122
- context 'the return item is within the time constraint' do
123
- it 'returns a hash with the default reimbursement type associated to the return items' do
124
- expect(calculated_reimbursement_types[reimbursement_type_engine.default_reimbursement_type]).to eq(return_items)
125
- end
126
-
127
- it 'the return items are not included in any of the other reimbursement types' do
128
- (all_reimbursement_types - [reimbursement_type_engine.default_reimbursement_type]).each do |r_type|
129
- expect(calculated_reimbursement_types[r_type]).to eq([])
130
- end
131
- end
132
-
133
- it_should_behave_like 'reimbursement type hash'
134
- end
135
- end
136
- end
137
- end
138
- end
139
- end
140
- end
@@ -1,83 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spree
4
- describe Reimbursement::ReimbursementTypeValidator, type: :model do
5
- class DummyClass
6
- include Spree::Reimbursement::ReimbursementTypeValidator
7
-
8
- class_attribute :expired_reimbursement_type
9
- self.expired_reimbursement_type = Spree::ReimbursementType::Credit
10
-
11
- class_attribute :refund_time_constraint
12
- self.refund_time_constraint = 90.days
13
- end
14
-
15
- let(:return_item) do
16
- create(
17
- :return_item,
18
- preferred_reimbursement_type: preferred_reimbursement_type
19
- )
20
- end
21
- let(:dummy) { DummyClass.new }
22
- let(:preferred_reimbursement_type) { Spree::ReimbursementType::Credit.new }
23
-
24
- describe '#valid_preferred_reimbursement_type?' do
25
- before do
26
- allow(dummy).to receive(:past_reimbursable_time_period?).and_return(true)
27
- end
28
-
29
- subject { dummy.valid_preferred_reimbursement_type?(return_item) }
30
-
31
- context 'is valid' do
32
- it 'if it is not past the reimbursable time period' do
33
- allow(dummy).to receive(:past_reimbursable_time_period?).and_return(false)
34
- expect(subject).to be true
35
- end
36
-
37
- it 'if the return items preferred method of reimbursement is the expired method of reimbursement' do
38
- expect(subject).to be true
39
- end
40
- end
41
-
42
- context 'is invalid' do
43
- it 'if the return item is past the eligible time period and the preferred method of reimbursement is not the expired method of reimbursement' do
44
- return_item.preferred_reimbursement_type =
45
- Spree::ReimbursementType::OriginalPayment.new
46
- expect(subject).to be false
47
- end
48
- end
49
- end
50
-
51
- describe '#past_reimbursable_time_period?' do
52
- subject { dummy.past_reimbursable_time_period?(return_item) }
53
-
54
- before do
55
- allow(return_item).to receive_message_chain(:inventory_unit, :shipment, :shipped_at).and_return(shipped_at)
56
- end
57
-
58
- context 'it has not shipped' do
59
- let(:shipped_at) { nil }
60
-
61
- it 'is not past the reimbursable time period' do
62
- expect(subject).to be_falsey
63
- end
64
- end
65
-
66
- context 'it has shipped and it is more recent than the time constraint' do
67
- let(:shipped_at) { (dummy.refund_time_constraint - 1.day).ago }
68
-
69
- it 'is not past the reimbursable time period' do
70
- expect(subject).to be false
71
- end
72
- end
73
-
74
- context 'it has shipped and it is further in the past than the time constraint' do
75
- let(:shipped_at) { (dummy.refund_time_constraint + 1.day).ago }
76
-
77
- it 'is past the reimbursable time period' do
78
- expect(subject).to be true
79
- end
80
- end
81
- end
82
- end
83
- end