spree_core 3.0.9 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (627) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/{spree.js.coffee.erb → spree.js.coffee} +13 -4
  3. data/app/helpers/spree/base_helper.rb +5 -2
  4. data/app/helpers/spree/products_helper.rb +37 -12
  5. data/app/mailers/spree/base_mailer.rb +11 -2
  6. data/app/mailers/spree/reimbursement_mailer.rb +6 -6
  7. data/app/models/concerns/spree/acts_as_taggable.rb +11 -0
  8. data/app/models/concerns/spree/adjustment_source.rb +3 -10
  9. data/app/models/concerns/spree/default_price.rb +7 -1
  10. data/app/models/concerns/spree/named_type.rb +1 -1
  11. data/app/models/concerns/spree/ransackable_attributes.rb +6 -1
  12. data/app/models/concerns/spree/user_api_authentication.rb +7 -1
  13. data/app/models/concerns/spree/user_methods.rb +57 -0
  14. data/app/models/concerns/spree/user_reporting.rb +2 -2
  15. data/app/models/concerns/spree/vat_price_calculation.rb +47 -0
  16. data/app/models/spree/ability.rb +9 -1
  17. data/app/models/spree/address.rb +75 -45
  18. data/app/models/spree/adjustable/adjuster/base.rb +25 -0
  19. data/app/models/spree/adjustable/adjuster/promotion.rb +41 -0
  20. data/app/models/spree/adjustable/adjuster/tax.rb +26 -0
  21. data/app/models/spree/adjustable/adjustments_updater.rb +22 -45
  22. data/app/models/spree/adjustment.rb +8 -10
  23. data/app/models/spree/app_configuration.rb +14 -8
  24. data/app/models/spree/base.rb +5 -1
  25. data/app/models/spree/calculator/default_tax.rb +2 -10
  26. data/app/models/spree/calculator/free_shipping.rb +6 -5
  27. data/app/models/spree/calculator.rb +1 -6
  28. data/app/models/spree/classification.rb +7 -3
  29. data/app/models/spree/country.rb +15 -3
  30. data/app/models/spree/credit_card.rb +37 -38
  31. data/app/models/spree/customer_return.rb +7 -15
  32. data/app/models/spree/gateway/bogus.rb +12 -12
  33. data/app/models/spree/gateway/bogus_simple.rb +4 -4
  34. data/app/models/spree/gateway.rb +8 -7
  35. data/app/models/spree/image.rb +3 -3
  36. data/app/models/spree/inventory_unit.rb +13 -14
  37. data/app/models/spree/legacy_user.rb +1 -14
  38. data/app/models/spree/line_item.rb +79 -67
  39. data/app/models/spree/log_entry.rb +1 -4
  40. data/app/models/spree/option_type.rb +15 -6
  41. data/app/models/spree/option_type_prototype.rb +9 -0
  42. data/app/models/spree/option_value.rb +11 -3
  43. data/app/models/spree/option_value_variant.rb +6 -0
  44. data/app/models/spree/order/checkout.rb +10 -13
  45. data/app/models/spree/order/currency_updater.rb +1 -1
  46. data/app/models/spree/order/store_credit.rb +96 -0
  47. data/app/models/spree/order.rb +105 -68
  48. data/app/models/spree/order_contents.rb +13 -7
  49. data/app/models/spree/order_inventory.rb +16 -9
  50. data/app/models/spree/order_promotion.rb +6 -0
  51. data/app/models/spree/order_updater.rb +4 -8
  52. data/app/models/spree/payment/gateway_options.rb +8 -4
  53. data/app/models/spree/payment/processing.rb +1 -1
  54. data/app/models/spree/payment.rb +55 -29
  55. data/app/models/spree/payment_method/store_credit.rb +130 -0
  56. data/app/models/spree/payment_method.rb +18 -13
  57. data/app/models/spree/preference.rb +1 -1
  58. data/app/models/spree/preferences/store.rb +2 -2
  59. data/app/models/spree/price.rb +16 -6
  60. data/app/models/spree/product/scopes.rb +22 -13
  61. data/app/models/spree/product.rb +83 -52
  62. data/app/models/spree/product_option_type.rb +7 -2
  63. data/app/models/spree/product_promotion_rule.rb +9 -0
  64. data/app/models/spree/product_property.rb +9 -10
  65. data/app/models/spree/promotion/actions/create_adjustment.rb +1 -1
  66. data/app/models/spree/promotion/actions/create_line_items.rb +21 -3
  67. data/app/models/spree/promotion/rules/country.rb +23 -0
  68. data/app/models/spree/promotion/rules/option_value.rb +13 -10
  69. data/app/models/spree/promotion/rules/product.rb +3 -1
  70. data/app/models/spree/promotion/rules/taxon.rb +3 -2
  71. data/app/models/spree/promotion/rules/user.rb +4 -4
  72. data/app/models/spree/promotion.rb +55 -19
  73. data/app/models/spree/promotion_action.rb +3 -3
  74. data/app/models/spree/promotion_category.rb +1 -1
  75. data/app/models/spree/promotion_handler/cart.rb +3 -17
  76. data/app/models/spree/promotion_handler/coupon.rb +22 -22
  77. data/app/models/spree/promotion_handler/page.rb +2 -2
  78. data/app/models/spree/promotion_rule_taxon.rb +9 -0
  79. data/app/models/spree/promotion_rule_user.rb +9 -0
  80. data/app/models/spree/property.rb +2 -1
  81. data/app/models/spree/property_prototype.rb +9 -0
  82. data/app/models/spree/prototype.rb +8 -3
  83. data/app/models/spree/prototype_taxon.rb +9 -0
  84. data/app/models/spree/refund.rb +10 -7
  85. data/app/models/spree/refund_reason.rb +2 -2
  86. data/app/models/spree/reimbursement.rb +12 -16
  87. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +23 -6
  88. data/app/models/spree/reimbursement_type/store_credit.rb +28 -0
  89. data/app/models/spree/reimbursement_type.rb +5 -1
  90. data/app/models/spree/return_authorization.rb +8 -13
  91. data/app/models/spree/return_authorization_reason.rb +1 -1
  92. data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +1 -1
  93. data/app/models/spree/return_item.rb +14 -13
  94. data/app/models/spree/role.rb +3 -2
  95. data/app/models/spree/role_user.rb +6 -0
  96. data/app/models/spree/shipment.rb +23 -30
  97. data/app/models/spree/shipment_handler.rb +2 -2
  98. data/app/models/spree/shipping_category.rb +6 -3
  99. data/app/models/spree/shipping_method.rb +12 -11
  100. data/app/models/spree/shipping_method_zone.rb +6 -0
  101. data/app/models/spree/shipping_rate.rb +16 -29
  102. data/app/models/spree/state.rb +3 -2
  103. data/app/models/spree/state_change.rb +1 -1
  104. data/app/models/spree/stock/adjuster.rb +9 -2
  105. data/app/models/spree/stock/content_item.rb +10 -12
  106. data/app/models/spree/stock/coordinator.rb +21 -15
  107. data/app/models/spree/stock/estimator.rb +28 -30
  108. data/app/models/spree/stock/inventory_unit_builder.rb +2 -10
  109. data/app/models/spree/stock/package.rb +11 -3
  110. data/app/models/spree/stock/packer.rb +16 -6
  111. data/app/models/spree/stock/prioritizer.rb +25 -15
  112. data/app/models/spree/stock/quantifier.rb +5 -5
  113. data/app/models/spree/stock/splitter/backordered.rb +2 -2
  114. data/app/models/spree/stock/splitter/shipping_category.rb +6 -1
  115. data/app/models/spree/stock_item.rb +15 -18
  116. data/app/models/spree/stock_location.rb +4 -7
  117. data/app/models/spree/stock_movement.rb +16 -9
  118. data/app/models/spree/stock_transfer.rb +11 -12
  119. data/app/models/spree/store.rb +15 -6
  120. data/app/models/spree/store_credit.rb +252 -0
  121. data/app/models/spree/store_credit_category.rb +22 -0
  122. data/app/models/spree/store_credit_event.rb +38 -0
  123. data/app/models/spree/store_credit_type.rb +6 -0
  124. data/app/models/spree/tag.rb +4 -0
  125. data/app/models/spree/tax_category.rb +3 -8
  126. data/app/models/spree/tax_rate.rb +61 -121
  127. data/app/models/spree/taxon.rb +12 -6
  128. data/app/models/spree/tracker.rb +12 -1
  129. data/app/models/spree/validations/db_maximum_length_validator.rb +2 -1
  130. data/app/models/spree/variant.rb +94 -49
  131. data/app/models/spree/zone.rb +23 -19
  132. data/app/models/spree/zone_member.rb +6 -0
  133. data/app/validators/db_maximum_length_validator.rb +11 -0
  134. data/app/views/layouts/spree/base_mailer.html.erb +38 -781
  135. data/app/views/spree/order_mailer/_adjustment.html.erb +8 -0
  136. data/app/views/spree/order_mailer/_subtotal.html.erb +8 -0
  137. data/app/views/spree/order_mailer/_total.html.erb +8 -0
  138. data/app/views/spree/order_mailer/cancel_email.html.erb +13 -28
  139. data/app/views/spree/order_mailer/cancel_email.text.erb +1 -1
  140. data/app/views/spree/order_mailer/confirm_email.html.erb +49 -63
  141. data/app/views/spree/order_mailer/confirm_email.text.erb +1 -1
  142. data/app/views/spree/shared/_base_mailer_header.html.erb +5 -7
  143. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +777 -0
  144. data/app/views/spree/shared/_error_messages.html.erb +1 -1
  145. data/app/views/spree/shared/_mailer_line_item.html.erb +12 -0
  146. data/app/views/spree/shared/_paths.html.erb +8 -0
  147. data/app/views/spree/shipment_mailer/shipped_email.html.erb +21 -14
  148. data/app/views/spree/shipment_mailer/shipped_email.text.erb +3 -3
  149. data/config/initializers/acts_as_taggable_on.rb +9 -0
  150. data/config/initializers/friendly_id.rb +0 -81
  151. data/config/initializers/user_class_extensions.rb +7 -38
  152. data/config/locales/en.yml +137 -12
  153. data/config/routes.rb +7 -0
  154. data/db/default/spree/countries.rb +5 -1
  155. data/db/default/spree/default_reimbursement_type.rb +1 -1
  156. data/db/default/spree/roles.rb +2 -2
  157. data/db/default/spree/states.rb +1 -1
  158. data/db/default/spree/zones.rb +4 -5
  159. data/db/migrate/20120831092320_spree_one_two.rb +101 -101
  160. data/db/migrate/20120831092359_spree_promo_one_two.rb +14 -14
  161. data/db/migrate/20120905145253_add_tax_rate_label.rb +1 -1
  162. data/db/migrate/20120905151823_add_toggle_tax_rate_display.rb +2 -2
  163. data/db/migrate/20120929093553_remove_unused_preference_columns.rb +4 -4
  164. data/db/migrate/20121009142519_add_lock_version_to_variant.rb +2 -2
  165. data/db/migrate/20121010142909_add_states_required_to_countries.rb +2 -2
  166. data/db/migrate/20121012071449_add_on_demand_to_product_and_variant.rb +3 -3
  167. data/db/migrate/20121017010007_remove_not_null_constraint_from_products_on_hand.rb +5 -5
  168. data/db/migrate/20121031162139_split_prices_from_variants.rb +10 -10
  169. data/db/migrate/20121107003422_remove_not_null_from_spree_prices_amount.rb +3 -3
  170. data/db/migrate/20121107184631_add_currency_to_line_items.rb +1 -1
  171. data/db/migrate/20121107194006_add_currency_to_orders.rb +1 -1
  172. data/db/migrate/20121109173623_add_cost_currency_to_variants.rb +2 -2
  173. data/db/migrate/20121111231553_remove_display_on_from_payment_methods.rb +1 -1
  174. data/db/migrate/20121124203911_add_position_to_taxonomies.rb +2 -2
  175. data/db/migrate/20121126040517_add_last_ip_to_spree_orders.rb +1 -1
  176. data/db/migrate/20121213162028_add_state_to_spree_adjustments.rb +1 -1
  177. data/db/migrate/20130114053446_add_display_on_to_spree_payment_methods.rb +1 -1
  178. data/db/migrate/20130120201805_add_position_to_product_properties.spree.rb +2 -2
  179. data/db/migrate/20130203232234_add_identifier_to_spree_payments.rb +1 -1
  180. data/db/migrate/20130207155350_add_order_id_index_to_payments.rb +1 -1
  181. data/db/migrate/20130208032954_add_primary_to_spree_products_taxons.rb +1 -1
  182. data/db/migrate/20130211190146_create_spree_stock_items.rb +2 -2
  183. data/db/migrate/20130211191120_create_spree_stock_locations.rb +1 -1
  184. data/db/migrate/20130213191427_create_default_stock.rb +1 -2
  185. data/db/migrate/20130222032153_add_order_id_index_to_shipments.rb +1 -1
  186. data/db/migrate/20130226032817_change_meta_description_on_spree_products_to_text.rb +2 -2
  187. data/db/migrate/20130226191231_add_stock_location_id_to_spree_shipments.rb +1 -1
  188. data/db/migrate/20130227143905_add_pending_to_inventory_unit.rb +3 -3
  189. data/db/migrate/20130228164411_remove_on_demand_from_product_and_variant.rb +1 -1
  190. data/db/migrate/20130228210442_create_shipping_method_zone.rb +3 -3
  191. data/db/migrate/20130301162745_remove_shipping_category_id_from_shipping_method.rb +1 -1
  192. data/db/migrate/20130301162924_create_shipping_method_categories.rb +3 -3
  193. data/db/migrate/20130301205200_add_tracking_url_to_spree_shipping_methods.rb +1 -1
  194. data/db/migrate/20130304162240_create_spree_shipping_rates.rb +5 -5
  195. data/db/migrate/20130304192936_remove_category_match_attributes_from_shipping_method.rb +1 -1
  196. data/db/migrate/20130305143310_create_stock_movements.rb +1 -1
  197. data/db/migrate/20130306181701_add_address_fields_to_stock_location.rb +3 -3
  198. data/db/migrate/20130306191917_add_active_field_to_stock_locations.rb +2 -2
  199. data/db/migrate/20130306195650_add_backorderable_to_stock_item.rb +2 -2
  200. data/db/migrate/20130307161754_add_default_quantity_to_stock_movement.rb +2 -2
  201. data/db/migrate/20130318151756_add_source_and_destination_to_stock_movements.rb +1 -1
  202. data/db/migrate/20130319062004_change_orders_total_precision.rb +5 -5
  203. data/db/migrate/20130319063911_change_spree_payments_amount_precision.rb +2 -2
  204. data/db/migrate/20130319064308_change_spree_return_authorization_amount_precision.rb +2 -2
  205. data/db/migrate/20130319082943_change_adjustments_amount_precision.rb +2 -2
  206. data/db/migrate/20130319183250_add_originator_to_stock_movement.rb +1 -1
  207. data/db/migrate/20130319190507_drop_source_and_destination_from_stock_movement.rb +3 -3
  208. data/db/migrate/20130325163316_migrate_inventory_unit_sold_to_on_hand.rb +3 -3
  209. data/db/migrate/20130326175857_add_stock_location_to_rma.rb +1 -1
  210. data/db/migrate/20130328130308_update_shipment_state_for_canceled_orders.rb +1 -1
  211. data/db/migrate/20130328195253_add_seo_metas_to_taxons.rb +1 -1
  212. data/db/migrate/20130329134939_remove_stock_item_and_variant_lock.rb +1 -1
  213. data/db/migrate/20130413230529_add_name_to_spree_credit_cards.rb +1 -1
  214. data/db/migrate/20130414000512_update_name_fields_on_spree_credit_cards.rb +2 -2
  215. data/db/migrate/20130417120034_add_index_to_source_columns_on_adjustments.rb +1 -1
  216. data/db/migrate/20130417120035_update_adjustment_states.rb +3 -3
  217. data/db/migrate/20130417123427_add_shipping_rates_to_shipments.rb +4 -4
  218. data/db/migrate/20130418125341_create_spree_stock_transfers.rb +1 -1
  219. data/db/migrate/20130423110707_drop_products_count_on_hand.rb +1 -1
  220. data/db/migrate/20130423223847_set_default_shipping_rate_cost.rb +1 -1
  221. data/db/migrate/20130509115210_add_number_to_stock_transfer.rb +1 -1
  222. data/db/migrate/20130514151929_add_sku_index_to_spree_variants.rb +1 -1
  223. data/db/migrate/20130515180736_add_backorderable_default_to_spree_stock_location.rb +1 -1
  224. data/db/migrate/20130516151222_add_propage_all_variants_to_spree_stock_location.rb +1 -1
  225. data/db/migrate/20130611054351_rename_shipping_methods_zones_to_spree_shipping_methods_zones.rb +1 -1
  226. data/db/migrate/20130611185927_add_user_id_index_to_spree_orders.rb +1 -1
  227. data/db/migrate/20130618041418_add_updated_at_to_spree_countries.rb +1 -1
  228. data/db/migrate/20130619012236_add_updated_at_to_spree_states.rb +1 -1
  229. data/db/migrate/20130626232741_add_cvv_result_code_and_cvv_result_message_to_spree_payments.rb +1 -1
  230. data/db/migrate/20130628021056_add_unique_index_to_permalink_on_spree_products.rb +2 -2
  231. data/db/migrate/20130628022817_add_unique_index_to_orders_shipments_and_stock_transfers.rb +4 -4
  232. data/db/migrate/20130708052307_add_deleted_at_to_spree_tax_rates.rb +1 -1
  233. data/db/migrate/20130711200933_remove_lock_version_from_inventory_units.rb +1 -1
  234. data/db/migrate/20130718042445_add_cost_price_to_line_item.rb +2 -2
  235. data/db/migrate/20130718233855_set_backorderable_to_default_to_false.rb +3 -3
  236. data/db/migrate/20130725031716_add_created_by_id_to_spree_orders.rb +1 -1
  237. data/db/migrate/20130729214043_index_completed_at_on_spree_orders.rb +1 -1
  238. data/db/migrate/20130802014537_add_tax_category_id_to_spree_line_items.rb +1 -1
  239. data/db/migrate/20130802022321_migrate_tax_categories_to_line_items.rb +1 -1
  240. data/db/migrate/20130806022521_drop_spree_mail_methods.rb +1 -1
  241. data/db/migrate/20130806145853_set_default_stock_location_on_shipments.rb +1 -1
  242. data/db/migrate/20130807024301_upgrade_adjustments.rb +4 -4
  243. data/db/migrate/20130807024302_rename_adjustment_fields.rb +1 -1
  244. data/db/migrate/20130809164245_add_admin_name_column_to_spree_shipping_methods.rb +1 -1
  245. data/db/migrate/20130809164330_add_admin_name_column_to_spree_stock_locations.rb +1 -1
  246. data/db/migrate/20130813004002_add_shipment_total_to_spree_orders.rb +2 -2
  247. data/db/migrate/20130813140619_expand_order_number_size.rb +3 -3
  248. data/db/migrate/20130813232134_rename_activators_to_promotions.rb +1 -1
  249. data/db/migrate/20130815000406_add_adjustment_total_to_line_items.rb +2 -2
  250. data/db/migrate/20130815024413_add_adjustment_total_to_shipments.rb +2 -2
  251. data/db/migrate/20130826062534_add_depth_to_spree_taxons.rb +1 -1
  252. data/db/migrate/20130828234942_add_tax_total_to_line_items_shipments_and_orders.rb +2 -2
  253. data/db/migrate/20130830001033_add_shipping_category_to_shipping_methods_and_products.rb +2 -2
  254. data/db/migrate/20130830001159_migrate_old_shipping_calculators.rb +1 -1
  255. data/db/migrate/20130903183026_add_code_to_spree_promotion_rules.rb +1 -1
  256. data/db/migrate/20130909115621_change_states_required_for_countries.rb +1 -1
  257. data/db/migrate/20130915032339_add_deleted_at_to_spree_stock_items.rb +1 -1
  258. data/db/migrate/20130917024658_remove_promotions_event_name_field.rb +2 -2
  259. data/db/migrate/20130924040529_add_promo_total_to_line_items_and_shipments_and_orders.rb +1 -1
  260. data/db/migrate/20131001013410_remove_unused_credit_card_fields.rb +2 -2
  261. data/db/migrate/20131026154747_add_track_inventory_to_variant.rb +2 -2
  262. data/db/migrate/20131107132123_add_tax_category_to_variants.rb +1 -1
  263. data/db/migrate/20131113035136_add_channel_to_spree_orders.rb +1 -1
  264. data/db/migrate/20131118043959_add_included_to_adjustments.rb +2 -2
  265. data/db/migrate/20131118050234_rename_tax_total_fields.rb +1 -1
  266. data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +1 -1
  267. data/db/migrate/20131120234456_add_updated_at_to_variants.rb +1 -1
  268. data/db/migrate/20131127001002_add_position_to_classifications.rb +1 -1
  269. data/db/migrate/20131211112807_create_spree_orders_promotions.rb +2 -2
  270. data/db/migrate/20131211192741_unique_shipping_method_categories.rb +1 -1
  271. data/db/migrate/20131218054603_add_item_count_to_spree_orders.rb +2 -2
  272. data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +1 -1
  273. data/db/migrate/20140106224208_rename_permalink_to_slug_for_products.rb +1 -1
  274. data/db/migrate/20140120160805_add_index_to_variant_id_and_currency_on_prices.rb +1 -1
  275. data/db/migrate/20140124023232_rename_activator_id_in_rules_and_actions_to_promotion_id.rb +1 -1
  276. data/db/migrate/20140129024326_add_deleted_at_to_spree_prices.rb +1 -1
  277. data/db/migrate/20140203161722_add_approver_id_and_approved_at_to_orders.rb +1 -1
  278. data/db/migrate/20140204115338_add_confirmation_delivered_to_spree_orders.rb +1 -1
  279. data/db/migrate/20140204192230_add_auto_capture_to_payment_methods.rb +1 -1
  280. data/db/migrate/20140205120320_create_spree_payment_capture_events.rb +1 -1
  281. data/db/migrate/20140205144710_add_uncaptured_amount_to_payments.rb +1 -1
  282. data/db/migrate/20140205181631_default_variant_weight_to_zero.rb +1 -1
  283. data/db/migrate/20140207085910_add_tax_category_id_to_shipping_methods.rb +1 -1
  284. data/db/migrate/20140207093021_add_tax_rate_id_to_shipping_rates.rb +1 -1
  285. data/db/migrate/20140211040159_add_pre_tax_amount_to_line_items_and_shipments.rb +1 -1
  286. data/db/migrate/20140213184916_add_more_indexes.rb +1 -1
  287. data/db/migrate/20140219060952_add_considered_risky_to_orders.rb +2 -2
  288. data/db/migrate/20140227112348_add_preference_store_to_everything.rb +1 -1
  289. data/db/migrate/20140307235515_add_user_id_to_spree_credit_cards.rb +1 -1
  290. data/db/migrate/20140309023735_migrate_old_preferences.rb +1 -1
  291. data/db/migrate/20140309024355_create_spree_stores.rb +2 -2
  292. data/db/migrate/20140309033438_create_store_from_preferences.rb +2 -2
  293. data/db/migrate/20140315053743_add_timestamps_to_spree_assets.rb +1 -1
  294. data/db/migrate/20140318191500_create_spree_taxons_promotion_rules.rb +1 -1
  295. data/db/migrate/20140331100557_add_additional_store_fields.rb +1 -1
  296. data/db/migrate/20140410141842_add_many_missing_indexes.rb +1 -1
  297. data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +1 -1
  298. data/db/migrate/20140415041315_add_user_id_created_by_id_index_to_order.rb +1 -1
  299. data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +5 -5
  300. data/db/migrate/20140518174634_add_token_to_spree_orders.rb +1 -1
  301. data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +2 -2
  302. data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +1 -1
  303. data/db/migrate/20140604135309_drop_credit_card_first_name_and_last_name.rb +1 -1
  304. data/db/migrate/20140609201656_add_deleted_at_to_spree_promotion_actions.rb +1 -1
  305. data/db/migrate/20140616202624_remove_uncaptured_amount_from_spree_payments.rb +1 -1
  306. data/db/migrate/20140625214618_create_spree_refunds.rb +1 -1
  307. data/db/migrate/20140702140656_create_spree_return_authorization_inventory_unit.rb +1 -1
  308. data/db/migrate/20140707125621_rename_return_authorization_inventory_unit_to_return_items.rb +1 -1
  309. data/db/migrate/20140709160534_backfill_line_item_pre_tax_amount.rb +1 -1
  310. data/db/migrate/20140710041921_recreate_spree_return_authorizations.rb +2 -2
  311. data/db/migrate/20140710181204_add_amount_fields_to_return_items.rb +1 -1
  312. data/db/migrate/20140710190048_drop_return_authorization_amount.rb +1 -1
  313. data/db/migrate/20140713140455_create_spree_return_authorization_reasons.rb +1 -1
  314. data/db/migrate/20140713140527_create_spree_refund_reasons.rb +1 -1
  315. data/db/migrate/20140713142214_rename_return_authorization_reason.rb +1 -1
  316. data/db/migrate/20140715182625_create_spree_promotion_categories.rb +1 -1
  317. data/db/migrate/20140716204111_drop_received_at_on_return_items.rb +1 -1
  318. data/db/migrate/20140716212330_add_reception_and_acceptance_status_to_return_items.rb +1 -1
  319. data/db/migrate/20140717155155_create_default_refund_reason.rb +1 -1
  320. data/db/migrate/20140717185932_add_default_to_spree_stock_locations.rb +1 -1
  321. data/db/migrate/20140718133010_create_spree_customer_returns.rb +1 -1
  322. data/db/migrate/20140718133349_add_customer_return_id_to_return_item.rb +1 -1
  323. data/db/migrate/20140718195325_create_friendly_id_slugs.rb +5 -5
  324. data/db/migrate/20140723004419_rename_spree_refund_return_authorization_id.rb +1 -1
  325. data/db/migrate/20140723152808_increase_return_item_pre_tax_amount_precision.rb +1 -1
  326. data/db/migrate/20140723214541_copy_product_slugs_to_slug_history.rb +2 -2
  327. data/db/migrate/20140725131539_create_spree_reimbursements.rb +1 -1
  328. data/db/migrate/20140728225422_add_promotionable_to_spree_products.rb +1 -1
  329. data/db/migrate/20140729133613_add_exchange_inventory_unit_foreign_keys.rb +1 -1
  330. data/db/migrate/20140730155938_add_acceptance_status_errors_to_return_item.rb +1 -1
  331. data/db/migrate/20140731150017_create_spree_reimbursement_types.rb +1 -1
  332. data/db/migrate/20140804185157_add_default_to_shipment_cost.rb +1 -1
  333. data/db/migrate/20140805171035_add_default_to_spree_credit_cards.rb +1 -1
  334. data/db/migrate/20140805171219_make_existing_credit_cards_default.rb +1 -1
  335. data/db/migrate/20140806144901_add_type_to_reimbursement_type.rb +1 -1
  336. data/db/migrate/20140808184039_create_spree_reimbursement_credits.rb +1 -1
  337. data/db/migrate/20140827170513_add_meta_title_to_spree_products.rb +1 -1
  338. data/db/migrate/20140911173301_add_kind_to_zone.rb +1 -1
  339. data/db/migrate/20140924164824_add_code_to_spree_tax_categories.rb +1 -1
  340. data/db/migrate/20140927193717_default_pre_tax_amount_should_be_zero.rb +1 -1
  341. data/db/migrate/20141002191113_add_code_to_spree_shipping_methods.rb +1 -1
  342. data/db/migrate/20141007230328_add_cancel_audit_fields_to_spree_orders.rb +1 -1
  343. data/db/migrate/20141009204607_add_store_id_to_orders.rb +1 -1
  344. data/db/migrate/20141012083513_create_spree_taxons_prototypes.rb +1 -1
  345. data/db/migrate/20141021194502_add_state_lock_version_to_order.rb +1 -1
  346. data/db/migrate/20141023005240_add_counter_cache_from_spree_variants_to_spree_stock_items.rb +2 -7
  347. data/db/migrate/20141101231208_fix_adjustment_order_presence.rb +1 -1
  348. data/db/migrate/20141105213646_update_classifications_positions.rb +1 -1
  349. data/db/migrate/20141120135441_add_guest_token_index_to_spree_orders.rb +1 -1
  350. data/db/migrate/20141215232040_remove_token_permissions_table.rb +1 -1
  351. data/db/migrate/20141215235502_remove_extra_products_slug_index.rb +1 -1
  352. data/db/migrate/20141217215630_update_product_slug_index.rb +1 -1
  353. data/db/migrate/20141218025915_rename_identifier_to_number_for_payment.rb +1 -1
  354. data/db/migrate/20150118210639_create_spree_store_credits.rb +24 -0
  355. data/db/migrate/20150118211500_create_spree_store_credit_categories.rb +8 -0
  356. data/db/migrate/20150118212051_create_spree_store_credit_events.rb +17 -0
  357. data/db/migrate/20150118212101_create_spree_store_credit_types.rb +10 -0
  358. data/db/migrate/20150121022521_remove_environment_from_payment_method.rb +1 -1
  359. data/db/migrate/20150122145607_add_resellable_to_return_items.rb +1 -1
  360. data/db/migrate/20150122202432_add_code_to_spree_promotion_categories.rb +1 -1
  361. data/db/migrate/20150128032538_remove_environment_from_tracker.rb +1 -1
  362. data/db/migrate/20150128060325_remove_spree_configurations.rb +1 -1
  363. data/db/migrate/20150216173445_add_index_to_spree_stock_items_variant_id.rb +1 -1
  364. data/db/migrate/20150309161154_ensure_payments_have_numbers.rb +1 -1
  365. data/db/migrate/20150314013438_add_missing_indexes_on_spree_tables.rb +67 -0
  366. data/db/migrate/20150317174308_remove_duplicated_indexes_from_multi_columns.rb +18 -0
  367. data/db/migrate/20150324104002_remove_user_index_from_spree_state_changes.rb +14 -0
  368. data/db/migrate/20150515211137_fix_adjustment_order_id.rb +1 -1
  369. data/db/migrate/20150522071831_add_position_to_spree_payment_methods.rb +5 -0
  370. data/db/migrate/20150522181728_add_deleted_at_to_friendly_id_slugs.rb +1 -1
  371. data/db/migrate/20150609093816_increase_scale_on_pre_tax_amounts.rb +1 -1
  372. data/db/migrate/20150626181949_add_taxable_adjustment_total_to_line_item.rb +19 -0
  373. data/db/migrate/20150627090949_migrate_payment_methods_display.rb +12 -0
  374. data/db/migrate/20150707204155_enable_acts_as_paranoid_on_calculators.rb +1 -1
  375. data/db/migrate/20150714154102_spree_payment_method_store_credits.rb +12 -0
  376. data/db/migrate/20150726141425_rename_has_and_belongs_to_associations_to_model_names.rb +18 -0
  377. data/db/migrate/20150727191614_spree_store_credit_types.rb +11 -0
  378. data/db/migrate/20150819154308_add_discontinued_to_products_and_variants.rb +68 -0
  379. data/db/migrate/20151220072838_remove_shipping_method_id_from_spree_orders.rb +13 -0
  380. data/db/migrate/20160207191757_add_id_column_to_earlier_habtm_tables.rb +16 -0
  381. data/db/migrate/20160219165458_add_indexes.rb +14 -0
  382. data/db/migrate/20160509064646_remove_counter_cache_from_spree_variants_to_spree_stock_items.rb +10 -0
  383. data/db/migrate/20160511071954_acts_as_taggable_on_spree_migration.rb +40 -0
  384. data/db/migrate/20160511072249_change_collation_for_spree_tag_names.rb +9 -0
  385. data/db/migrate/20160511072335_add_missing_indexes_to_spree_taggings.rb +14 -0
  386. data/db/migrate/20160608090604_add_zipcode_required_to_spree_countries.rb +7 -0
  387. data/db/migrate/20161014145148_add_created_at_to_variant.rb +8 -0
  388. data/db/migrate/20161014152814_add_null_false_to_spree_variants_timestamps.rb +6 -0
  389. data/lib/generators/spree/custom_user/custom_user_generator.rb +1 -1
  390. data/lib/generators/spree/custom_user/templates/authentication_helpers.rb.tt +3 -3
  391. data/lib/generators/spree/custom_user/templates/migration.rb.tt +2 -2
  392. data/lib/generators/spree/dummy/dummy_generator.rb +11 -11
  393. data/lib/generators/spree/dummy/templates/rails/application.rb +1 -1
  394. data/lib/generators/spree/dummy/templates/rails/database.yml +38 -28
  395. data/lib/generators/spree/dummy/templates/rails/test.rb +4 -3
  396. data/lib/generators/spree/install/install_generator.rb +37 -13
  397. data/lib/spree/core/controller_helpers/auth.rb +1 -1
  398. data/lib/spree/core/controller_helpers/common.rb +6 -6
  399. data/lib/spree/core/controller_helpers/order.rb +9 -10
  400. data/lib/spree/core/controller_helpers/respond_with.rb +1 -1
  401. data/lib/spree/core/controller_helpers/search.rb +1 -1
  402. data/lib/spree/core/controller_helpers/store.rb +29 -0
  403. data/lib/spree/core/delegate_belongs_to.rb +4 -4
  404. data/lib/spree/core/engine.rb +39 -20
  405. data/lib/spree/core/environment.rb +1 -1
  406. data/lib/spree/core/importer/order.rb +37 -40
  407. data/lib/spree/core/importer/product.rb +2 -2
  408. data/lib/spree/core/number_generator.rb +52 -0
  409. data/lib/spree/core/product_duplicator.rb +1 -1
  410. data/lib/spree/core/product_filters.rb +2 -2
  411. data/lib/spree/core/search/base.rb +4 -3
  412. data/lib/spree/core/version.rb +1 -1
  413. data/lib/spree/core.rb +16 -0
  414. data/lib/spree/i18n/initializer.rb +1 -1
  415. data/lib/spree/localized_number.rb +3 -1
  416. data/lib/spree/permitted_attributes.rb +6 -3
  417. data/lib/spree/testing_support/caching.rb +3 -3
  418. data/lib/spree/testing_support/common_rake.rb +3 -3
  419. data/lib/spree/testing_support/controller_requests.rb +4 -4
  420. data/lib/spree/testing_support/factories/address_factory.rb +1 -1
  421. data/lib/spree/testing_support/factories/country_factory.rb +2 -2
  422. data/lib/spree/testing_support/factories/line_item_factory.rb +0 -1
  423. data/lib/spree/testing_support/factories/order_factory.rb +3 -2
  424. data/lib/spree/testing_support/factories/payment_factory.rb +5 -0
  425. data/lib/spree/testing_support/factories/payment_method_factory.rb +8 -0
  426. data/lib/spree/testing_support/factories/promotion_rule_factory.rb +5 -0
  427. data/lib/spree/testing_support/factories/refund_factory.rb +9 -1
  428. data/lib/spree/testing_support/factories/return_authorization_factory.rb +2 -0
  429. data/lib/spree/testing_support/factories/state_factory.rb +2 -2
  430. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +9 -0
  431. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +8 -0
  432. data/lib/spree/testing_support/factories/store_credit_factory.rb +17 -0
  433. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +11 -0
  434. data/lib/spree/testing_support/factories/tag_factory.rb +5 -0
  435. data/lib/spree/testing_support/factories/user_factory.rb +1 -1
  436. data/lib/spree/testing_support/factories/zone_member_factory.rb +6 -0
  437. data/lib/spree/testing_support/factories.rb +3 -3
  438. data/lib/spree/testing_support/kernel.rb +18 -0
  439. data/lib/spree/testing_support/microdata.rb +189 -0
  440. data/lib/spree/testing_support/order_walkthrough.rb +4 -4
  441. data/lib/tasks/core.rake +69 -1
  442. data/lib/tasks/exchanges.rake +2 -2
  443. data/spec/fixtures/microdata.html +22 -0
  444. data/spec/fixtures/microdata_itemref.html +15 -0
  445. data/spec/fixtures/microdata_no_itemscope.html +20 -0
  446. data/spec/helpers/base_helper_spec.rb +74 -11
  447. data/spec/helpers/products_helper_spec.rb +80 -15
  448. data/spec/lib/i18n_spec.rb +13 -13
  449. data/spec/lib/search/base_spec.rb +18 -18
  450. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +6 -4
  451. data/spec/lib/spree/core/controller_helpers/order_spec.rb +15 -0
  452. data/spec/lib/spree/core/controller_helpers/store_spec.rb +56 -0
  453. data/spec/lib/spree/core/importer/order_spec.rb +227 -124
  454. data/spec/lib/spree/core/number_generator_spec.rb +175 -0
  455. data/spec/lib/spree/core_spec.rb +23 -0
  456. data/spec/lib/spree/localized_number_spec.rb +11 -1
  457. data/spec/lib/spree/money_spec.rb +6 -6
  458. data/spec/mailers/order_mailer_spec.rb +11 -13
  459. data/spec/mailers/reimbursement_mailer_spec.rb +2 -2
  460. data/spec/mailers/shipment_mailer_spec.rb +26 -8
  461. data/spec/mailers/test_mailer_spec.rb +16 -2
  462. data/spec/models/option_type_prototype_spec.rb +9 -0
  463. data/spec/models/spree/ability_spec.rb +20 -15
  464. data/spec/models/spree/address_spec.rb +144 -33
  465. data/spec/models/spree/adjustable/adjuster/base_spec.rb +10 -0
  466. data/spec/models/spree/adjustable/adjuster/promotion_spec.rb +211 -0
  467. data/spec/models/spree/adjustable/adjuster/tax_spec.rb +86 -0
  468. data/spec/models/spree/adjustable/adjustments_updater_spec.rb +2 -262
  469. data/spec/models/spree/adjustment_spec.rb +28 -2
  470. data/spec/models/spree/app_configuration_spec.rb +6 -3
  471. data/spec/models/spree/asset_spec.rb +9 -6
  472. data/spec/models/spree/calculator/default_tax_spec.rb +39 -14
  473. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +1 -1
  474. data/spec/models/spree/calculator/flexi_rate_spec.rb +6 -6
  475. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +1 -1
  476. data/spec/models/spree/calculator/price_sack_spec.rb +2 -2
  477. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +4 -8
  478. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +4 -4
  479. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +2 -2
  480. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +6 -6
  481. data/spec/models/spree/calculator/shipping/per_item_spec.rb +2 -2
  482. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +1 -1
  483. data/spec/models/spree/calculator/tiered_percent_spec.rb +1 -1
  484. data/spec/models/spree/calculator_spec.rb +3 -3
  485. data/spec/models/spree/classification_spec.rb +1 -1
  486. data/spec/models/spree/concerns/user_methods_spec.rb +82 -0
  487. data/spec/models/spree/concerns/vat_price_calculation_spec.rb +66 -0
  488. data/spec/models/spree/country_spec.rb +45 -8
  489. data/spec/models/spree/credit_card_spec.rb +13 -9
  490. data/spec/models/spree/customer_return_spec.rb +4 -26
  491. data/spec/models/spree/exchange_spec.rb +1 -1
  492. data/spec/models/spree/gateway/bogus_simple.rb +1 -1
  493. data/spec/models/spree/gateway/bogus_spec.rb +1 -1
  494. data/spec/models/spree/gateway_spec.rb +8 -1
  495. data/spec/models/spree/image_spec.rb +4 -1
  496. data/spec/models/spree/inventory_unit_spec.rb +35 -21
  497. data/spec/models/spree/line_item_spec.rb +100 -21
  498. data/spec/models/spree/option_type_spec.rb +3 -3
  499. data/spec/models/spree/option_value_spec.rb +8 -3
  500. data/spec/models/spree/order/address_spec.rb +1 -1
  501. data/spec/models/spree/order/adjustments_spec.rb +1 -1
  502. data/spec/models/spree/order/callbacks_spec.rb +3 -3
  503. data/spec/models/spree/order/checkout_spec.rb +99 -93
  504. data/spec/models/spree/order/currency_updater_spec.rb +4 -4
  505. data/spec/models/spree/order/finalizing_spec.rb +5 -8
  506. data/spec/models/spree/order/helpers_spec.rb +1 -1
  507. data/spec/models/spree/order/payment_spec.rb +21 -21
  508. data/spec/models/spree/order/risk_assessment_spec.rb +1 -1
  509. data/spec/models/spree/order/state_machine_spec.rb +4 -8
  510. data/spec/models/spree/order/store_credit_spec.rb +426 -0
  511. data/spec/models/spree/order/tax_spec.rb +13 -13
  512. data/spec/models/spree/order/totals_spec.rb +2 -2
  513. data/spec/models/spree/order/updating_spec.rb +4 -4
  514. data/spec/models/spree/order/validations_spec.rb +2 -2
  515. data/spec/models/spree/order_contents_spec.rb +45 -4
  516. data/spec/models/spree/order_inventory_spec.rb +28 -17
  517. data/spec/models/spree/order_merger_spec.rb +3 -1
  518. data/spec/models/spree/order_spec.rb +188 -96
  519. data/spec/models/spree/order_updater_spec.rb +43 -32
  520. data/spec/models/spree/payment/gateway_options_spec.rb +10 -2
  521. data/spec/models/spree/payment/store_credit_spec.rb +60 -0
  522. data/spec/models/spree/payment_method/store_credit_spec.rb +291 -0
  523. data/spec/models/spree/payment_method_spec.rb +22 -14
  524. data/spec/models/spree/payment_spec.rb +75 -82
  525. data/spec/models/spree/preference_spec.rb +1 -1
  526. data/spec/models/spree/preferences/configuration_spec.rb +2 -2
  527. data/spec/models/spree/preferences/preferable_spec.rb +15 -19
  528. data/spec/models/spree/preferences/scoped_store_spec.rb +1 -1
  529. data/spec/models/spree/preferences/store_spec.rb +3 -3
  530. data/spec/models/spree/price_spec.rb +87 -1
  531. data/spec/models/spree/product/scopes_spec.rb +39 -4
  532. data/spec/models/spree/product_duplicator_spec.rb +2 -2
  533. data/spec/models/spree/product_filter_spec.rb +2 -2
  534. data/spec/models/spree/product_option_type_spec.rb +6 -2
  535. data/spec/models/spree/product_promotion_rule_spec.rb +9 -0
  536. data/spec/models/spree/product_property_spec.rb +16 -1
  537. data/spec/models/spree/product_spec.rb +196 -41
  538. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +63 -0
  539. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +6 -6
  540. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +1 -1
  541. data/spec/models/spree/promotion/rules/country_spec.rb +36 -0
  542. data/spec/models/spree/promotion/rules/first_order_spec.rb +11 -11
  543. data/spec/models/spree/promotion/rules/item_total_spec.rb +1 -1
  544. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +1 -1
  545. data/spec/models/spree/promotion/rules/product_spec.rb +8 -8
  546. data/spec/models/spree/promotion/rules/taxon_spec.rb +1 -1
  547. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +3 -3
  548. data/spec/models/spree/promotion/rules/user_spec.rb +15 -7
  549. data/spec/models/spree/promotion_action_spec.rb +2 -2
  550. data/spec/models/spree/promotion_category_spec.rb +1 -1
  551. data/spec/models/spree/promotion_handler/cart_spec.rb +1 -1
  552. data/spec/models/spree/promotion_handler/coupon_spec.rb +28 -28
  553. data/spec/models/spree/promotion_handler/page_spec.rb +6 -6
  554. data/spec/models/spree/promotion_rule_spec.rb +2 -2
  555. data/spec/models/spree/promotion_rule_taxon_spec.rb +9 -0
  556. data/spec/models/spree/promotion_rule_user_spec.rb +9 -0
  557. data/spec/models/spree/promotion_spec.rb +141 -65
  558. data/spec/models/spree/property_prototype_spec.rb +9 -0
  559. data/spec/models/spree/property_spec.rb +1 -1
  560. data/spec/models/spree/prototype_spec.rb +1 -1
  561. data/spec/models/spree/prototype_taxon_spec.rb +9 -0
  562. data/spec/models/spree/refund_reason_spec.rb +20 -0
  563. data/spec/models/spree/refund_spec.rb +1 -1
  564. data/spec/models/spree/reimbursement/credit_spec.rb +1 -1
  565. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +1 -1
  566. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +1 -1
  567. data/spec/models/spree/reimbursement_performer_spec.rb +1 -1
  568. data/spec/models/spree/reimbursement_spec.rb +3 -30
  569. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +18 -6
  570. data/spec/models/spree/reimbursement_type/credit_spec.rb +1 -1
  571. data/spec/models/spree/reimbursement_type/exchange_spec.rb +1 -1
  572. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +1 -1
  573. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +101 -0
  574. data/spec/models/spree/return_authorization_reason_spec.rb +7 -0
  575. data/spec/models/spree/return_authorization_spec.rb +3 -23
  576. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +1 -1
  577. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +1 -1
  578. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +1 -1
  579. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +1 -1
  580. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +1 -1
  581. data/spec/models/spree/return_item_spec.rb +51 -2
  582. data/spec/models/spree/returns_calculator_spec.rb +2 -2
  583. data/spec/models/spree/role_spec.rb +7 -0
  584. data/spec/models/spree/shipment_spec.rb +24 -22
  585. data/spec/models/spree/shipping_calculator_spec.rb +5 -5
  586. data/spec/models/spree/shipping_category_spec.rb +15 -1
  587. data/spec/models/spree/shipping_method_spec.rb +11 -4
  588. data/spec/models/spree/shipping_rate_spec.rb +40 -41
  589. data/spec/models/spree/state_spec.rb +13 -2
  590. data/spec/models/spree/stock/availability_validator_spec.rb +1 -1
  591. data/spec/models/spree/stock/content_item_spec.rb +9 -0
  592. data/spec/models/spree/stock/coordinator_spec.rb +13 -3
  593. data/spec/models/spree/stock/differentiator_spec.rb +1 -1
  594. data/spec/models/spree/stock/estimator_spec.rb +60 -12
  595. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +1 -1
  596. data/spec/models/spree/stock/package_spec.rb +6 -18
  597. data/spec/models/spree/stock/packer_spec.rb +1 -1
  598. data/spec/models/spree/stock/prioritizer_spec.rb +7 -7
  599. data/spec/models/spree/stock/quantifier_spec.rb +61 -32
  600. data/spec/models/spree/stock/splitter/backordered_spec.rb +1 -1
  601. data/spec/models/spree/stock/splitter/base_spec.rb +1 -1
  602. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +3 -3
  603. data/spec/models/spree/stock_item_spec.rb +30 -8
  604. data/spec/models/spree/stock_location_spec.rb +5 -5
  605. data/spec/models/spree/stock_movement_spec.rb +101 -37
  606. data/spec/models/spree/stock_transfer_spec.rb +1 -1
  607. data/spec/models/spree/store_credit_event_spec.rb +101 -0
  608. data/spec/models/spree/store_credit_spec.rb +786 -0
  609. data/spec/models/spree/store_spec.rb +40 -12
  610. data/spec/models/spree/tax_category_spec.rb +7 -2
  611. data/spec/models/spree/tax_rate_spec.rb +288 -109
  612. data/spec/models/spree/taxon_spec.rb +15 -4
  613. data/spec/models/spree/taxonomy_spec.rb +2 -2
  614. data/spec/models/spree/tracker_spec.rb +1 -1
  615. data/spec/models/spree/user_spec.rb +114 -41
  616. data/spec/models/spree/variant_spec.rb +310 -15
  617. data/spec/models/spree/zone_member_spec.rb +38 -0
  618. data/spec/models/spree/zone_spec.rb +38 -10
  619. data/spec/spec_helper.rb +5 -0
  620. data/spec/support/concerns/{adjustment_source_spec.rb → adjustment_source.rb} +0 -0
  621. data/spec/support/concerns/{default_price_spec.rb → default_price.rb} +9 -0
  622. data/spree_core.gemspec +12 -13
  623. data/vendor/assets/javascripts/jquery.payment.js +239 -84
  624. metadata +136 -65
  625. data/CHANGELOG.md +0 -4
  626. data/app/models/concerns/spree/number_generator.rb +0 -39
  627. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -24
@@ -1,37 +1,37 @@
1
1
  require 'spec_helper'
2
2
  require 'spree/testing_support/order_walkthrough'
3
3
 
4
- describe Spree::Order, :type => :model do
4
+ describe Spree::Order, type: :model do
5
5
  let(:order) { Spree::Order.new }
6
6
 
7
7
  before { create(:store) }
8
8
 
9
9
  def assert_state_changed(order, from, to)
10
- state_change_exists = order.state_changes.where(:previous_state => from, :next_state => to).exists?
10
+ state_change_exists = order.state_changes.where(previous_state: from, next_state: to).exists?
11
11
  assert state_change_exists, "Expected order to transition from #{from} to #{to}, but didn't."
12
12
  end
13
13
 
14
14
  context "with default state machine" do
15
15
  let(:transitions) do
16
16
  [
17
- { :address => :delivery },
18
- { :delivery => :payment },
19
- { :payment => :confirm },
20
- { :confirm => :complete },
21
- { :payment => :complete },
22
- { :delivery => :complete }
17
+ { address: :delivery },
18
+ { delivery: :payment },
19
+ { payment: :confirm },
20
+ { confirm: :complete },
21
+ { payment: :complete },
22
+ { delivery: :complete }
23
23
  ]
24
24
  end
25
25
 
26
26
  it "has the following transitions" do
27
27
  transitions.each do |transition|
28
- transition = Spree::Order.find_transition(:from => transition.keys.first, :to => transition.values.first)
28
+ transition = Spree::Order.find_transition(from: transition.keys.first, to: transition.values.first)
29
29
  expect(transition).not_to be_nil
30
30
  end
31
31
  end
32
32
 
33
33
  it "does not have a transition from delivery to confirm" do
34
- transition = Spree::Order.find_transition(:from => :delivery, :to => :confirm)
34
+ transition = Spree::Order.find_transition(from: :delivery, to: :confirm)
35
35
  expect(transition).to be_nil
36
36
  end
37
37
 
@@ -40,7 +40,7 @@ describe Spree::Order, :type => :model do
40
40
  end
41
41
 
42
42
  it '.remove_transition' do
43
- options = {:from => transitions.first.keys.first, :to => transitions.first.values.first}
43
+ options = {from: transitions.first.keys.first, to: transitions.first.values.first}
44
44
  expect(Spree::Order).to receive_messages(
45
45
  removed_transitions: [],
46
46
  next_event_transitions: transitions.dup
@@ -60,7 +60,7 @@ describe Spree::Order, :type => :model do
60
60
  end
61
61
 
62
62
  it "passes delivery state when transitioning from address over delivery to payment" do
63
- allow(order).to receive_messages :payment_required? => true
63
+ allow(order).to receive_messages payment_required?: true
64
64
  order.state = "address"
65
65
  expect(order.passed_checkout_step?("delivery")).to be false
66
66
  order.state = "delivery"
@@ -72,8 +72,8 @@ describe Spree::Order, :type => :model do
72
72
  context "#checkout_steps" do
73
73
  context "when confirmation not required" do
74
74
  before do
75
- allow(order).to receive_messages :confirmation_required? => false
76
- allow(order).to receive_messages :payment_required? => true
75
+ allow(order).to receive_messages confirmation_required?: false
76
+ allow(order).to receive_messages payment_required?: true
77
77
  end
78
78
 
79
79
  specify do
@@ -83,8 +83,8 @@ describe Spree::Order, :type => :model do
83
83
 
84
84
  context "when confirmation required" do
85
85
  before do
86
- allow(order).to receive_messages :confirmation_required? => true
87
- allow(order).to receive_messages :payment_required? => true
86
+ allow(order).to receive_messages confirmation_required?: true
87
+ allow(order).to receive_messages payment_required?: true
88
88
  end
89
89
 
90
90
  specify do
@@ -93,14 +93,14 @@ describe Spree::Order, :type => :model do
93
93
  end
94
94
 
95
95
  context "when payment not required" do
96
- before { allow(order).to receive_messages :payment_required? => false }
96
+ before { allow(order).to receive_messages payment_required?: false }
97
97
  specify do
98
98
  expect(order.checkout_steps).to eq(%w(address delivery complete))
99
99
  end
100
100
  end
101
101
 
102
102
  context "when payment required" do
103
- before { allow(order).to receive_messages :payment_required? => true }
103
+ before { allow(order).to receive_messages payment_required?: true }
104
104
  specify do
105
105
  expect(order.checkout_steps).to eq(%w(address delivery payment complete))
106
106
  end
@@ -171,18 +171,19 @@ describe Spree::Order, :type => :model do
171
171
  before do
172
172
  order.state = 'address'
173
173
  allow(order).to receive(:has_available_payment)
174
- shipment = FactoryGirl.create(:shipment, :order => order)
174
+ shipment = FactoryGirl.create(:shipment, order: order)
175
175
  order.email = "user@example.com"
176
176
  order.save!
177
177
  end
178
178
 
179
179
  it "updates totals" do
180
- allow(order).to receive_messages(:ensure_available_shipping_rates => true)
181
- line_item = FactoryGirl.create(:line_item, :price => 10, :adjustment_total => 10)
180
+ allow(order).to receive_messages(ensure_available_shipping_rates: true)
181
+ line_item = FactoryGirl.create(:line_item, price: 10, adjustment_total: 10)
182
+ line_item.variant.update_attributes!(price: 10)
182
183
  order.line_items << line_item
183
- tax_rate = create(:tax_rate, :tax_category => line_item.tax_category, :amount => 0.05)
184
- allow(Spree::TaxRate).to receive_messages :match => [tax_rate]
185
- FactoryGirl.create(:tax_adjustment, :adjustable => line_item, :source => tax_rate, order: order)
184
+ tax_rate = create(:tax_rate, tax_category: line_item.tax_category, amount: 0.05)
185
+ allow(Spree::TaxRate).to receive_messages match: [tax_rate]
186
+ FactoryGirl.create(:tax_adjustment, adjustable: line_item, source: tax_rate, order: order)
186
187
  order.email = "user@example.com"
187
188
  order.next!
188
189
  expect(order.adjustment_total).to eq(0.5)
@@ -191,8 +192,30 @@ describe Spree::Order, :type => :model do
191
192
  expect(order.total).to eq(10.5)
192
193
  end
193
194
 
195
+ it 'updates prices' do
196
+ allow(order).to receive_messages(ensure_available_shipping_rates: true)
197
+ line_item = FactoryGirl.create(:line_item, price: 10, adjustment_total: 10)
198
+ line_item.variant.update_attributes!(price: 20)
199
+ order.line_items << line_item
200
+ tax_rate = create :tax_rate,
201
+ included_in_price: true,
202
+ tax_category: line_item.tax_category,
203
+ amount: 0.05
204
+ allow(Spree::TaxRate).to receive_messages(match: [tax_rate])
205
+ FactoryGirl.create :tax_adjustment,
206
+ adjustable: line_item,
207
+ source: tax_rate,
208
+ order: order
209
+ order.email = "user@example.com"
210
+ order.next!
211
+ expect(order.adjustment_total).to eq(0)
212
+ expect(order.additional_tax_total).to eq(0)
213
+ expect(order.included_tax_total).to eq(0.95)
214
+ expect(order.total).to eq(20)
215
+ end
216
+
194
217
  it "transitions to delivery" do
195
- allow(order).to receive_messages(:ensure_available_shipping_rates => true)
218
+ allow(order).to receive_messages(ensure_available_shipping_rates: true)
196
219
  order.next!
197
220
  assert_state_changed(order, 'address', 'delivery')
198
221
  expect(order.state).to eq("delivery")
@@ -200,7 +223,7 @@ describe Spree::Order, :type => :model do
200
223
 
201
224
  it "does not call persist_order_address if there is no address on the order" do
202
225
  # otherwise, it will crash
203
- allow(order).to receive_messages(:ensure_available_shipping_rates => true)
226
+ allow(order).to receive_messages(ensure_available_shipping_rates: true)
204
227
 
205
228
  order.user = FactoryGirl.create(:user)
206
229
  order.save!
@@ -210,7 +233,7 @@ describe Spree::Order, :type => :model do
210
233
  end
211
234
 
212
235
  it "calls persist_order_address on the order's user" do
213
- allow(order).to receive_messages(:ensure_available_shipping_rates => true)
236
+ allow(order).to receive_messages(ensure_available_shipping_rates: true)
214
237
 
215
238
  order.user = FactoryGirl.create(:user)
216
239
  order.ship_address = FactoryGirl.create(:address)
@@ -222,7 +245,7 @@ describe Spree::Order, :type => :model do
222
245
  end
223
246
 
224
247
  it "does not call persist_order_address on the order's user for a temporary address" do
225
- allow(order).to receive_messages(:ensure_available_shipping_rates => true)
248
+ allow(order).to receive_messages(ensure_available_shipping_rates: true)
226
249
 
227
250
  order.user = FactoryGirl.create(:user)
228
251
  order.temporary_address = true
@@ -235,7 +258,7 @@ describe Spree::Order, :type => :model do
235
258
  context "cannot transition to delivery" do
236
259
  context "with an existing shipment" do
237
260
  before do
238
- line_item = FactoryGirl.create(:line_item, :price => 10)
261
+ line_item = FactoryGirl.create(:line_item, price: 10)
239
262
  order.line_items << line_item
240
263
  end
241
264
 
@@ -297,7 +320,7 @@ describe Spree::Order, :type => :model do
297
320
 
298
321
  context "with payment required" do
299
322
  before do
300
- allow(order).to receive_messages :payment_required? => true
323
+ allow(order).to receive_messages payment_required?: true
301
324
  end
302
325
 
303
326
  it "transitions to payment" do
@@ -310,7 +333,7 @@ describe Spree::Order, :type => :model do
310
333
 
311
334
  context "without payment required" do
312
335
  before do
313
- allow(order).to receive_messages :payment_required? => false
336
+ allow(order).to receive_messages payment_required?: false
314
337
  end
315
338
 
316
339
  it "transitions to complete" do
@@ -357,37 +380,6 @@ describe Spree::Order, :type => :model do
357
380
  end
358
381
  end
359
382
 
360
- context "to payment" do
361
- before do
362
- @default_credit_card = FactoryGirl.create(:credit_card)
363
- order.user = mock_model(Spree::LegacyUser, default_credit_card: @default_credit_card, email: 'spree@example.org')
364
-
365
- allow(order).to receive_messages(payment_required?: true)
366
- allow(order).to receive_messages(total: 20.00)
367
- order.state = 'delivery'
368
- order.save!
369
- end
370
-
371
- it "assigns the user's default credit card" do
372
- order.next!
373
- order.reload
374
-
375
- expect(order.state).to eq 'payment'
376
- expect(order.payments.count).to eq 1
377
- expect(order.payments.first.amount).to eq 20.00
378
- expect(order.payments.first.source).to eq @default_credit_card
379
- end
380
-
381
- it "only generates payment if payment required" do
382
- allow(order).to receive_messages(payment_required?: false)
383
- order.next!
384
- order.reload
385
-
386
- expect(order.state).to eq 'complete'
387
- expect(order.payments.count).to eq 0
388
- end
389
- end
390
-
391
383
  context "from payment" do
392
384
  before do
393
385
  order.state = 'payment'
@@ -395,7 +387,7 @@ describe Spree::Order, :type => :model do
395
387
 
396
388
  context "with confirmation required" do
397
389
  before do
398
- allow(order).to receive_messages :confirmation_required? => true
390
+ allow(order).to receive_messages confirmation_required?: true
399
391
  end
400
392
 
401
393
  it "transitions to confirm" do
@@ -408,22 +400,40 @@ describe Spree::Order, :type => :model do
408
400
  context "without confirmation required" do
409
401
  before do
410
402
  order.email = "spree@example.com"
411
- allow(order).to receive_messages :confirmation_required? => false
412
- allow(order).to receive_messages :payment_required? => true
403
+ allow(order).to receive_messages confirmation_required?: false
404
+ allow(order).to receive_messages payment_required?: true
413
405
  order.payments << FactoryGirl.create(:payment, state: payment_state, order: order)
414
406
  end
415
407
 
416
408
  context 'when there is at least one valid payment' do
417
409
  let(:payment_state) { 'checkout' }
418
410
 
419
- before do
420
- expect(order).to receive(:process_payments!).once { true }
411
+ context 'line_items are in stock' do
412
+ before do
413
+ expect(order).to receive(:process_payments!).once { true }
414
+ end
415
+
416
+ it "transitions to complete" do
417
+ order.next!
418
+ assert_state_changed(order, 'payment', 'complete')
419
+ expect(order.state).to eq('complete')
420
+ end
421
421
  end
422
422
 
423
- it "transitions to complete" do
424
- order.next!
425
- assert_state_changed(order, 'payment', 'complete')
426
- expect(order.state).to eq('complete')
423
+ context 'line_items are not in stock' do
424
+ before do
425
+ expect(order).to receive(:ensure_line_items_are_in_stock).once { false }
426
+ end
427
+
428
+ it 'should not receive process_payments!' do
429
+ expect(order).not_to receive(:process_payments!)
430
+ order.next
431
+ end
432
+
433
+ it 'does not transition to complete' do
434
+ order.next
435
+ expect(order.state).to eq('payment')
436
+ end
427
437
  end
428
438
  end
429
439
 
@@ -443,7 +453,7 @@ describe Spree::Order, :type => :model do
443
453
  # Regression test for #2028
444
454
  context "when payment is not required" do
445
455
  before do
446
- allow(order).to receive_messages :payment_required? => false
456
+ allow(order).to receive_messages payment_required?: false
447
457
  end
448
458
 
449
459
  it "does not call process payments" do
@@ -502,7 +512,7 @@ describe Spree::Order, :type => :model do
502
512
 
503
513
  skip "should only call default transitions once when checkout_flow is redefined" do
504
514
  order = SubclassedOrder.new
505
- allow(order).to receive_messages :payment_required? => true
515
+ allow(order).to receive_messages payment_required?: true
506
516
  expect(order).to receive(:process_payments!).once
507
517
  order.state = "payment"
508
518
  order.next!
@@ -527,7 +537,7 @@ describe Spree::Order, :type => :model do
527
537
  end
528
538
 
529
539
  it "should not keep old event transitions when checkout_flow is redefined" do
530
- expect(Spree::Order.next_event_transitions).to eq([{:cart=>:payment}, {:payment=>:complete}])
540
+ expect(Spree::Order.next_event_transitions).to eq([{cart: :payment}, {payment: :complete}])
531
541
  end
532
542
 
533
543
  it "should not keep old events when checkout_flow is redefined" do
@@ -558,7 +568,7 @@ describe Spree::Order, :type => :model do
558
568
  it "does not attempt to process payments" do
559
569
  allow(order).to receive_message_chain(:line_items, :present?) { true }
560
570
  allow(order).to receive(:ensure_line_items_are_in_stock) { true }
561
- allow(order).to receive(:ensure_line_item_variants_are_not_deleted) { true }
571
+ allow(order).to receive(:ensure_line_item_variants_are_not_discontinued) { true }
562
572
  expect(order).not_to receive(:payment_required?)
563
573
  expect(order).not_to receive(:process_payments!)
564
574
  order.next!
@@ -580,7 +590,7 @@ describe Spree::Order, :type => :model do
580
590
  end
581
591
 
582
592
  it "should maintain removed transitions" do
583
- transition = Spree::Order.find_transition(:from => :delivery, :to => :confirm)
593
+ transition = Spree::Order.find_transition(from: :delivery, to: :confirm)
584
594
  expect(transition).to be_nil
585
595
  end
586
596
 
@@ -595,6 +605,10 @@ describe Spree::Order, :type => :model do
595
605
  order = Spree::Order.new
596
606
  expect(order.checkout_steps).to eq(%w(new_step before_address address delivery complete))
597
607
  end
608
+
609
+ it 'goes through checkout without raising error' do
610
+ expect{ OrderWalkthrough.up_to(:complete) }.to_not raise_error
611
+ end
598
612
  end
599
613
 
600
614
  context "after" do
@@ -608,6 +622,10 @@ describe Spree::Order, :type => :model do
608
622
  order = Spree::Order.new
609
623
  expect(order.checkout_steps).to eq(%w(new_step address after_address delivery complete))
610
624
  end
625
+
626
+ it 'goes through checkout without raising error' do
627
+ expect{ OrderWalkthrough.up_to(:complete) }.to_not raise_error
628
+ end
611
629
  end
612
630
  end
613
631
 
@@ -624,7 +642,7 @@ describe Spree::Order, :type => :model do
624
642
  end
625
643
 
626
644
  it "should maintain removed transitions" do
627
- transition = Spree::Order.find_transition(:from => :delivery, :to => :confirm)
645
+ transition = Spree::Order.find_transition(from: :delivery, to: :confirm)
628
646
  expect(transition).to be_nil
629
647
  end
630
648
 
@@ -689,10 +707,8 @@ describe Spree::Order, :type => :model do
689
707
  it "sets request_env on payment" do
690
708
  request_env = { "USER_AGENT" => "Firefox" }
691
709
 
692
- expected_hash = { "payments_attributes" => [hash_including("request_env" => request_env)] }
693
- expect(order).to receive(:update_attributes).with expected_hash
694
-
695
710
  order.update_from_params(params, permitted_params, request_env)
711
+ expect(order.payments[0].request_env).to eq request_env
696
712
  end
697
713
 
698
714
  it "dont let users mess with others users cards" do
@@ -700,7 +716,7 @@ describe Spree::Order, :type => :model do
700
716
 
701
717
  expect {
702
718
  order.update_from_params(params, permitted_params)
703
- }.to raise_error
719
+ }.to raise_error(Spree.t(:invalid_credit_card))
704
720
  end
705
721
  end
706
722
 
@@ -709,7 +725,7 @@ describe Spree::Order, :type => :model do
709
725
  let(:params) { ActionController::Parameters.new(order: { bad_param: 'okay' } ) }
710
726
 
711
727
  it 'does not let through unpermitted attributes' do
712
- expect(order).to receive(:update_attributes).with({})
728
+ expect(order).to receive(:update_attributes).with(ActionController::Parameters.new.permit!)
713
729
  order.update_from_params(params, permitted_params)
714
730
  end
715
731
 
@@ -745,17 +761,7 @@ describe Spree::Order, :type => :model do
745
761
  let(:params) { ActionController::Parameters.new(order: { good_param: 'okay' } ) }
746
762
 
747
763
  it 'accepts permitted attributes' do
748
- expect(order).to receive(:update_attributes).with({"good_param" => 'okay'})
749
- order.update_from_params(params, permitted_params)
750
- end
751
- end
752
-
753
- context 'callbacks halt' do
754
- before do
755
- expect(order).to receive(:update_params_payment_source).and_return false
756
- end
757
- it 'does not let through unpermitted attributes' do
758
- expect(order).not_to receive(:update_attributes).with({})
764
+ expect(order).to receive(:assign_attributes).with(ActionController::Parameters.new("good_param" => 'okay').permit!)
759
765
  order.update_from_params(params, permitted_params)
760
766
  end
761
767
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Order, :type => :model do
3
+ describe Spree::Order, type: :model do
4
4
  context 'CurrencyUpdater' do
5
5
  context "when changing order currency" do
6
6
  let!(:line_item) { create(:line_item) }
@@ -8,8 +8,8 @@ describe Spree::Order, :type => :model do
8
8
 
9
9
  context "#homogenize_line_item_currencies" do
10
10
  it "succeeds without error" do
11
- expect { line_item.order.update_attributes!(currency: 'EUR') }.to_not raise_error
12
- end
11
+ expect { line_item.order.update_attributes!(currency: 'EUR') }.not_to raise_error
12
+ end
13
13
 
14
14
  it "changes the line_item currencies" do
15
15
  expect { line_item.order.update_attributes!(currency: 'EUR') }.to change{ line_item.reload.currency }.from('USD').to('EUR')
@@ -20,7 +20,7 @@ describe Spree::Order, :type => :model do
20
20
  end
21
21
 
22
22
  it "fails to change the order currency when no prices are available in that currency" do
23
- expect { line_item.order.update_attributes!(currency: 'GBP') }.to raise_error
23
+ expect { line_item.order.update_attributes!(currency: 'GBP') }.to raise_error("no GBP price found for #{line_item.product.name} (#{line_item.variant.sku})")
24
24
  end
25
25
 
26
26
  it "calculates the item total in the order.currency" do
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Order, :type => :model do
3
+ describe Spree::Order, type: :model do
4
4
  let(:order) { stub_model("Spree::Order") }
5
5
 
6
6
  before { create(:store) }
@@ -63,15 +63,12 @@ describe Spree::Order, :type => :model do
63
63
  end
64
64
 
65
65
  it "should not send duplicate confirmation emails" do
66
- allow(order).to receive_messages(:confirmation_delivered? => true)
66
+ allow(order).to receive_messages(confirmation_delivered?: true)
67
67
  expect(Spree::OrderMailer).not_to receive(:confirm_email)
68
68
  order.finalize!
69
69
  end
70
70
 
71
71
  it "should freeze all adjustments" do
72
- # Stub this method as it's called due to a callback
73
- # and it's irrelevant to this test
74
- allow(order).to receive :has_available_shipment
75
72
  allow(Spree::OrderMailer).to receive_message_chain :confirm_email, :deliver_later
76
73
  adjustments = [double]
77
74
  expect(order).to receive(:all_adjustments).and_return(adjustments)
@@ -83,7 +80,7 @@ describe Spree::Order, :type => :model do
83
80
 
84
81
  context "order is considered risky" do
85
82
  before do
86
- allow(order).to receive_messages :is_risky? => true
83
+ allow(order).to receive_messages is_risky?: true
87
84
  end
88
85
 
89
86
  it "should change state to risky" do
@@ -93,7 +90,7 @@ describe Spree::Order, :type => :model do
93
90
 
94
91
  context "and order is approved" do
95
92
  before do
96
- allow(order).to receive_messages :approved? => true
93
+ allow(order).to receive_messages approved?: true
97
94
  end
98
95
 
99
96
  it "should leave order in complete state" do
@@ -105,7 +102,7 @@ describe Spree::Order, :type => :model do
105
102
 
106
103
  context "order is not considered risky" do
107
104
  before do
108
- allow(order).to receive_messages :is_risky? => false
105
+ allow(order).to receive_messages is_risky?: false
109
106
  end
110
107
 
111
108
  it "should set completed_at" do
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Order, :type => :model do
3
+ describe Spree::Order, type: :model do
4
4
  let(:order) { stub_model(Spree::Order) }
5
5
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Spree
4
- describe Spree::Order, :type => :model do
4
+ describe Spree::Order, type: :model do
5
5
  let(:order) { stub_model(Spree::Order) }
6
6
  let(:updater) { Spree::OrderUpdater.new(order) }
7
7
 
@@ -11,12 +11,12 @@ module Spree
11
11
  Spree::Config[:auto_capture] = true
12
12
 
13
13
  allow(order).to receive_message_chain(:line_items, :empty?).and_return(false)
14
- allow(order).to receive_messages :total => 100
14
+ allow(order).to receive_messages total: 100
15
15
  end
16
16
 
17
17
  it 'processes all checkout payments' do
18
- payment_1 = create(:payment, :amount => 50)
19
- payment_2 = create(:payment, :amount => 50)
18
+ payment_1 = create(:payment, amount: 50)
19
+ payment_2 = create(:payment, amount: 50)
20
20
  allow(order).to receive(:unprocessed_payments).and_return([payment_1, payment_2])
21
21
 
22
22
  order.process_payments!
@@ -28,9 +28,9 @@ module Spree
28
28
  end
29
29
 
30
30
  it 'does not go over total for order' do
31
- payment_1 = create(:payment, :amount => 50)
32
- payment_2 = create(:payment, :amount => 50)
33
- payment_3 = create(:payment, :amount => 50)
31
+ payment_1 = create(:payment, amount: 50)
32
+ payment_2 = create(:payment, amount: 50)
33
+ payment_3 = create(:payment, amount: 50)
34
34
  allow(order).to receive(:unprocessed_payments).and_return([payment_1, payment_2, payment_3])
35
35
 
36
36
  order.process_payments!
@@ -43,8 +43,8 @@ module Spree
43
43
  end
44
44
 
45
45
  it "does not use failed payments" do
46
- payment_1 = create(:payment, :amount => 50)
47
- payment_2 = create(:payment, :amount => 50, :state => 'failed')
46
+ payment_1 = create(:payment, amount: 50)
47
+ payment_2 = create(:payment, amount: 50, state: 'failed')
48
48
  allow(order).to receive(:pending_payments).and_return([payment_1])
49
49
 
50
50
  expect(payment_2).not_to receive(:process!)
@@ -63,14 +63,14 @@ module Spree
63
63
  persisted_order = Spree::Order.create
64
64
  credit_card_payment_method = create(:credit_card_payment_method)
65
65
  attributes = {
66
- :payments_attributes => [
66
+ payments_attributes: [
67
67
  {
68
- :payment_method_id => credit_card_payment_method.id,
69
- :source_attributes => {
70
- :name => "Ryan Bigg",
71
- :number => "41111111111111111111",
72
- :expiry => "01 / 15",
73
- :verification_value => "123"
68
+ payment_method_id: credit_card_payment_method.id,
69
+ source_attributes: {
70
+ name: "Ryan Bigg",
71
+ number: "41111111111111111111",
72
+ expiry: "01 / 15",
73
+ verification_value: "123"
74
74
  }
75
75
  }
76
76
  ]
@@ -113,12 +113,12 @@ module Spree
113
113
  before { expect(payment).to receive(:process!).and_raise(Spree::Core::GatewayError) }
114
114
 
115
115
  it "should return true when configured to allow checkout on gateway failures" do
116
- Spree::Config.set :allow_checkout_on_gateway_error => true
116
+ Spree::Config.set allow_checkout_on_gateway_error: true
117
117
  expect(order.process_payments!).to be true
118
118
  end
119
119
 
120
120
  it "should return false when not configured to allow checkout on gateway failures" do
121
- Spree::Config.set :allow_checkout_on_gateway_error => false
121
+ Spree::Config.set allow_checkout_on_gateway_error: false
122
122
  expect(order.process_payments!).to be false
123
123
  end
124
124
  end
@@ -126,7 +126,7 @@ module Spree
126
126
 
127
127
  context "#authorize_payments!" do
128
128
  let(:payment) { stub_model(Spree::Payment) }
129
- before { allow(order).to receive_messages :unprocessed_payments => [payment], :total => 10 }
129
+ before { allow(order).to receive_messages unprocessed_payments: [payment], total: 10 }
130
130
  subject { order.authorize_payments! }
131
131
 
132
132
  it "processes payments with attempt_authorization!" do
@@ -139,7 +139,7 @@ module Spree
139
139
 
140
140
  context "#capture_payments!" do
141
141
  let(:payment) { stub_model(Spree::Payment) }
142
- before { allow(order).to receive_messages :unprocessed_payments => [payment], :total => 10 }
142
+ before { allow(order).to receive_messages unprocessed_payments: [payment], total: 10 }
143
143
  subject { order.capture_payments! }
144
144
 
145
145
  it "processes payments with attempt_authorization!" do
@@ -172,7 +172,7 @@ module Spree
172
172
  reimbursement: reimbursement
173
173
  order = reimbursement.order.reload
174
174
  # Update the order totals so payment_total goes to 0 reflecting the refund..
175
- order.update!
175
+ order.update_with_updater!
176
176
  # Order Total - (Payment Total + Reimbursed)
177
177
  # 10 - (0 + 10) = 0
178
178
  expect(order.outstanding_balance).to eq 0
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Order, :type => :model do
3
+ describe Spree::Order, type: :model do
4
4
  let(:order) { stub_model('Spree::Order') }
5
5
 
6
6
  describe ".is_risky?" do