spree_core 3.3.0.rc1 → 3.3.0.rc2

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 (220) hide show
  1. checksums.yaml +4 -4
  2. data/app/helpers/spree/base_helper.rb +1 -1
  3. data/app/mailers/spree/base_mailer.rb +5 -0
  4. data/app/models/spree/ability.rb +4 -1
  5. data/app/models/spree/image.rb +6 -2
  6. data/app/models/spree/order.rb +10 -9
  7. data/app/models/spree/order/payments.rb +1 -1
  8. data/app/models/spree/payment_method/store_credit.rb +4 -0
  9. data/app/models/spree/shipment.rb +2 -0
  10. data/app/views/spree/shared/_base_mailer_header.html.erb +5 -1
  11. data/app/views/spree/shared/_mailer_line_item.html.erb +5 -1
  12. data/config/routes.rb +0 -3
  13. data/lib/spree/core/components.rb +17 -0
  14. data/lib/spree/core/controller_helpers/auth.rb +3 -1
  15. data/lib/spree/core/engine.rb +1 -0
  16. data/lib/spree/core/validators/email.rb +1 -5
  17. data/lib/spree/core/version.rb +1 -1
  18. data/spree_core.gemspec +1 -1
  19. metadata +4 -204
  20. data/lib/spree/testing_support/shoulda_matcher_configuration.rb +0 -6
  21. data/spec/fixtures/thinking-cat.jpg +0 -0
  22. data/spec/helpers/base_helper_spec.rb +0 -200
  23. data/spec/helpers/products_helper_spec.rb +0 -289
  24. data/spec/lib/calculated_adjustments_spec.rb +0 -7
  25. data/spec/lib/i18n_spec.rb +0 -123
  26. data/spec/lib/search/base_spec.rb +0 -86
  27. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -103
  28. data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -110
  29. data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -17
  30. data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -72
  31. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -39
  32. data/spec/lib/spree/core/delegate_belongs_to_spec.rb +0 -22
  33. data/spec/lib/spree/core/importer/order_spec.rb +0 -607
  34. data/spec/lib/spree/core/number_generator_spec.rb +0 -139
  35. data/spec/lib/spree/core/token_generator_spec.rb +0 -24
  36. data/spec/lib/spree/core/validators/email_spec.rb +0 -54
  37. data/spec/lib/spree/core_spec.rb +0 -23
  38. data/spec/lib/spree/localized_number_spec.rb +0 -54
  39. data/spec/lib/spree/migrations_spec.rb +0 -36
  40. data/spec/lib/spree/money_spec.rb +0 -122
  41. data/spec/lib/tasks/exchanges_spec.rb +0 -136
  42. data/spec/mailers/order_mailer_spec.rb +0 -122
  43. data/spec/mailers/reimbursement_mailer_spec.rb +0 -52
  44. data/spec/mailers/shipment_mailer_spec.rb +0 -81
  45. data/spec/mailers/test_mailer_spec.rb +0 -38
  46. data/spec/models/spree/ability_spec.rb +0 -251
  47. data/spec/models/spree/address_spec.rb +0 -402
  48. data/spec/models/spree/adjustable/adjuster/base_spec.rb +0 -10
  49. data/spec/models/spree/adjustable/adjuster/promotion_spec.rb +0 -211
  50. data/spec/models/spree/adjustable/adjuster/tax_spec.rb +0 -86
  51. data/spec/models/spree/adjustable/adjustments_updater_spec.rb +0 -26
  52. data/spec/models/spree/adjustment_spec.rb +0 -189
  53. data/spec/models/spree/app_configuration_spec.rb +0 -26
  54. data/spec/models/spree/asset_spec.rb +0 -28
  55. data/spec/models/spree/calculator/default_tax_spec.rb +0 -152
  56. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -25
  57. data/spec/models/spree/calculator/flat_rate_spec.rb +0 -47
  58. data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -41
  59. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -15
  60. data/spec/models/spree/calculator/price_sack_spec.rb +0 -30
  61. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -47
  62. data/spec/models/spree/calculator/shipping.rb +0 -8
  63. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -23
  64. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -13
  65. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -52
  66. data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -20
  67. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -29
  68. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -40
  69. data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -51
  70. data/spec/models/spree/calculator_spec.rb +0 -69
  71. data/spec/models/spree/classification_spec.rb +0 -93
  72. data/spec/models/spree/concerns/display_money_spec.rb +0 -43
  73. data/spec/models/spree/concerns/user_methods_spec.rb +0 -82
  74. data/spec/models/spree/concerns/vat_price_calculation_spec.rb +0 -66
  75. data/spec/models/spree/country_spec.rb +0 -55
  76. data/spec/models/spree/credit_card_spec.rb +0 -328
  77. data/spec/models/spree/customer_return_spec.rb +0 -240
  78. data/spec/models/spree/exchange_spec.rb +0 -75
  79. data/spec/models/spree/gateway/bogus_simple.rb +0 -20
  80. data/spec/models/spree/gateway/bogus_spec.rb +0 -13
  81. data/spec/models/spree/gateway_spec.rb +0 -61
  82. data/spec/models/spree/image_spec.rb +0 -8
  83. data/spec/models/spree/inventory_unit_spec.rb +0 -256
  84. data/spec/models/spree/line_item_spec.rb +0 -348
  85. data/spec/models/spree/option_type_prototype_spec.rb +0 -9
  86. data/spec/models/spree/option_type_spec.rb +0 -14
  87. data/spec/models/spree/option_value_spec.rb +0 -18
  88. data/spec/models/spree/order/address_spec.rb +0 -50
  89. data/spec/models/spree/order/adjustments_spec.rb +0 -29
  90. data/spec/models/spree/order/callbacks_spec.rb +0 -42
  91. data/spec/models/spree/order/checkout_spec.rb +0 -770
  92. data/spec/models/spree/order/currency_updater_spec.rb +0 -32
  93. data/spec/models/spree/order/finalizing_spec.rb +0 -114
  94. data/spec/models/spree/order/helpers_spec.rb +0 -5
  95. data/spec/models/spree/order/payment_spec.rb +0 -214
  96. data/spec/models/spree/order/risk_assessment_spec.rb +0 -84
  97. data/spec/models/spree/order/shipments_spec.rb +0 -43
  98. data/spec/models/spree/order/state_machine_spec.rb +0 -212
  99. data/spec/models/spree/order/store_credit_spec.rb +0 -457
  100. data/spec/models/spree/order/tax_spec.rb +0 -84
  101. data/spec/models/spree/order/totals_spec.rb +0 -24
  102. data/spec/models/spree/order/updating_spec.rb +0 -18
  103. data/spec/models/spree/order/validations_spec.rb +0 -15
  104. data/spec/models/spree/order_contents_spec.rb +0 -332
  105. data/spec/models/spree/order_inventory_spec.rb +0 -247
  106. data/spec/models/spree/order_merger_spec.rb +0 -135
  107. data/spec/models/spree/order_spec.rb +0 -1067
  108. data/spec/models/spree/order_updater_spec.rb +0 -305
  109. data/spec/models/spree/payment/gateway_options_spec.rb +0 -127
  110. data/spec/models/spree/payment/store_credit_spec.rb +0 -60
  111. data/spec/models/spree/payment_method/store_credit_spec.rb +0 -291
  112. data/spec/models/spree/payment_method_spec.rb +0 -108
  113. data/spec/models/spree/payment_spec.rb +0 -922
  114. data/spec/models/spree/preference_spec.rb +0 -80
  115. data/spec/models/spree/preferences/configuration_spec.rb +0 -30
  116. data/spec/models/spree/preferences/preferable_spec.rb +0 -344
  117. data/spec/models/spree/preferences/scoped_store_spec.rb +0 -58
  118. data/spec/models/spree/preferences/store_spec.rb +0 -46
  119. data/spec/models/spree/price_spec.rb +0 -128
  120. data/spec/models/spree/product/scopes_spec.rb +0 -174
  121. data/spec/models/spree/product_duplicator_spec.rb +0 -102
  122. data/spec/models/spree/product_filter_spec.rb +0 -26
  123. data/spec/models/spree/product_option_type_spec.rb +0 -9
  124. data/spec/models/spree/product_promotion_rule_spec.rb +0 -9
  125. data/spec/models/spree/product_property_spec.rb +0 -26
  126. data/spec/models/spree/product_spec.rb +0 -626
  127. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -113
  128. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -148
  129. data/spec/models/spree/promotion/actions/create_line_items_spec.rb +0 -86
  130. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -36
  131. data/spec/models/spree/promotion/rules/country_spec.rb +0 -36
  132. data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -75
  133. data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -282
  134. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -42
  135. data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -90
  136. data/spec/models/spree/promotion/rules/product_spec.rb +0 -143
  137. data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -102
  138. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -27
  139. data/spec/models/spree/promotion/rules/user_spec.rb +0 -45
  140. data/spec/models/spree/promotion_action_spec.rb +0 -10
  141. data/spec/models/spree/promotion_category_spec.rb +0 -17
  142. data/spec/models/spree/promotion_handler/cart_spec.rb +0 -102
  143. data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -323
  144. data/spec/models/spree/promotion_handler/free_shipping_spec.rb +0 -48
  145. data/spec/models/spree/promotion_handler/page_spec.rb +0 -44
  146. data/spec/models/spree/promotion_rule_spec.rb +0 -29
  147. data/spec/models/spree/promotion_rule_taxon_spec.rb +0 -9
  148. data/spec/models/spree/promotion_rule_user_spec.rb +0 -9
  149. data/spec/models/spree/promotion_spec.rb +0 -674
  150. data/spec/models/spree/property_prototype_spec.rb +0 -9
  151. data/spec/models/spree/property_spec.rb +0 -5
  152. data/spec/models/spree/prototype_spec.rb +0 -5
  153. data/spec/models/spree/prototype_taxon_spec.rb +0 -9
  154. data/spec/models/spree/refund_reason_spec.rb +0 -20
  155. data/spec/models/spree/refund_spec.rb +0 -195
  156. data/spec/models/spree/reimbursement/credit_spec.rb +0 -36
  157. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -140
  158. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -83
  159. data/spec/models/spree/reimbursement_performer_spec.rb +0 -30
  160. data/spec/models/spree/reimbursement_spec.rb +0 -188
  161. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -63
  162. data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -53
  163. data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -46
  164. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -55
  165. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -101
  166. data/spec/models/spree/return_authorization_reason_spec.rb +0 -7
  167. data/spec/models/spree/return_authorization_spec.rb +0 -230
  168. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -77
  169. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -58
  170. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -61
  171. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -32
  172. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -29
  173. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -35
  174. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -65
  175. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
  176. data/spec/models/spree/return_item_spec.rb +0 -734
  177. data/spec/models/spree/returns_calculator_spec.rb +0 -14
  178. data/spec/models/spree/role_spec.rb +0 -7
  179. data/spec/models/spree/shipment_spec.rb +0 -744
  180. data/spec/models/spree/shipping_calculator_spec.rb +0 -45
  181. data/spec/models/spree/shipping_category_spec.rb +0 -19
  182. data/spec/models/spree/shipping_method_spec.rb +0 -125
  183. data/spec/models/spree/shipping_rate_spec.rb +0 -140
  184. data/spec/models/spree/state_spec.rb +0 -29
  185. data/spec/models/spree/stock/availability_validator_spec.rb +0 -42
  186. data/spec/models/spree/stock/content_item_spec.rb +0 -31
  187. data/spec/models/spree/stock/coordinator_spec.rb +0 -61
  188. data/spec/models/spree/stock/differentiator_spec.rb +0 -39
  189. data/spec/models/spree/stock/estimator_spec.rb +0 -202
  190. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -37
  191. data/spec/models/spree/stock/package_spec.rb +0 -182
  192. data/spec/models/spree/stock/packer_spec.rb +0 -70
  193. data/spec/models/spree/stock/prioritizer_spec.rb +0 -125
  194. data/spec/models/spree/stock/quantifier_spec.rb +0 -126
  195. data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -29
  196. data/spec/models/spree/stock/splitter/base_spec.rb +0 -21
  197. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -47
  198. data/spec/models/spree/stock/splitter/weight_spec.rb +0 -32
  199. data/spec/models/spree/stock_item_spec.rb +0 -465
  200. data/spec/models/spree/stock_location_spec.rb +0 -243
  201. data/spec/models/spree/stock_movement_spec.rb +0 -120
  202. data/spec/models/spree/stock_transfer_spec.rb +0 -50
  203. data/spec/models/spree/store_credit_event_spec.rb +0 -101
  204. data/spec/models/spree/store_credit_spec.rb +0 -798
  205. data/spec/models/spree/store_spec.rb +0 -78
  206. data/spec/models/spree/tax_category_spec.rb +0 -32
  207. data/spec/models/spree/tax_rate_spec.rb +0 -561
  208. data/spec/models/spree/taxon_spec.rb +0 -93
  209. data/spec/models/spree/taxonomy_spec.rb +0 -18
  210. data/spec/models/spree/tracker_spec.rb +0 -21
  211. data/spec/models/spree/user_spec.rb +0 -203
  212. data/spec/models/spree/variant_spec.rb +0 -818
  213. data/spec/models/spree/zone_member_spec.rb +0 -38
  214. data/spec/models/spree/zone_spec.rb +0 -472
  215. data/spec/spec_helper.rb +0 -82
  216. data/spec/support/big_decimal.rb +0 -5
  217. data/spec/support/concerns/adjustment_source.rb +0 -23
  218. data/spec/support/concerns/default_price.rb +0 -37
  219. data/spec/support/rake.rb +0 -13
  220. 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