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,282 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Promotion::Rules::ItemTotal, type: :model do
4
- let(:rule) { Spree::Promotion::Rules::ItemTotal.new }
5
- let(:order) { double(:order) }
6
-
7
- before { rule.preferred_amount_min = 50 }
8
- before { rule.preferred_amount_max = 60 }
9
-
10
- context "preferred operator_min set to gt and preferred operator_max set to lt" do
11
- before do
12
- rule.preferred_operator_min = 'gt'
13
- rule.preferred_operator_max = 'lt'
14
- end
15
-
16
- context "and item total is lower than prefered maximum amount" do
17
-
18
- context "and item total is higher than prefered minimum amount" do
19
- it "should be eligible" do
20
- allow(order).to receive_messages item_total: 51
21
- expect(rule).to be_eligible(order)
22
- end
23
- end
24
-
25
- context "and item total is equal to the prefered minimum amount" do
26
-
27
- before { allow(order).to receive_messages item_total: 50 }
28
-
29
- it "should not be eligible" do
30
- expect(rule).to_not be_eligible(order)
31
- end
32
-
33
- it "set an error message" do
34
- rule.eligible?(order)
35
- expect(rule.eligibility_errors.full_messages.first).
36
- to eq "This coupon code can't be applied to orders less than or equal to $50.00."
37
- end
38
- end
39
-
40
- context "and item total is lower to the prefered minimum amount" do
41
- before { allow(order).to receive_messages item_total: 49 }
42
-
43
- it "should not be eligible" do
44
- expect(rule).to_not be_eligible(order)
45
- end
46
-
47
- it "set an error message" do
48
- rule.eligible?(order)
49
- expect(rule.eligibility_errors.full_messages.first).
50
- to eq "This coupon code can't be applied to orders less than or equal to $50.00."
51
- end
52
- end
53
- end
54
-
55
- context "and item total is equal to the prefered maximum amount" do
56
- before { allow(order).to receive_messages item_total: 60 }
57
-
58
- it "should not be eligible" do
59
- expect(rule).to_not be_eligible(order)
60
- end
61
-
62
- it "set an error message" do
63
- rule.eligible?(order)
64
- expect(rule.eligibility_errors.full_messages.first).
65
- to eq "This coupon code can't be applied to orders higher than $60.00."
66
- end
67
- end
68
-
69
- context "and item total is higher than the prefered maximum amount" do
70
- before { allow(order).to receive_messages item_total: 61 }
71
-
72
- it "should not be eligible" do
73
- expect(rule).to_not be_eligible(order)
74
- end
75
-
76
- it "set an error message" do
77
- rule.eligible?(order)
78
- expect(rule.eligibility_errors.full_messages.first).
79
- to eq "This coupon code can't be applied to orders higher than $60.00."
80
- end
81
- end
82
-
83
- end
84
-
85
- context "preferred operator set to gt and preferred operator_max set to lte" do
86
- before do
87
- rule.preferred_operator_min = 'gt'
88
- rule.preferred_operator_max = 'lte'
89
- end
90
-
91
- context "and item total is lower than prefered maximum amount" do
92
-
93
- context "and item total is higher than prefered minimum amount" do
94
- it "should be eligible" do
95
- allow(order).to receive_messages item_total: 51
96
- expect(rule).to be_eligible(order)
97
- end
98
- end
99
-
100
- context "and item total is equal to the prefered minimum amount" do
101
-
102
- before { allow(order).to receive_messages item_total: 50 }
103
-
104
- it "should not be eligible" do
105
- expect(rule).to_not be_eligible(order)
106
- end
107
-
108
- it "set an error message" do
109
- rule.eligible?(order)
110
- expect(rule.eligibility_errors.full_messages.first).
111
- to eq "This coupon code can't be applied to orders less than or equal to $50.00."
112
- end
113
- end
114
-
115
- context "and item total is lower to the prefered minimum amount" do
116
- before { allow(order).to receive_messages item_total: 49 }
117
-
118
- it "should not be eligible" do
119
- expect(rule).to_not be_eligible(order)
120
- end
121
-
122
- it "set an error message" do
123
- rule.eligible?(order)
124
- expect(rule.eligibility_errors.full_messages.first).
125
- to eq "This coupon code can't be applied to orders less than or equal to $50.00."
126
- end
127
- end
128
- end
129
-
130
- context "and item total is equal to the prefered maximum amount" do
131
- before { allow(order).to receive_messages item_total: 60 }
132
-
133
- it "should not be eligible" do
134
- expect(rule).to be_eligible(order)
135
- end
136
- end
137
-
138
- context "and item total is higher than the prefered maximum amount" do
139
- before { allow(order).to receive_messages item_total: 61 }
140
-
141
- it "should not be eligible" do
142
- expect(rule).to_not be_eligible(order)
143
- end
144
-
145
- it "set an error message" do
146
- rule.eligible?(order)
147
- expect(rule.eligibility_errors.full_messages.first).
148
- to eq "This coupon code can't be applied to orders higher than $60.00."
149
- end
150
- end
151
- end
152
-
153
- context "preferred operator set to gte and preferred operator_max set to lt" do
154
- before do
155
- rule.preferred_operator_min = 'gte'
156
- rule.preferred_operator_max = 'lt'
157
- end
158
-
159
- context "and item total is lower than prefered maximum amount" do
160
-
161
- context "and item total is higher than prefered minimum amount" do
162
- it "should be eligible" do
163
- allow(order).to receive_messages item_total: 51
164
- expect(rule).to be_eligible(order)
165
- end
166
- end
167
-
168
- context "and item total is equal to the prefered minimum amount" do
169
-
170
- before { allow(order).to receive_messages item_total: 50 }
171
-
172
- it "should not be eligible" do
173
- expect(rule).to be_eligible(order)
174
- end
175
- end
176
-
177
- context "and item total is lower to the prefered minimum amount" do
178
- before { allow(order).to receive_messages item_total: 49 }
179
-
180
- it "should not be eligible" do
181
- expect(rule).to_not be_eligible(order)
182
- end
183
-
184
- it "set an error message" do
185
- rule.eligible?(order)
186
- expect(rule.eligibility_errors.full_messages.first).
187
- to eq "This coupon code can't be applied to orders less than $50.00."
188
- end
189
- end
190
- end
191
-
192
- context "and item total is equal to the prefered maximum amount" do
193
- before { allow(order).to receive_messages item_total: 60 }
194
-
195
- it "should not be eligible" do
196
- expect(rule).to_not be_eligible(order)
197
- end
198
-
199
- it "set an error message" do
200
- rule.eligible?(order)
201
- expect(rule.eligibility_errors.full_messages.first).
202
- to eq "This coupon code can't be applied to orders higher than $60.00."
203
- end
204
- end
205
-
206
- context "and item total is higher than the prefered maximum amount" do
207
- before { allow(order).to receive_messages item_total: 61 }
208
-
209
- it "should not be eligible" do
210
- expect(rule).to_not be_eligible(order)
211
- end
212
-
213
- it "set an error message" do
214
- rule.eligible?(order)
215
- expect(rule.eligibility_errors.full_messages.first).
216
- to eq "This coupon code can't be applied to orders higher than $60.00."
217
- end
218
- end
219
-
220
- end
221
-
222
- context "preferred operator set to gte and preferred operator_max set to lte" do
223
- before do
224
- rule.preferred_operator_min = 'gte'
225
- rule.preferred_operator_max = 'lte'
226
- end
227
-
228
- context "and item total is lower than prefered maximum amount" do
229
- context "and item total is higher than prefered minimum amount" do
230
- it "should be eligible" do
231
- allow(order).to receive_messages item_total: 51
232
- expect(rule).to be_eligible(order)
233
- end
234
- end
235
-
236
- context "and item total is equal to the prefered minimum amount" do
237
-
238
- before { allow(order).to receive_messages item_total: 50 }
239
-
240
- it "should not be eligible" do
241
- expect(rule).to be_eligible(order)
242
- end
243
- end
244
-
245
- context "and item total is lower to the prefered minimum amount" do
246
- before { allow(order).to receive_messages item_total: 49 }
247
-
248
- it "should not be eligible" do
249
- expect(rule).to_not be_eligible(order)
250
- end
251
-
252
- it "set an error message" do
253
- rule.eligible?(order)
254
- expect(rule.eligibility_errors.full_messages.first).
255
- to eq "This coupon code can't be applied to orders less than $50.00."
256
- end
257
- end
258
- end
259
-
260
- context "and item total is equal to the prefered maximum amount" do
261
- before { allow(order).to receive_messages item_total: 60 }
262
-
263
- it "should not be eligible" do
264
- expect(rule).to be_eligible(order)
265
- end
266
- end
267
-
268
- context "and item total is higher than the prefered maximum amount" do
269
- before { allow(order).to receive_messages item_total: 61 }
270
-
271
- it "should not be eligible" do
272
- expect(rule).to_not be_eligible(order)
273
- end
274
-
275
- it "set an error message" do
276
- rule.eligible?(order)
277
- expect(rule.eligibility_errors.full_messages.first).
278
- to eq "This coupon code can't be applied to orders higher than $60.00."
279
- end
280
- end
281
- end
282
- end
@@ -1,42 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Promotion::Rules::OneUsePerUser, type: :model do
4
- let(:rule) { described_class.new }
5
-
6
- describe '#eligible?(order)' do
7
- subject { rule.eligible?(order) }
8
- let(:order) { double Spree::Order, user: user }
9
- let(:user) { double Spree::LegacyUser }
10
- let(:promotion) { stub_model Spree::Promotion, used_by?: used_by }
11
- let(:used_by) { false }
12
-
13
- before { rule.promotion = promotion }
14
-
15
- context 'when the order is assigned to a user' do
16
- context 'when the user has used this promotion before' do
17
- let(:used_by) { true }
18
-
19
- it { is_expected.to be false }
20
- it "sets an error message" do
21
- subject
22
- expect(rule.eligibility_errors.full_messages.first).
23
- to eq "This coupon code can only be used once per user."
24
- end
25
- end
26
-
27
- context 'when the user has not used this promotion before' do
28
- it { is_expected.to be true }
29
- end
30
- end
31
-
32
- context 'when the order is not assigned to a user' do
33
- let(:user) { nil }
34
- it { is_expected.to be false }
35
- it "sets an error message" do
36
- subject
37
- expect(rule.eligibility_errors.full_messages.first).
38
- to eq "You need to login before applying this coupon code."
39
- end
40
- end
41
- end
42
- end
@@ -1,90 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Promotion::Rules::OptionValue do
4
- let(:rule) { Spree::Promotion::Rules::OptionValue.new }
5
-
6
- describe "#preferred_eligible_values" do
7
- subject { rule.preferred_eligible_values }
8
- it "assigns a nicely formatted hash" do
9
- rule.preferred_eligible_values = Hash["5" => "1,2", "6" => "1"]
10
- expect(subject).to eq Hash[5 => [1, 2], 6 => [1]]
11
- end
12
- end
13
-
14
- describe "#applicable?" do
15
- subject { rule.applicable?(promotable) }
16
- context "when promotable is an order" do
17
- let(:promotable) { Spree::Order.new }
18
- it { should be true }
19
- end
20
- context "when promotable is not an order" do
21
- let(:promotable) { Spree::LineItem.new }
22
- it { should be false }
23
- end
24
- end
25
-
26
- describe "#eligible?" do
27
- let(:variant) { create :variant }
28
- let(:line_item) { create :line_item, variant: variant }
29
- let(:promotable) { line_item.order }
30
- subject { rule.eligible?(promotable) }
31
- context "when there are any applicable line items" do
32
- before do
33
- rule.preferred_eligible_values = Hash[variant.product.id => [
34
- variant.option_values.pluck(:id).first
35
- ]]
36
- end
37
- it { should be true }
38
- end
39
- context "when there are no applicable line items" do
40
- before do
41
- rule.preferred_eligible_values = Hash[99 => [99]]
42
- end
43
- it { should be false }
44
- end
45
- end
46
-
47
- describe "#actionable?" do
48
- let(:line_item) { create :line_item }
49
- let(:option_value_blue) do
50
- create(
51
- :option_value,
52
- name: 'Blue',
53
- presentation: 'Blue',
54
- option_type: create(
55
- :option_type,
56
- name: 'foo-colour',
57
- presentation: 'Colour'
58
- )
59
- )
60
- end
61
- let(:option_value_medium) do
62
- create(
63
- :option_value,
64
- name: 'Medium',
65
- presentation: 'M'
66
- )
67
- end
68
- before do
69
- line_item.variant.option_values << option_value_blue
70
- rule.preferred_eligible_values = Hash[product_id => option_value_ids]
71
- end
72
- subject { rule.actionable?(line_item) }
73
- context "when the line item has the correct product" do
74
- let(:product_id) { line_item.product.id }
75
- context "when all of the option values match" do
76
- let(:option_value_ids) { [option_value_blue.id] }
77
- it { should be true }
78
- end
79
- context "when not all of the option values match" do
80
- let(:option_value_ids) { [option_value_blue.id, option_value_medium.id] }
81
- it { should be false }
82
- end
83
- end
84
- context "when the line item's product doesn't match" do
85
- let(:product_id) { 99 }
86
- let(:option_value_ids) { [99] }
87
- it { should be false }
88
- end
89
- end
90
- end
@@ -1,143 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Promotion::Rules::Product, type: :model do
4
- let(:rule) { Spree::Promotion::Rules::Product.new(rule_options) }
5
- let(:rule_options) { {} }
6
-
7
- context "#eligible?(order)" do
8
- let(:order) { Spree::Order.new }
9
-
10
- it "should be eligible if there are no products" do
11
- allow(rule).to receive_messages(eligible_products: [])
12
- expect(rule).to be_eligible(order)
13
- end
14
-
15
- before do
16
- 3.times { |i| instance_variable_set("@product#{i}", mock_model(Spree::Product)) }
17
- end
18
-
19
- context "with 'any' match policy" do
20
- let(:rule_options) { super().merge(preferred_match_policy: 'any') }
21
-
22
- it "should be eligible if any of the products is in eligible products" do
23
- allow(order).to receive_messages(products: [@product1, @product2])
24
- allow(rule).to receive_messages(eligible_products: [@product2, @product3])
25
- expect(rule).to be_eligible(order)
26
- end
27
-
28
- context "when none of the products are eligible products" do
29
- before do
30
- allow(order).to receive_messages(products: [@product1])
31
- allow(rule).to receive_messages(eligible_products: [@product2, @product3])
32
- end
33
- it { expect(rule).not_to be_eligible(order) }
34
- it "sets an error message" do
35
- rule.eligible?(order)
36
- expect(rule.eligibility_errors.full_messages.first).
37
- to eq "You need to add an applicable product before applying this coupon code."
38
- end
39
- end
40
- end
41
-
42
- context "with 'all' match policy" do
43
- let(:rule_options) { super().merge(preferred_match_policy: 'all') }
44
-
45
- it "should be eligible if all of the eligible products are ordered" do
46
- allow(order).to receive_messages(products: [@product3, @product2, @product1])
47
- allow(rule).to receive_messages(eligible_products: [@product2, @product3])
48
- expect(rule).to be_eligible(order)
49
- end
50
-
51
- context "when any of the eligible products is not ordered" do
52
- before do
53
- allow(order).to receive_messages(products: [@product1, @product2])
54
- allow(rule).to receive_messages(eligible_products: [@product1, @product2, @product3])
55
- end
56
- it { expect(rule).not_to be_eligible(order) }
57
- it "sets an error message" do
58
- rule.eligible?(order)
59
- expect(rule.eligibility_errors.full_messages.first).
60
- to eq "This coupon code can't be applied because you don't have all of the necessary products in your cart."
61
- end
62
- end
63
- end
64
-
65
- context "with 'none' match policy" do
66
- let(:rule_options) { super().merge(preferred_match_policy: 'none') }
67
-
68
- it "should be eligible if none of the order's products are in eligible products" do
69
- allow(order).to receive_messages(products: [@product1])
70
- allow(rule).to receive_messages(eligible_products: [@product2, @product3])
71
- expect(rule).to be_eligible(order)
72
- end
73
-
74
- context "when any of the order's products are in eligible products" do
75
- before do
76
- allow(order).to receive_messages(products: [@product1, @product2])
77
- allow(rule).to receive_messages(eligible_products: [@product2, @product3])
78
- end
79
- it { expect(rule).not_to be_eligible(order) }
80
- it "sets an error message" do
81
- rule.eligible?(order)
82
- expect(rule.eligibility_errors.full_messages.first).
83
- to eq "Your cart contains a product that prevents this coupon code from being applied."
84
- end
85
- end
86
- end
87
- end
88
-
89
- describe '#actionable?' do
90
- subject do
91
- rule.actionable?(line_item)
92
- end
93
-
94
- let(:rule_line_item) { Spree::LineItem.new(product: rule_product) }
95
- let(:other_line_item) { Spree::LineItem.new(product: other_product) }
96
-
97
- let(:rule_options) { super().merge(products: [rule_product]) }
98
- let(:rule_product) { mock_model(Spree::Product) }
99
- let(:other_product) { mock_model(Spree::Product) }
100
-
101
- context "with 'any' match policy" do
102
- let(:rule_options) { super().merge(preferred_match_policy: 'any') }
103
-
104
- context 'for product in rule' do
105
- let(:line_item) { rule_line_item }
106
- it { should be_truthy }
107
- end
108
-
109
- context 'for product not in rule' do
110
- let(:line_item) { other_line_item }
111
- it { should be_falsey }
112
- end
113
- end
114
-
115
- context "with 'all' match policy" do
116
- let(:rule_options) { super().merge(preferred_match_policy: 'all') }
117
-
118
- context 'for product in rule' do
119
- let(:line_item) { rule_line_item }
120
- it { should be_truthy }
121
- end
122
-
123
- context 'for product not in rule' do
124
- let(:line_item) { other_line_item }
125
- it { should be_falsey }
126
- end
127
- end
128
-
129
- context "with 'none' match policy" do
130
- let(:rule_options) { super().merge(preferred_match_policy: 'none') }
131
-
132
- context 'for product in rule' do
133
- let(:line_item) { rule_line_item }
134
- it { should be_falsey }
135
- end
136
-
137
- context 'for product not in rule' do
138
- let(:line_item) { other_line_item }
139
- it { should be_truthy }
140
- end
141
- end
142
- end
143
- end