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,11 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Promotion, :type => :model do
3
+ describe Spree::Promotion, type: :model do
4
4
  let(:promotion) { Spree::Promotion.new }
5
5
 
6
6
  describe "validations" do
7
7
  before :each do
8
- @valid_promotion = Spree::Promotion.new :name => "A promotion"
8
+ @valid_promotion = Spree::Promotion.new name: "A promotion"
9
9
  end
10
10
 
11
11
  it "valid_promotion is valid" do
@@ -24,41 +24,97 @@ describe Spree::Promotion, :type => :model do
24
24
  @valid_promotion.name = nil
25
25
  expect(@valid_promotion).not_to be_valid
26
26
  end
27
- end
28
27
 
29
- describe ".coupons" do
30
- it "scopes promotions with coupon code present only" do
31
- promotion = Spree::Promotion.create! name: "test", code: ''
32
- expect(Spree::Promotion.coupons).to be_empty
28
+ describe "expires_at_must_be_later_than_starts_at" do
29
+ before do
30
+ @valid_promotion.starts_at = Date.today
31
+ end
32
+
33
+ context "starts_at is a date earlier than expires_at" do
34
+ before { @valid_promotion.expires_at = 5.days.from_now }
35
+
36
+ it "is valid" do
37
+ expect(@valid_promotion).to be_valid
38
+ end
39
+ end
40
+
41
+ context "starts_at is a date earlier than expires_at" do
42
+ before { @valid_promotion.expires_at = 5.days.ago }
43
+
44
+ context "is not valid" do
45
+ before { @valid_promotion.valid? }
46
+ it { expect(@valid_promotion).not_to be_valid }
47
+ it { expect(@valid_promotion.errors[:expires_at]).to include(I18n.t(:invalid_date_range, scope: 'activerecord.errors.models.spree/promotion.attributes.expires_at')) }
48
+ end
49
+ end
50
+
51
+ context "starts_at and expires_at are nil" do
52
+ before do
53
+ @valid_promotion.expires_at = nil
54
+ @valid_promotion.starts_at = nil
55
+ end
33
56
 
34
- promotion.update_column :code, "check"
35
- expect(Spree::Promotion.coupons.first).to eq promotion
57
+ it "is valid" do
58
+ expect(@valid_promotion).to be_valid
59
+ end
60
+ end
36
61
  end
37
62
  end
38
63
 
39
- describe ".applied" do
40
- it "scopes promotions that have been applied to an order only" do
41
- promotion = Spree::Promotion.create! name: "test", code: ''
42
- expect(Spree::Promotion.applied).to be_empty
64
+ describe 'scopes' do
65
+ describe '.coupons' do
66
+ let!(:promotion_without_code) { Spree::Promotion.create! name: 'test', code: '' }
67
+ let!(:promotion_with_code) { Spree::Promotion.create! name: 'test1', code: 'code' }
68
+
69
+ subject { Spree::Promotion.coupons }
43
70
 
44
- promotion.orders << create(:order)
45
- expect(Spree::Promotion.applied.first).to eq promotion
71
+ it 'is expected to not include promotion without code' do
72
+ is_expected.to_not include(promotion_without_code)
73
+ end
74
+
75
+ it 'is expected to include promotion with code' do
76
+ is_expected.to include(promotion_with_code)
77
+ end
46
78
  end
47
- end
48
79
 
49
- describe ".advertised" do
50
- let(:promotion) { create(:promotion) }
51
- let(:advertised_promotion) { create(:promotion, :advertise => true) }
80
+ describe '.applied' do
81
+ let!(:promotion_not_applied) { Spree::Promotion.create! name: 'test', code: '' }
82
+ let(:order) { create(:order) }
83
+ let!(:promotion_applied) do
84
+ promotion = Spree::Promotion.create!(name: 'test1', code: '')
85
+ promotion.orders << order
86
+ promotion
87
+ end
88
+
89
+ subject { Spree::Promotion.applied }
90
+
91
+ it 'is expected to not include promotion not applied' do
92
+ is_expected.to_not include(promotion_not_applied)
93
+ end
94
+
95
+ it 'is expected to include promotion applied' do
96
+ is_expected.to include(promotion_applied)
97
+ end
98
+ end
99
+
100
+ describe '.advertised' do
101
+ let!(:promotion_not_advertised) { Spree::Promotion.create! name: 'test', advertise: false }
102
+ let!(:promotion_advertised) { Spree::Promotion.create! name: 'test1', advertise: true }
103
+
104
+ subject { Spree::Promotion.advertised }
105
+
106
+ it 'is expected to not include promotion not advertised' do
107
+ is_expected.to_not include(promotion_not_advertised)
108
+ end
52
109
 
53
- it "only shows advertised promotions" do
54
- advertised = Spree::Promotion.advertised
55
- expect(advertised).to include(advertised_promotion)
56
- expect(advertised).not_to include(promotion)
110
+ it 'is expected to include promotion advertised' do
111
+ is_expected.to include(promotion_advertised)
112
+ end
57
113
  end
58
114
  end
59
115
 
60
116
  describe "#destroy" do
61
- let(:promotion) { Spree::Promotion.create(:name => "delete me") }
117
+ let(:promotion) { Spree::Promotion.create(name: "delete me") }
62
118
 
63
119
  before(:each) do
64
120
  promotion.actions << Spree::Promotion::Actions::CreateAdjustment.new
@@ -77,7 +133,7 @@ describe Spree::Promotion, :type => :model do
77
133
  end
78
134
 
79
135
  describe "#save" do
80
- let(:promotion) { Spree::Promotion.create(:name => "delete me") }
136
+ let(:promotion) { Spree::Promotion.create(name: "delete me") }
81
137
 
82
138
  before(:each) do
83
139
  promotion.actions << Spree::Promotion::Actions::CreateAdjustment.new
@@ -102,9 +158,9 @@ describe Spree::Promotion, :type => :model do
102
158
  promotion.promotion_actions = [@action1, @action2]
103
159
  promotion.created_at = 2.days.ago
104
160
 
105
- @user = stub_model(Spree::LegacyUser, :email => "spree@example.com")
161
+ @user = stub_model(Spree::LegacyUser, email: "spree@example.com")
106
162
  @order = Spree::Order.create user: @user
107
- @payload = { :order => @order, :user => @user }
163
+ @payload = { order: @order, user: @user }
108
164
  end
109
165
 
110
166
  it "should check path if present" do
@@ -130,7 +186,7 @@ describe Spree::Promotion, :type => :model do
130
186
 
131
187
  it "does activate if newer then order" do
132
188
  expect(@action1).to receive(:perform).with(@payload)
133
- promotion.created_at = DateTime.now + 2
189
+ promotion.created_at = DateTime.current + 2
134
190
  expect(promotion.activate(@payload)).to be true
135
191
  end
136
192
 
@@ -164,10 +220,10 @@ describe Spree::Promotion, :type => :model do
164
220
 
165
221
  it "should have its usage limit exceeded" do
166
222
  promotion.usage_limit = 2
167
- allow(promotion).to receive_messages(:adjusted_credits_count => 2)
223
+ allow(promotion).to receive_messages(adjusted_credits_count: 2)
168
224
  expect(promotion.usage_limit_exceeded?(promotable)).to be true
169
225
 
170
- allow(promotion).to receive_messages(:adjusted_credits_count => 3)
226
+ allow(promotion).to receive_messages(adjusted_credits_count: 3)
171
227
  expect(promotion.usage_limit_exceeded?(promotable)).to be true
172
228
  end
173
229
  end
@@ -178,34 +234,34 @@ describe Spree::Promotion, :type => :model do
178
234
  end
179
235
 
180
236
  it "should be expired if it hasn't started yet" do
181
- promotion.starts_at = Time.now + 1.day
237
+ promotion.starts_at = Time.current + 1.day
182
238
  expect(promotion).to be_expired
183
239
  end
184
240
 
185
241
  it "should be expired if it has already ended" do
186
- promotion.expires_at = Time.now - 1.day
242
+ promotion.expires_at = Time.current - 1.day
187
243
  expect(promotion).to be_expired
188
244
  end
189
245
 
190
246
  it "should not be expired if it has started already" do
191
- promotion.starts_at = Time.now - 1.day
247
+ promotion.starts_at = Time.current - 1.day
192
248
  expect(promotion).not_to be_expired
193
249
  end
194
250
 
195
251
  it "should not be expired if it has not ended yet" do
196
- promotion.expires_at = Time.now + 1.day
252
+ promotion.expires_at = Time.current + 1.day
197
253
  expect(promotion).not_to be_expired
198
254
  end
199
255
 
200
256
  it "should not be expired if current time is within starts_at and expires_at range" do
201
- promotion.starts_at = Time.now - 1.day
202
- promotion.expires_at = Time.now + 1.day
257
+ promotion.starts_at = Time.current - 1.day
258
+ promotion.expires_at = Time.current + 1.day
203
259
  expect(promotion).not_to be_expired
204
260
  end
205
261
 
206
262
  it "should not be expired if usage limit is not exceeded" do
207
263
  promotion.usage_limit = 2
208
- allow(promotion).to receive_messages(:credits_count => 1)
264
+ allow(promotion).to receive_messages(credits_count: 1)
209
265
  expect(promotion).not_to be_expired
210
266
  end
211
267
  end
@@ -221,7 +277,7 @@ describe Spree::Promotion, :type => :model do
221
277
 
222
278
  let!(:action) do
223
279
  calculator = Spree::Calculator::FlatRate.new
224
- action_params = { :promotion => promotion, :calculator => calculator }
280
+ action_params = { promotion: promotion, calculator: calculator }
225
281
  action = Spree::Promotion::Actions::CreateAdjustment.create(action_params)
226
282
  promotion.actions << action
227
283
  action
@@ -253,7 +309,7 @@ describe Spree::Promotion, :type => :model do
253
309
  context "#adjusted_credits_count" do
254
310
  let(:order) { create :order }
255
311
  let(:line_item) { create :line_item, order: order }
256
- let(:promotion) { Spree::Promotion.create name: "promo", :code => "10off" }
312
+ let(:promotion) { Spree::Promotion.create name: "promo", code: "10off" }
257
313
  let(:order_action) {
258
314
  action = Spree::Promotion::Actions::CreateAdjustment.create(calculator: Spree::Calculator::FlatPercentItemTotal.new)
259
315
  promotion.actions << action
@@ -266,20 +322,20 @@ describe Spree::Promotion, :type => :model do
266
322
  }
267
323
  let(:order_adjustment) do
268
324
  Spree::Adjustment.create!(
269
- :source => order_action,
270
- :amount => 10,
271
- :adjustable => order,
272
- :order => order,
273
- :label => "Promotional adjustment"
325
+ source: order_action,
326
+ amount: 10,
327
+ adjustable: order,
328
+ order: order,
329
+ label: "Promotional adjustment"
274
330
  )
275
331
  end
276
332
  let(:item_adjustment) do
277
333
  Spree::Adjustment.create!(
278
- :source => item_action,
279
- :amount => 10,
280
- :adjustable => line_item,
281
- :order => order,
282
- :label => "Promotional adjustment"
334
+ source: item_action,
335
+ amount: 10,
336
+ adjustable: line_item,
337
+ order: order,
338
+ label: "Promotional adjustment"
283
339
  )
284
340
  end
285
341
 
@@ -297,15 +353,15 @@ describe Spree::Promotion, :type => :model do
297
353
  end
298
354
 
299
355
  context "#products" do
356
+ let(:product) { create(:product) }
300
357
  let(:promotion) { create(:promotion) }
301
358
 
302
359
  context "when it has product rules with products associated" do
303
- let(:promotion_rule) { Spree::Promotion::Rules::Product.new }
360
+ let(:promotion_rule) { create(:promotion_rule, promotion: promotion, type: 'Spree::Promotion::Rules::Product') }
304
361
 
305
362
  before do
306
- promotion_rule.promotion = promotion
307
- promotion_rule.products << create(:product)
308
- promotion_rule.save
363
+ promotion.promotion_rules << promotion_rule
364
+ product.product_promotion_rules.create(promotion_rule_id: promotion_rule.id)
309
365
  end
310
366
 
311
367
  it "should have products" do
@@ -324,7 +380,7 @@ describe Spree::Promotion, :type => :model do
324
380
  let(:promotable) { create :order }
325
381
  subject { promotion.eligible?(promotable) }
326
382
  context "when promotion is expired" do
327
- before { promotion.expires_at = Time.now - 10.days }
383
+ before { promotion.expires_at = Time.current - 10.days }
328
384
  it { is_expected.to be false }
329
385
  end
330
386
  context "when promotable is a Spree::LineItem" do
@@ -369,7 +425,7 @@ describe Spree::Promotion, :type => :model do
369
425
  end
370
426
 
371
427
  it "true if there are no applicable rules" do
372
- promotion.promotion_rules = [stub_model(Spree::PromotionRule, :eligible? => true, :applicable? => false)]
428
+ promotion.promotion_rules = [stub_model(Spree::PromotionRule, eligible?: true, applicable?: false)]
373
429
  allow(promotion.promotion_rules).to receive(:for).and_return([])
374
430
  expect(promotion.eligible_rules(promotable)).to eq []
375
431
  end
@@ -417,14 +473,14 @@ describe Spree::Promotion, :type => :model do
417
473
  end
418
474
 
419
475
  context "with 'any' match policy" do
420
- let(:promotion) { Spree::Promotion.create(:name => "Promo", :match_policy => 'any') }
476
+ let(:promotion) { Spree::Promotion.create(name: "Promo", match_policy: 'any') }
421
477
  let(:promotable) { double('Promotable') }
422
478
 
423
479
  it "should have eligible rules if any of the rules are eligible" do
424
- allow_any_instance_of(Spree::PromotionRule).to receive_messages(:applicable? => true)
425
- true_rule = Spree::PromotionRule.create(:promotion => promotion)
426
- allow(true_rule).to receive_messages(:eligible? => true)
427
- allow(promotion).to receive_messages(:rules => [true_rule])
480
+ allow_any_instance_of(Spree::PromotionRule).to receive_messages(applicable?: true)
481
+ true_rule = Spree::PromotionRule.create(promotion: promotion)
482
+ allow(true_rule).to receive_messages(eligible?: true)
483
+ allow(promotion).to receive_messages(rules: [true_rule])
428
484
  allow(promotion).to receive_message_chain(:rules, :for).and_return([true_rule])
429
485
  expect(promotion.eligible_rules(promotable)).to eq [true_rule]
430
486
  end
@@ -509,7 +565,7 @@ describe Spree::Promotion, :type => :model do
509
565
  # admin form posts the code and path as empty string
510
566
  describe "normalize blank values for code & path" do
511
567
  it "will save blank value as nil value instead" do
512
- promotion = Spree::Promotion.create(:name => "A promotion", :code => "", :path => "")
568
+ promotion = Spree::Promotion.create(name: "A promotion", code: "", path: "")
513
569
  expect(promotion.code).to be_nil
514
570
  expect(promotion.path).to be_nil
515
571
  end
@@ -518,11 +574,31 @@ describe Spree::Promotion, :type => :model do
518
574
  # Regression test for #4081
519
575
  describe "#with_coupon_code" do
520
576
  context "and code stored in uppercase" do
521
- let!(:promotion) { create(:promotion, :code => "MY-COUPON-123") }
577
+ let!(:promotion) { create(:promotion, :with_order_adjustment, code: "MY-COUPON-123") }
522
578
  it "finds the code with lowercase" do
523
579
  expect(Spree::Promotion.with_coupon_code("my-coupon-123")).to eql promotion
524
580
  end
525
581
  end
582
+
583
+ context "and there are multiple coupons with the same code" do
584
+ context "and only one has any actions" do
585
+ let!(:promotion_without_actions) { create(:promotion, code: "MY-COUPON-123").actions.clear }
586
+ let!(:promotion) { create(:promotion, :with_order_adjustment, code: "MY-COUPON-123") }
587
+
588
+ it "then returns the one with an action" do
589
+ expect(Spree::Promotion.with_coupon_code("MY-COUPON-123").actions.exists?).to be
590
+ end
591
+ end
592
+
593
+ context "and all of them has actions" do
594
+ let!(:first_promotion) { create(:promotion, :with_order_adjustment, code: "MY-COUPON-123") }
595
+ let!(:second_promotion) { create(:promotion, :with_order_adjustment, code: "MY-COUPON-123") }
596
+
597
+ it "then returns the first one with an action" do
598
+ expect(Spree::Promotion.with_coupon_code("MY-COUPON-123").id).to eq(first_promotion.id)
599
+ end
600
+ end
601
+ end
526
602
  end
527
603
 
528
604
  describe '#used_by?' do
@@ -541,8 +617,8 @@ describe Spree::Promotion, :type => :model do
541
617
  context 'when the user has used this promo' do
542
618
  before do
543
619
  promotion.activate(order: order)
544
- order.update!
545
- order.completed_at = Time.now
620
+ order.update_with_updater!
621
+ order.completed_at = Time.current
546
622
  order.save!
547
623
  end
548
624
 
@@ -588,7 +664,7 @@ describe Spree::Promotion, :type => :model do
588
664
  expect(order.adjustment_total).to eq 0
589
665
 
590
666
  promo.activate order: order
591
- order.update!
667
+ order.update_with_updater!
592
668
 
593
669
  expect(line_item.adjustments.size).to eq(1)
594
670
  expect(order.adjustment_total).to eq -5
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::PropertyPrototype do
4
+ describe 'Validations' do
5
+ it { is_expected.to validate_presence_of(:prototype) }
6
+ it { is_expected.to validate_presence_of(:property) }
7
+ it { is_expected.to validate_uniqueness_of(:prototype_id).scoped_to(:property_id).allow_nil }
8
+ end
9
+ end
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Property, :type => :model do
3
+ describe Spree::Property, type: :model do
4
4
 
5
5
  end
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Prototype, :type => :model do
3
+ describe Spree::Prototype, type: :model do
4
4
 
5
5
  end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::PrototypeTaxon do
4
+ describe 'Validations' do
5
+ it { is_expected.to validate_presence_of(:prototype) }
6
+ it { is_expected.to validate_presence_of(:taxon) }
7
+ it { is_expected.to validate_uniqueness_of(:prototype_id).scoped_to(:taxon_id).allow_nil }
8
+ end
9
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::RefundReason do
4
+ describe 'Associations' do
5
+ it { is_expected.to have_many(:refunds).dependent(:restrict_with_error) }
6
+ end
7
+
8
+ describe 'Class Methods' do
9
+ describe '.return_processing_reason' do
10
+ context 'default refund reason present' do
11
+ let!(:default_refund_reason) { create(:default_refund_reason) }
12
+ it { expect(described_class.return_processing_reason).to eq(default_refund_reason) }
13
+ end
14
+
15
+ context 'default refund reason not present' do
16
+ it { expect(described_class.return_processing_reason).to eq(nil) }
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Refund, :type => :model do
3
+ describe Spree::Refund, type: :model do
4
4
 
5
5
  describe 'create' do
6
6
  let(:amount) { 100.0 }
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Spree
4
- describe Reimbursement::Credit, :type => :model do
4
+ describe Reimbursement::Credit, type: :model do
5
5
  context 'class methods' do
6
6
  describe '.total_amount_reimbursed_for' do
7
7
  subject { Spree::Reimbursement::Credit.total_amount_reimbursed_for(reimbursement) }
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Spree
4
- describe Reimbursement::ReimbursementTypeEngine, :type => :model do
4
+ describe Reimbursement::ReimbursementTypeEngine, type: :model do
5
5
  describe '#calculate_reimbursement_types' do
6
6
  let(:return_item) { create(:return_item) }
7
7
  let(:return_items) { [ return_item ] }
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Spree
4
- describe Reimbursement::ReimbursementTypeValidator, :type => :model do
4
+ describe Reimbursement::ReimbursementTypeValidator, type: :model do
5
5
  class DummyClass
6
6
  include Spree::Reimbursement::ReimbursementTypeValidator
7
7
 
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::ReimbursementPerformer, :type => :model do
3
+ describe Spree::ReimbursementPerformer, type: :model do
4
4
  let(:reimbursement) { create(:reimbursement, return_items_count: 1) }
5
5
  let(:return_item) { reimbursement.return_items.first }
6
6
  let(:reimbursement_type) { double("ReimbursementType") }
@@ -2,33 +2,6 @@ require 'spec_helper'
2
2
 
3
3
  describe Spree::Reimbursement, type: :model do
4
4
 
5
- describe ".before_create" do
6
- describe "#generate_number" do
7
- context "number is assigned" do
8
- let(:number) { '123' }
9
- let(:reimbursement) { Spree::Reimbursement.new(number: number) }
10
-
11
- it "should return the assigned number" do
12
- reimbursement.save
13
- expect(reimbursement.number).to eq number
14
- end
15
- end
16
-
17
- context "number is not assigned" do
18
- let(:reimbursement) { Spree::Reimbursement.new(number: nil) }
19
-
20
- before do
21
- allow(reimbursement).to receive_messages(valid?: true)
22
- end
23
-
24
- it "should assign number with random RI number" do
25
- reimbursement.save
26
- expect(reimbursement.number).to be =~ /RI\d{9}/
27
- end
28
- end
29
- end
30
- end
31
-
32
5
  describe "#display_total" do
33
6
  let(:total) { 100.50 }
34
7
  let(:currency) { "USD" }
@@ -50,7 +23,7 @@ describe Spree::Reimbursement, type: :model do
50
23
  let!(:adjustments) { [] } # placeholder to ensure it gets run prior the "before" at this level
51
24
 
52
25
  let!(:tax_rate) { nil }
53
- let!(:tax_zone) { create(:zone, default_tax: true) }
26
+ let!(:tax_zone) { create(:zone_with_country, default_tax: true) }
54
27
 
55
28
  let(:order) { create(:order_with_line_items, state: 'payment', line_items_count: 1, line_items_price: line_items_price, shipment_cost: 0) }
56
29
  let(:line_items_price) { BigDecimal.new(10) }
@@ -73,7 +46,7 @@ describe Spree::Reimbursement, type: :model do
73
46
  shipment.update_column('state', 'shipped')
74
47
  end
75
48
  order.reload
76
- order.update!
49
+ order.update_with_updater!
77
50
  if payment
78
51
  payment.save!
79
52
  order.next! # confirm
@@ -118,7 +91,7 @@ describe Spree::Reimbursement, type: :model do
118
91
  subject
119
92
  }.to change { Spree::Refund.count }.by(1)
120
93
  return_item.reload
121
- expect(return_item.included_tax_total).to be < 0
94
+ expect(return_item.included_tax_total).to be > 0
122
95
  expect(return_item.included_tax_total).to eq line_item.included_tax_total
123
96
  expect(reimbursement.total).to eq (line_item.pre_tax_amount + line_item.included_tax_total).round(2)
124
97
  expect(Spree::Refund.last.amount).to eq (line_item.pre_tax_amount + line_item.included_tax_total).round(2)
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::ReimbursementTaxCalculator, :type => :model do
3
+ describe Spree::ReimbursementTaxCalculator, type: :model do
4
4
 
5
5
  let!(:tax_rate) { nil }
6
6
 
@@ -24,8 +24,14 @@ describe Spree::ReimbursementTaxCalculator, :type => :model do
24
24
  end
25
25
 
26
26
  context 'with additional tax' do
27
- let!(:tax_rate) { create(:tax_rate, name: "Sales Tax", amount: 0.10, included_in_price: false, zone: tax_zone) }
28
- let(:tax_zone) { create(:zone, default_tax: true) }
27
+ let!(:tax_rate) do
28
+ create :tax_rate,
29
+ name: "Sales Tax",
30
+ amount: 0.10,
31
+ included_in_price: false,
32
+ tax_category: create(:tax_category),
33
+ zone: create(:zone_with_country, default_tax: true)
34
+ end
29
35
 
30
36
  it 'sets additional_tax_total on the return items' do
31
37
  subject
@@ -37,14 +43,20 @@ describe Spree::ReimbursementTaxCalculator, :type => :model do
37
43
  end
38
44
 
39
45
  context 'with included tax' do
40
- let!(:tax_rate) { create(:tax_rate, name: "VAT Tax", amount: 0.1, included_in_price: true, zone: tax_zone) }
41
- let(:tax_zone) { create(:zone, default_tax: true) }
46
+ let!(:tax_rate) do
47
+ create :tax_rate,
48
+ name: "VAT Tax",
49
+ amount: 0.10,
50
+ included_in_price: true,
51
+ tax_category: create(:tax_category),
52
+ zone: create(:zone_with_country, default_tax: true)
53
+ end
42
54
 
43
55
  it 'sets included_tax_total on the return items' do
44
56
  subject
45
57
  return_item.reload
46
58
 
47
- expect(return_item.included_tax_total).to be < 0
59
+ expect(return_item.included_tax_total).to be > 0
48
60
  expect(return_item.included_tax_total).to eq line_item.included_tax_total
49
61
  end
50
62
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Spree
4
- describe ReimbursementType::Credit, :type => :model do
4
+ describe ReimbursementType::Credit, type: :model do
5
5
  let(:reimbursement) { create(:reimbursement, return_items_count: 1) }
6
6
  let(:return_item) { reimbursement.return_items.first }
7
7
  let(:payment) { reimbursement.order.payments.first }
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Spree
4
- describe ReimbursementType::Exchange, :type => :model do
4
+ describe ReimbursementType::Exchange, type: :model do
5
5
  describe '.reimburse' do
6
6
  let(:reimbursement) { create(:reimbursement, return_items_count: 1) }
7
7
  let(:return_items) { reimbursement.return_items }
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Spree
4
- describe ReimbursementType::OriginalPayment, :type => :model do
4
+ describe ReimbursementType::OriginalPayment, type: :model do
5
5
  let(:reimbursement) { create(:reimbursement, return_items_count: 1) }
6
6
  let(:return_item) { reimbursement.return_items.first }
7
7
  let(:payment) { reimbursement.order.payments.first }