solidus_core 1.2.3 → 1.3.0.beta1

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 (573) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Rakefile +1 -1
  4. data/app/assets/javascripts/spree.js.coffee.erb +1 -1
  5. data/app/helpers/spree/base_helper.rb +21 -43
  6. data/app/helpers/spree/orders_helper.rb +0 -1
  7. data/app/helpers/spree/products_helper.rb +10 -12
  8. data/app/helpers/spree/taxons_helper.rb +4 -4
  9. data/app/mailers/spree/base_mailer.rb +1 -3
  10. data/app/mailers/spree/carton_mailer.rb +2 -2
  11. data/app/mailers/spree/order_mailer.rb +2 -2
  12. data/app/models/concerns/spree/adjustment_source.rb +12 -16
  13. data/app/models/concerns/spree/calculated_adjustments.rb +17 -14
  14. data/app/models/concerns/spree/default_price.rb +10 -26
  15. data/app/models/concerns/spree/display_money.rb +1 -1
  16. data/app/models/concerns/spree/ordered_property_value_list.rb +10 -12
  17. data/app/models/concerns/spree/ransackable_attributes.rb +6 -5
  18. data/app/models/concerns/spree/user_address_book.rb +87 -81
  19. data/app/models/concerns/spree/user_methods.rb +2 -2
  20. data/app/models/concerns/spree/user_payment_source.rb +12 -8
  21. data/app/models/spree/ability.rb +2 -2
  22. data/app/models/spree/address.rb +37 -38
  23. data/app/models/spree/adjustment.rb +2 -6
  24. data/app/models/spree/app_configuration.rb +60 -5
  25. data/app/models/spree/base.rb +1 -1
  26. data/app/models/spree/calculator/default_tax.rb +28 -24
  27. data/app/models/spree/calculator/flat_percent_item_total.rb +1 -1
  28. data/app/models/spree/calculator/flat_rate.rb +2 -2
  29. data/app/models/spree/calculator/flexi_rate.rb +4 -4
  30. data/app/models/spree/calculator/percent_per_item.rb +8 -9
  31. data/app/models/spree/calculator/price_sack.rb +3 -3
  32. data/app/models/spree/calculator/returns/default_refund_amount.rb +11 -12
  33. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +1 -1
  34. data/app/models/spree/calculator/shipping/flat_rate.rb +2 -2
  35. data/app/models/spree/calculator/shipping/flexi_rate.rb +3 -3
  36. data/app/models/spree/calculator/shipping/per_item.rb +1 -1
  37. data/app/models/spree/calculator/shipping/price_sack.rb +3 -3
  38. data/app/models/spree/calculator/tiered_flat_rate.rb +2 -1
  39. data/app/models/spree/calculator/tiered_percent.rb +2 -1
  40. data/app/models/spree/calculator.rb +3 -3
  41. data/app/models/spree/carton.rb +2 -2
  42. data/app/models/spree/country.rb +7 -4
  43. data/app/models/spree/credit_card.rb +26 -22
  44. data/app/models/spree/customer_return.rb +8 -7
  45. data/app/models/spree/exchange.rb +1 -9
  46. data/app/models/spree/gateway/bogus.rb +31 -31
  47. data/app/models/spree/gateway/bogus_simple.rb +6 -8
  48. data/app/models/spree/gateway.rb +9 -15
  49. data/app/models/spree/image.rb +3 -3
  50. data/app/models/spree/inventory_unit.rb +23 -23
  51. data/app/models/spree/item_adjustments.rb +3 -2
  52. data/app/models/spree/legacy_user.rb +1 -5
  53. data/app/models/spree/line_item.rb +95 -84
  54. data/app/models/spree/option_type.rb +1 -1
  55. data/app/models/spree/option_value.rb +3 -1
  56. data/app/models/spree/order/checkout.rb +45 -44
  57. data/app/models/spree/order/payments.rb +42 -45
  58. data/app/models/spree/order.rb +70 -75
  59. data/app/models/spree/order_cancellations.rb +4 -4
  60. data/app/models/spree/order_capturing.rb +3 -2
  61. data/app/models/spree/order_contents.rb +61 -59
  62. data/app/models/spree/order_inventory.rb +59 -54
  63. data/app/models/spree/order_mutex.rb +0 -1
  64. data/app/models/spree/order_shipping.rb +8 -9
  65. data/app/models/spree/order_stock_location.rb +3 -3
  66. data/app/models/spree/order_update_attributes.rb +0 -2
  67. data/app/models/spree/order_updater.rb +11 -24
  68. data/app/models/spree/payment/processing.rb +26 -37
  69. data/app/models/spree/payment.rb +68 -71
  70. data/app/models/spree/payment_method/check.rb +2 -2
  71. data/app/models/spree/payment_method/store_credit.rb +6 -7
  72. data/app/models/spree/payment_method.rb +11 -8
  73. data/app/models/spree/preferences/configuration.rb +2 -2
  74. data/app/models/spree/preferences/preferable.rb +1 -1
  75. data/app/models/spree/preferences/preferable_class_methods.rb +1 -1
  76. data/app/models/spree/preferences/scoped_store.rb +6 -5
  77. data/app/models/spree/preferences/static_model_preferences.rb +1 -1
  78. data/app/models/spree/preferences/statically_configurable.rb +2 -2
  79. data/app/models/spree/preferences/store.rb +2 -6
  80. data/app/models/spree/price.rb +17 -19
  81. data/app/models/spree/product/scopes.rb +18 -17
  82. data/app/models/spree/product.rb +28 -11
  83. data/app/models/spree/product_property.rb +2 -0
  84. data/app/models/spree/product_scope/scopes.rb +22 -22
  85. data/app/models/spree/promotion/actions/create_adjustment.rb +3 -4
  86. data/app/models/spree/promotion/actions/create_item_adjustments.rb +8 -8
  87. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +3 -3
  88. data/app/models/spree/promotion/actions/free_shipping.rb +4 -4
  89. data/app/models/spree/promotion/rules/first_order.rb +7 -6
  90. data/app/models/spree/promotion/rules/first_repeat_purchase_since.rb +2 -3
  91. data/app/models/spree/promotion/rules/item_total.rb +5 -2
  92. data/app/models/spree/promotion/rules/nth_order.rb +3 -4
  93. data/app/models/spree/promotion/rules/one_use_per_user.rb +1 -2
  94. data/app/models/spree/promotion/rules/option_value.rb +1 -2
  95. data/app/models/spree/promotion/rules/product.rb +4 -4
  96. data/app/models/spree/promotion/rules/taxon.rb +5 -5
  97. data/app/models/spree/promotion/rules/user.rb +1 -1
  98. data/app/models/spree/promotion/rules/user_logged_in.rb +1 -1
  99. data/app/models/spree/promotion.rb +8 -8
  100. data/app/models/spree/promotion_action.rb +1 -1
  101. data/app/models/spree/promotion_builder.rb +2 -2
  102. data/app/models/spree/promotion_chooser.rb +1 -0
  103. data/app/models/spree/promotion_code/code_builder.rb +3 -3
  104. data/app/models/spree/promotion_handler/cart.rb +17 -16
  105. data/app/models/spree/promotion_handler/coupon.rb +10 -14
  106. data/app/models/spree/promotion_handler/page.rb +4 -4
  107. data/app/models/spree/promotion_rule.rb +4 -3
  108. data/app/models/spree/prototype.rb +0 -1
  109. data/app/models/spree/refund.rb +3 -3
  110. data/app/models/spree/reimbursement/reimbursement_type_engine.rb +1 -3
  111. data/app/models/spree/reimbursement.rb +3 -5
  112. data/app/models/spree/reimbursement_performer.rb +0 -5
  113. data/app/models/spree/reimbursement_tax_calculator.rb +2 -7
  114. data/app/models/spree/reimbursement_type/credit.rb +1 -1
  115. data/app/models/spree/reimbursement_type/original_payment.rb +1 -1
  116. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +3 -3
  117. data/app/models/spree/reimbursement_type/store_credit.rb +1 -1
  118. data/app/models/spree/reimbursement_type.rb +1 -1
  119. data/app/models/spree/return_authorization.rb +38 -37
  120. data/app/models/spree/return_item/eligibility_validator/default.rb +4 -4
  121. data/app/models/spree/return_item/eligibility_validator/no_reimbursements.rb +0 -1
  122. data/app/models/spree/return_item/eligibility_validator/rma_required.rb +0 -1
  123. data/app/models/spree/return_item.rb +24 -23
  124. data/app/models/spree/returns_calculator.rb +1 -2
  125. data/app/models/spree/shipment.rb +80 -74
  126. data/app/models/spree/shipping_calculator.rb +4 -5
  127. data/app/models/spree/shipping_manifest.rb +3 -4
  128. data/app/models/spree/shipping_method.rb +54 -23
  129. data/app/models/spree/shipping_method_stock_location.rb +4 -0
  130. data/app/models/spree/shipping_rate.rb +24 -29
  131. data/app/models/spree/shipping_rate_tax.rb +41 -0
  132. data/app/models/spree/state.rb +1 -1
  133. data/app/models/spree/state_change.rb +1 -1
  134. data/app/models/spree/stock/availability_validator.rb +2 -2
  135. data/app/models/spree/stock/coordinator.rb +12 -13
  136. data/app/models/spree/stock/differentiator.rb +1 -0
  137. data/app/models/spree/stock/estimator.rb +18 -25
  138. data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
  139. data/app/models/spree/stock/package.rb +19 -9
  140. data/app/models/spree/stock/packer.rb +2 -3
  141. data/app/models/spree/stock/prioritizer.rb +3 -2
  142. data/app/models/spree/stock/quantifier.rb +2 -3
  143. data/app/models/spree/stock/shipping_rate_selector.rb +0 -1
  144. data/app/models/spree/stock/shipping_rate_sorter.rb +0 -1
  145. data/app/models/spree/stock/splitter/backordered.rb +0 -2
  146. data/app/models/spree/stock/splitter/base.rb +3 -2
  147. data/app/models/spree/stock/splitter/shipping_category.rb +2 -1
  148. data/app/models/spree/stock/splitter/weight.rb +2 -2
  149. data/app/models/spree/stock_item.rb +36 -37
  150. data/app/models/spree/stock_location.rb +17 -13
  151. data/app/models/spree/stock_movement.rb +1 -3
  152. data/app/models/spree/stock_transfer.rb +8 -8
  153. data/app/models/spree/store.rb +6 -0
  154. data/app/models/spree/store_credit.rb +24 -24
  155. data/app/models/spree/store_credit_category.rb +1 -2
  156. data/app/models/spree/tax/item_adjuster.rb +37 -0
  157. data/app/models/spree/tax/order_adjuster.rb +38 -0
  158. data/app/models/spree/tax/shipping_rate_taxer.rb +31 -0
  159. data/app/models/spree/tax/tax_helpers.rb +49 -0
  160. data/app/models/spree/tax/tax_location.rb +33 -0
  161. data/app/models/spree/tax_category.rb +1 -1
  162. data/app/models/spree/tax_rate.rb +46 -111
  163. data/app/models/spree/taxon.rb +36 -12
  164. data/app/models/spree/taxonomy.rb +10 -10
  165. data/app/models/spree/validations/db_maximum_length_validator.rb +0 -1
  166. data/app/models/spree/variant/pricer.rb +19 -0
  167. data/app/models/spree/variant/pricing_options.rb +31 -0
  168. data/app/models/spree/variant/scopes.rb +9 -9
  169. data/app/models/spree/variant.rb +95 -89
  170. data/app/models/spree/variant_property_rule.rb +1 -1
  171. data/app/models/spree/variant_property_rule_value.rb +2 -0
  172. data/app/models/spree/zone.rb +60 -24
  173. data/config/initializers/friendly_id.rb +1 -1
  174. data/config/locales/en.yml +337 -51
  175. data/config/routes.rb +1 -1
  176. data/db/default/spree/countries.rb +9 -15
  177. data/db/default/spree/roles.rb +1 -2
  178. data/db/default/spree/states.rb +7 -11
  179. data/db/default/spree/store_credit.rb +2 -2
  180. data/db/default/spree/stores.rb +2 -1
  181. data/db/migrate/20120831092320_spree_one_two.rb +100 -101
  182. data/db/migrate/20120831092359_spree_promo_one_two.rb +12 -12
  183. data/db/migrate/20120905151823_add_toggle_tax_rate_display.rb +1 -1
  184. data/db/migrate/20121009142519_add_lock_version_to_variant.rb +1 -1
  185. data/db/migrate/20121010142909_add_states_required_to_countries.rb +1 -1
  186. data/db/migrate/20121012071449_add_on_demand_to_product_and_variant.rb +2 -2
  187. data/db/migrate/20121017010007_remove_not_null_constraint_from_products_on_hand.rb +4 -4
  188. data/db/migrate/20121031162139_split_prices_from_variants.rb +8 -8
  189. data/db/migrate/20121107003422_remove_not_null_from_spree_prices_amount.rb +2 -2
  190. data/db/migrate/20121109173623_add_cost_currency_to_variants.rb +1 -1
  191. data/db/migrate/20121124203911_add_position_to_taxonomies.rb +1 -1
  192. data/db/migrate/20130120201805_add_position_to_product_properties.spree.rb +1 -2
  193. data/db/migrate/20130211190146_create_spree_stock_items.rb +1 -1
  194. data/db/migrate/20130213191427_create_default_stock.rb +12 -21
  195. data/db/migrate/20130226032817_change_meta_description_on_spree_products_to_text.rb +1 -1
  196. data/db/migrate/20130227143905_add_pending_to_inventory_unit.rb +2 -2
  197. data/db/migrate/20130228210442_create_shipping_method_zone.rb +1 -1
  198. data/db/migrate/20130301162924_create_shipping_method_categories.rb +2 -2
  199. data/db/migrate/20130304162240_create_spree_shipping_rates.rb +4 -4
  200. data/db/migrate/20130306181701_add_address_fields_to_stock_location.rb +2 -3
  201. data/db/migrate/20130306191917_add_active_field_to_stock_locations.rb +1 -1
  202. data/db/migrate/20130306195650_add_backorderable_to_stock_item.rb +1 -1
  203. data/db/migrate/20130307161754_add_default_quantity_to_stock_movement.rb +1 -1
  204. data/db/migrate/20130319062004_change_orders_total_precision.rb +4 -4
  205. data/db/migrate/20130319063911_change_spree_payments_amount_precision.rb +1 -3
  206. data/db/migrate/20130319064308_change_spree_return_authorization_amount_precision.rb +2 -4
  207. data/db/migrate/20130319082943_change_adjustments_amount_precision.rb +1 -3
  208. data/db/migrate/20130319190507_drop_source_and_destination_from_stock_movement.rb +2 -2
  209. data/db/migrate/20130325163316_migrate_inventory_unit_sold_to_on_hand.rb +2 -2
  210. data/db/migrate/20130417120035_update_adjustment_states.rb +2 -2
  211. data/db/migrate/20130417123427_add_shipping_rates_to_shipments.rb +3 -3
  212. data/db/migrate/20130628021056_add_unique_index_to_permalink_on_spree_products.rb +1 -1
  213. data/db/migrate/20130628022817_add_unique_index_to_orders_shipments_and_stock_transfers.rb +3 -3
  214. data/db/migrate/20130718042445_add_cost_price_to_line_item.rb +1 -1
  215. data/db/migrate/20130718233855_set_backorderable_to_default_to_false.rb +2 -2
  216. data/db/migrate/20130807024301_upgrade_adjustments.rb +3 -3
  217. data/db/migrate/20130813004002_add_shipment_total_to_spree_orders.rb +1 -1
  218. data/db/migrate/20130813140619_expand_order_number_size.rb +2 -2
  219. data/db/migrate/20130815000406_add_adjustment_total_to_line_items.rb +1 -1
  220. data/db/migrate/20130815024413_add_adjustment_total_to_shipments.rb +1 -1
  221. data/db/migrate/20130826062534_add_depth_to_spree_taxons.rb +1 -1
  222. data/db/migrate/20130830001033_add_shipping_category_to_shipping_methods_and_products.rb +1 -1
  223. data/db/migrate/20130830001159_migrate_old_shipping_calculators.rb +1 -1
  224. data/db/migrate/20131001013410_remove_unused_credit_card_fields.rb +1 -0
  225. data/db/migrate/20131026154747_add_track_inventory_to_variant.rb +1 -1
  226. data/db/migrate/20131118043959_add_included_to_adjustments.rb +1 -1
  227. data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +0 -1
  228. data/db/migrate/20131211112807_create_spree_orders_promotions.rb +1 -1
  229. data/db/migrate/20131218054603_add_item_count_to_spree_orders.rb +1 -1
  230. data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +1 -0
  231. data/db/migrate/20140219060952_add_considered_risky_to_orders.rb +1 -1
  232. data/db/migrate/20140309023735_migrate_old_preferences.rb +4 -3
  233. data/db/migrate/20140309033438_create_store_from_preferences.rb +2 -2
  234. data/db/migrate/20140410141842_add_many_missing_indexes.rb +13 -15
  235. data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +38 -40
  236. data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +4 -4
  237. data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +1 -1
  238. data/db/migrate/20140710041921_recreate_spree_return_authorizations.rb +0 -1
  239. data/db/migrate/20140718195325_create_friendly_id_slugs.rb +4 -4
  240. data/db/migrate/20140723214541_copy_product_slugs_to_slug_history.rb +4 -6
  241. data/db/migrate/20140805171219_make_existing_credit_cards_default.rb +1 -0
  242. data/db/migrate/20141217215630_update_product_slug_index.rb +2 -4
  243. data/db/migrate/20150112194216_add_position_to_stock_location.rb +2 -2
  244. data/db/migrate/20150225205344_move_promotion_code_to_promotion_code_value.rb +0 -1
  245. data/db/migrate/20150313201503_copy_shipped_shipments_to_cartons.rb +0 -1
  246. data/db/migrate/20150506181611_create_spree_store_credit_payment_method.rb +3 -3
  247. data/db/migrate/20150515211137_fix_adjustment_order_id.rb +0 -1
  248. data/db/migrate/20150612205731_remove_spree_configurations.rb +2 -2
  249. data/db/migrate/20150619160613_create_adjustment_reason.rb +1 -1
  250. data/db/migrate/20150723224133_remove_unnecessary_indexes.rb +10 -2
  251. data/db/migrate/20150731201146_add_spree_user_addresses.rb +0 -1
  252. data/db/migrate/20150811211025_add_finalized_to_spree_adjustments.rb +1 -1
  253. data/db/migrate/20151001121454_create_spree_shipping_method_stock_locations.rb +13 -0
  254. data/db/migrate/20151002023248_add_foreign_key_to_shipping_method_stock_location.rb +6 -0
  255. data/db/migrate/20151026093607_change_return_item_pre_tax_amount_to_amount.rb +29 -0
  256. data/db/migrate/20160111091912_add_column_available_to_all_on_spree_shipping_method.rb +5 -0
  257. data/db/migrate/20160116133604_add_position_to_spree_payment_methods.rb +5 -0
  258. data/db/migrate/20160122182105_add_carrier_and_service_level_to_spree_shipping_methods.rb +6 -0
  259. data/db/migrate/20160224201413_create_spree_shipping_rate_taxes.rb +11 -0
  260. data/db/migrate/20160229133259_add_cart_tax_country_iso_to_spree_store.rb +5 -0
  261. data/db/migrate/20160301103333_remove_pre_tax_amount_on_line_item_and_shipment.rb +6 -0
  262. data/db/migrate/20160308000300_disallow_adjustment_finalized_nulls.rb +19 -0
  263. data/db/migrate/20160318145302_add_timestamps_to_prices.rb +5 -0
  264. data/db/migrate/20160330204846_add_missing_timestamp_columns.rb +20 -0
  265. data/lib/generators/spree/custom_user/custom_user_generator.rb +3 -8
  266. data/lib/generators/spree/dummy/dummy_generator.rb +17 -19
  267. data/lib/generators/spree/install/install_generator.rb +15 -15
  268. data/lib/generators/spree/install/templates/config/initializers/spree.rb +1 -0
  269. data/lib/spree/core/controller_helpers/auth.rb +2 -4
  270. data/lib/spree/core/controller_helpers/common.rb +42 -43
  271. data/lib/spree/core/controller_helpers/order.rb +5 -9
  272. data/lib/spree/core/controller_helpers/payment_parameters.rb +4 -5
  273. data/lib/spree/core/controller_helpers/pricing.rb +27 -0
  274. data/lib/spree/core/controller_helpers/respond_with.rb +4 -4
  275. data/lib/spree/core/controller_helpers/search.rb +2 -2
  276. data/lib/spree/core/controller_helpers/store.rb +3 -3
  277. data/lib/spree/core/controller_helpers/strong_parameters.rb +4 -4
  278. data/lib/spree/core/current_store.rb +1 -1
  279. data/lib/spree/core/delegate_belongs_to.rb +19 -21
  280. data/lib/spree/core/engine.rb +12 -8
  281. data/lib/spree/core/environment/calculators.rb +0 -1
  282. data/lib/spree/core/environment_extension.rb +4 -4
  283. data/lib/spree/core/importer/order.rb +17 -22
  284. data/lib/spree/core/importer/product.rb +10 -9
  285. data/lib/spree/core/permalinks.rb +16 -16
  286. data/lib/spree/core/product_duplicator.rb +2 -3
  287. data/lib/spree/core/product_filters.rb +15 -16
  288. data/lib/spree/core/role_configuration.rb +2 -2
  289. data/lib/spree/core/search/base.rb +71 -57
  290. data/lib/spree/core/search/variant.rb +2 -4
  291. data/lib/spree/core/unreturned_item_charger.rb +1 -2
  292. data/lib/spree/core/validators/email.rb +2 -2
  293. data/lib/spree/core/version.rb +1 -1
  294. data/lib/spree/core.rb +2 -4
  295. data/lib/spree/i18n.rb +1 -1
  296. data/lib/spree/localized_number.rb +3 -1
  297. data/lib/spree/migrations.rb +27 -26
  298. data/lib/spree/money.rb +19 -4
  299. data/lib/spree/permission_sets/base.rb +1 -1
  300. data/lib/spree/permitted_attributes.rb +7 -7
  301. data/lib/spree/responder.rb +4 -5
  302. data/lib/spree/testing_support/authorization_helpers.rb +1 -1
  303. data/lib/spree/testing_support/caching.rb +8 -8
  304. data/lib/spree/testing_support/capybara_ext.rb +11 -13
  305. data/lib/spree/testing_support/common_rake.rb +4 -4
  306. data/lib/spree/testing_support/controller_requests.rb +1 -1
  307. data/lib/spree/testing_support/extension_rake.rb +1 -2
  308. data/lib/spree/testing_support/factories/address_factory.rb +14 -3
  309. data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +1 -1
  310. data/lib/spree/testing_support/factories/carton_factory.rb +2 -2
  311. data/lib/spree/testing_support/factories/credit_card_factory.rb +4 -0
  312. data/lib/spree/testing_support/factories/customer_return_factory.rb +4 -6
  313. data/lib/spree/testing_support/factories/line_item_factory.rb +1 -1
  314. data/lib/spree/testing_support/factories/order_factory.rb +10 -11
  315. data/lib/spree/testing_support/factories/payment_factory.rb +5 -0
  316. data/lib/spree/testing_support/factories/promotion_category_factory.rb +0 -1
  317. data/lib/spree/testing_support/factories/promotion_factory.rb +0 -1
  318. data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
  319. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  320. data/lib/spree/testing_support/factories/return_item_factory.rb +1 -1
  321. data/lib/spree/testing_support/factories/shipping_method_factory.rb +5 -2
  322. data/lib/spree/testing_support/factories/state_factory.rb +17 -7
  323. data/lib/spree/testing_support/factories/stock_location_factory.rb +4 -4
  324. data/lib/spree/testing_support/factories/stock_transfer_factory.rb +1 -1
  325. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +0 -1
  326. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +0 -2
  327. data/lib/spree/testing_support/factories/tax_category_factory.rb +2 -2
  328. data/lib/spree/testing_support/factories/user_factory.rb +1 -1
  329. data/lib/spree/testing_support/factories/variant_factory.rb +1 -2
  330. data/lib/spree/testing_support/factories/zone_factory.rb +2 -1
  331. data/lib/spree/testing_support/i18n.rb +4 -5
  332. data/lib/spree/testing_support/order_walkthrough.rb +8 -9
  333. data/lib/spree/testing_support/preferences.rb +1 -1
  334. data/lib/spree/testing_support/sequences.rb +5 -4
  335. data/lib/tasks/core.rake +15 -19
  336. data/lib/tasks/email.rake +3 -3
  337. data/lib/tasks/exchanges.rake +12 -14
  338. data/lib/tasks/migrations/assure_store_on_orders.rake +38 -0
  339. data/lib/tasks/migrations/copy_order_bill_address_to_credit_card.rake +2 -2
  340. data/lib/tasks/migrations/copy_shipped_shipments_to_cartons.rake +1 -11
  341. data/lib/tasks/migrations/migrate_shipping_rate_taxes.rake +17 -0
  342. data/lib/tasks/migrations/migrate_user_addresses.rake +1 -1
  343. data/lib/tasks/order_capturing.rake +1 -1
  344. data/lib/tasks/upgrade.rake +11 -0
  345. data/script/rails +0 -1
  346. data/solidus_core.gemspec +6 -8
  347. data/spec/helpers/base_helper_spec.rb +15 -18
  348. data/spec/helpers/order_helper_spec.rb +2 -2
  349. data/spec/helpers/products_helper_spec.rb +43 -51
  350. data/spec/helpers/taxons_helper_spec.rb +1 -1
  351. data/spec/lib/i18n_spec.rb +11 -11
  352. data/spec/lib/search/base_spec.rb +12 -14
  353. data/spec/lib/search/variant_spec.rb +1 -0
  354. data/spec/lib/spree/core/controller_helpers/order_spec.rb +1 -7
  355. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +26 -28
  356. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +63 -0
  357. data/spec/lib/spree/core/controller_helpers/search_spec.rb +4 -2
  358. data/spec/lib/spree/core/delegate_belongs_to_spec.rb +1 -1
  359. data/spec/lib/spree/core/importer/order_spec.rb +95 -90
  360. data/spec/lib/spree/core/role_configuration_spec.rb +16 -16
  361. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +35 -0
  362. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +10 -1
  363. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -1
  364. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +6 -1
  365. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +37 -1
  366. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +2 -2
  367. data/spec/lib/spree/core/testing_support/factories/stock_packer_factory_spec.rb +1 -1
  368. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +1 -2
  369. data/spec/lib/spree/core/testing_support/preferences_spec.rb +26 -0
  370. data/spec/lib/spree/core/unreturned_item_charger_spec.rb +7 -9
  371. data/spec/lib/spree/core/validators/email_spec.rb +8 -6
  372. data/spec/lib/spree/localized_number_spec.rb +1 -3
  373. data/spec/lib/spree/migrations_spec.rb +2 -2
  374. data/spec/lib/spree/money_spec.rb +75 -6
  375. data/spec/lib/tasks/exchanges_spec.rb +2 -12
  376. data/spec/lib/tasks/migrations/copy_shipped_shipments_to_cartons_spec.rb +0 -1
  377. data/spec/lib/tasks/order_capturing_spec.rb +1 -1
  378. data/spec/mailers/carton_mailer_spec.rb +3 -3
  379. data/spec/mailers/order_mailer_spec.rb +9 -11
  380. data/spec/mailers/reimbursement_mailer_spec.rb +2 -2
  381. data/spec/mailers/test_mailer_spec.rb +1 -1
  382. data/spec/models/spree/ability_spec.rb +4 -7
  383. data/spec/models/spree/address_spec.rb +32 -35
  384. data/spec/models/spree/adjustment_reason_spec.rb +0 -2
  385. data/spec/models/spree/adjustment_spec.rb +2 -2
  386. data/spec/models/spree/app_configuration_spec.rb +33 -3
  387. data/spec/models/spree/asset_spec.rb +1 -2
  388. data/spec/models/spree/calculator/default_tax_spec.rb +141 -52
  389. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +1 -1
  390. data/spec/models/spree/calculator/flexi_rate_spec.rb +6 -6
  391. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +1 -1
  392. data/spec/models/spree/calculator/price_sack_spec.rb +2 -2
  393. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +9 -11
  394. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +4 -4
  395. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +2 -2
  396. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +6 -7
  397. data/spec/models/spree/calculator/shipping/per_item_spec.rb +2 -2
  398. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +2 -2
  399. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +1 -2
  400. data/spec/models/spree/calculator/tiered_percent_spec.rb +1 -1
  401. data/spec/models/spree/calculator_spec.rb +3 -8
  402. data/spec/models/spree/carton_spec.rb +1 -1
  403. data/spec/models/spree/classification_spec.rb +1 -1
  404. data/spec/models/spree/concerns/display_money_spec.rb +0 -1
  405. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +26 -1
  406. data/spec/models/spree/concerns/user_address_book_spec.rb +19 -12
  407. data/spec/models/spree/concerns/user_methods_spec.rb +1 -1
  408. data/spec/models/spree/country_spec.rb +52 -0
  409. data/spec/models/spree/credit_card_spec.rb +17 -12
  410. data/spec/models/spree/customer_return_spec.rb +27 -23
  411. data/spec/models/spree/exchange_spec.rb +2 -7
  412. data/spec/models/spree/gateway/bogus_simple.rb +2 -4
  413. data/spec/models/spree/gateway/bogus_spec.rb +4 -2
  414. data/spec/models/spree/gateway_spec.rb +8 -3
  415. data/spec/models/spree/inventory_unit_spec.rb +13 -14
  416. data/spec/models/spree/item_adjustments_spec.rb +36 -40
  417. data/spec/models/spree/line_item_spec.rb +92 -48
  418. data/spec/models/spree/option_type_spec.rb +1 -1
  419. data/spec/models/spree/option_value_spec.rb +1 -1
  420. data/spec/models/spree/order/address_spec.rb +1 -1
  421. data/spec/models/spree/order/callbacks_spec.rb +3 -3
  422. data/spec/models/spree/order/checkout_spec.rb +55 -48
  423. data/spec/models/spree/order/finalizing_spec.rb +8 -9
  424. data/spec/models/spree/order/payment_spec.rb +20 -20
  425. data/spec/models/spree/order/risk_assessment_spec.rb +1 -1
  426. data/spec/models/spree/order/state_machine_spec.rb +40 -131
  427. data/spec/models/spree/order/tax_spec.rb +11 -12
  428. data/spec/models/spree/order/totals_spec.rb +3 -3
  429. data/spec/models/spree/order/updating_spec.rb +2 -2
  430. data/spec/models/spree/order/validations_spec.rb +2 -2
  431. data/spec/models/spree/order_cancellations_spec.rb +1 -1
  432. data/spec/models/spree/order_capturing_spec.rb +1 -1
  433. data/spec/models/spree/order_contents_spec.rb +10 -11
  434. data/spec/models/spree/order_inventory_spec.rb +11 -11
  435. data/spec/models/spree/order_merger_spec.rb +1 -0
  436. data/spec/models/spree/order_shipping_spec.rb +8 -10
  437. data/spec/models/spree/order_spec.rb +137 -124
  438. data/spec/models/spree/order_stock_location_spec.rb +2 -2
  439. data/spec/models/spree/order_update_attributes_spec.rb +6 -10
  440. data/spec/models/spree/order_updater_spec.rb +4 -8
  441. data/spec/models/spree/payment_create_spec.rb +11 -12
  442. data/spec/models/spree/payment_method/store_credit_spec.rb +10 -6
  443. data/spec/models/spree/payment_method_spec.rb +4 -5
  444. data/spec/models/spree/payment_spec.rb +61 -69
  445. data/spec/models/spree/permission_sets/base_spec.rb +1 -1
  446. data/spec/models/spree/permission_sets/configuration_display.rb +0 -1
  447. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -1
  448. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -1
  449. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -1
  450. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -1
  451. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -1
  452. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -1
  453. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -1
  454. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -1
  455. data/spec/models/spree/permission_sets/report_display_spec.rb +0 -1
  456. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -1
  457. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -1
  458. data/spec/models/spree/permission_sets/restricted_stock_transfer_display_spec.rb +0 -1
  459. data/spec/models/spree/permission_sets/restricted_stock_transfer_management_spec.rb +6 -6
  460. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -1
  461. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -1
  462. data/spec/models/spree/permission_sets/stock_transfer_display_spec.rb +0 -1
  463. data/spec/models/spree/permission_sets/stock_transfer_management_spec.rb +0 -2
  464. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -1
  465. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -1
  466. data/spec/models/spree/preference_spec.rb +1 -4
  467. data/spec/models/spree/preferences/configuration_spec.rb +2 -7
  468. data/spec/models/spree/preferences/preferable_spec.rb +13 -24
  469. data/spec/models/spree/preferences/scoped_store_spec.rb +1 -1
  470. data/spec/models/spree/preferences/static_model_preferences_spec.rb +5 -6
  471. data/spec/models/spree/preferences/statically_configurable_spec.rb +2 -6
  472. data/spec/models/spree/preferences/store_spec.rb +2 -3
  473. data/spec/models/spree/price_spec.rb +6 -6
  474. data/spec/models/spree/product/scopes_spec.rb +20 -20
  475. data/spec/models/spree/product_duplicator_spec.rb +16 -29
  476. data/spec/models/spree/product_filter_spec.rb +2 -2
  477. data/spec/models/spree/product_spec.rb +53 -20
  478. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +10 -12
  479. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +4 -4
  480. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +9 -9
  481. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +1 -1
  482. data/spec/models/spree/promotion/rules/first_order_spec.rb +10 -10
  483. data/spec/models/spree/promotion/rules/item_total_spec.rb +63 -19
  484. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +1 -1
  485. data/spec/models/spree/promotion/rules/product_spec.rb +8 -8
  486. data/spec/models/spree/promotion/rules/taxon_spec.rb +4 -4
  487. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +3 -4
  488. data/spec/models/spree/promotion/rules/user_spec.rb +7 -7
  489. data/spec/models/spree/promotion_builder_spec.rb +10 -8
  490. data/spec/models/spree/promotion_category_spec.rb +1 -1
  491. data/spec/models/spree/promotion_code/code_builder_spec.rb +1 -3
  492. data/spec/models/spree/promotion_code_spec.rb +8 -7
  493. data/spec/models/spree/promotion_handler/cart_spec.rb +1 -1
  494. data/spec/models/spree/promotion_handler/coupon_spec.rb +28 -28
  495. data/spec/models/spree/promotion_handler/page_spec.rb +6 -7
  496. data/spec/models/spree/promotion_rule_spec.rb +1 -2
  497. data/spec/models/spree/promotion_spec.rb +25 -21
  498. data/spec/models/spree/refund_spec.rb +8 -11
  499. data/spec/models/spree/reimbursement/credit_spec.rb +2 -2
  500. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +6 -4
  501. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +1 -1
  502. data/spec/models/spree/reimbursement_performer_spec.rb +2 -2
  503. data/spec/models/spree/reimbursement_spec.rb +9 -11
  504. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +4 -5
  505. data/spec/models/spree/reimbursement_type/credit_spec.rb +2 -2
  506. data/spec/models/spree/reimbursement_type/exchange_spec.rb +2 -3
  507. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +4 -4
  508. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +1 -1
  509. data/spec/models/spree/return_authorization_spec.rb +18 -21
  510. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +7 -7
  511. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -1
  512. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -1
  513. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +1 -1
  514. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +1 -1
  515. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +1 -2
  516. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +3 -5
  517. data/spec/models/spree/return_item_spec.rb +29 -31
  518. data/spec/models/spree/returns_calculator_spec.rb +1 -1
  519. data/spec/models/spree/shipment_spec.rb +59 -43
  520. data/spec/models/spree/shipping_calculator_spec.rb +3 -3
  521. data/spec/models/spree/shipping_manifest_spec.rb +8 -7
  522. data/spec/models/spree/shipping_method_spec.rb +149 -24
  523. data/spec/models/spree/shipping_rate_spec.rb +116 -76
  524. data/spec/models/spree/shipping_rate_tax_spec.rb +83 -0
  525. data/spec/models/spree/state_spec.rb +2 -2
  526. data/spec/models/spree/stock/availability_validator_spec.rb +4 -4
  527. data/spec/models/spree/stock/coordinator_spec.rb +33 -49
  528. data/spec/models/spree/stock/differentiator_spec.rb +1 -1
  529. data/spec/models/spree/stock/estimator_spec.rb +83 -54
  530. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +1 -3
  531. data/spec/models/spree/stock/package_spec.rb +27 -10
  532. data/spec/models/spree/stock/packer_spec.rb +4 -4
  533. data/spec/models/spree/stock/prioritizer_spec.rb +1 -1
  534. data/spec/models/spree/stock/quantifier_spec.rb +2 -6
  535. data/spec/models/spree/stock/splitter/backordered_spec.rb +1 -1
  536. data/spec/models/spree/stock/splitter/base_spec.rb +1 -2
  537. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +1 -3
  538. data/spec/models/spree/stock/splitter/weight_spec.rb +3 -3
  539. data/spec/models/spree/stock_item_spec.rb +16 -16
  540. data/spec/models/spree/stock_location_spec.rb +6 -8
  541. data/spec/models/spree/stock_movement_spec.rb +1 -1
  542. data/spec/models/spree/stock_transfer_spec.rb +1 -3
  543. data/spec/models/spree/store_credit_category_spec.rb +1 -1
  544. data/spec/models/spree/store_credit_event_spec.rb +3 -5
  545. data/spec/models/spree/store_credit_spec.rb +24 -23
  546. data/spec/models/spree/store_spec.rb +21 -2
  547. data/spec/models/spree/tax/item_adjuster_spec.rb +74 -0
  548. data/spec/models/spree/tax/order_adjuster_spec.rb +49 -0
  549. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +50 -0
  550. data/spec/models/spree/tax/tax_location_spec.rb +68 -0
  551. data/spec/models/spree/tax/taxation_integration_spec.rb +787 -0
  552. data/spec/models/spree/tax_category_spec.rb +2 -2
  553. data/spec/models/spree/tax_rate_spec.rb +185 -536
  554. data/spec/models/spree/taxon_spec.rb +69 -5
  555. data/spec/models/spree/taxonomy_spec.rb +2 -3
  556. data/spec/models/spree/tracker_spec.rb +1 -1
  557. data/spec/models/spree/transfer_item_spec.rb +1 -1
  558. data/spec/models/spree/unit_cancel_spec.rb +9 -14
  559. data/spec/models/spree/user_spec.rb +19 -24
  560. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +1 -1
  561. data/spec/models/spree/variant/pricer_spec.rb +48 -0
  562. data/spec/models/spree/variant/pricing_options_spec.rb +106 -0
  563. data/spec/models/spree/variant/scopes_spec.rb +31 -8
  564. data/spec/models/spree/variant_property_rule_spec.rb +1 -1
  565. data/spec/models/spree/variant_spec.rb +166 -52
  566. data/spec/models/spree/zone_spec.rb +135 -10
  567. data/spec/support/big_decimal.rb +1 -1
  568. data/spec/support/concerns/working_factories.rb +2 -2
  569. data/spec/support/dummy_ability.rb +0 -1
  570. metadata +55 -44
  571. data/lib/generators/spree/dummy/templates/initializers/devise.rb +0 -3
  572. data/lib/spree/migration_helpers.rb +0 -19
  573. data/vendor/assets/stylesheets/skeleton.css +0 -242
@@ -1,17 +1,43 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  class FakeCalculator < Spree::Calculator
4
- def compute(computable)
4
+ def compute(_computable)
5
5
  5
6
6
  end
7
7
  end
8
8
 
9
- describe Spree::Order, :type => :model do
10
- let(:user) { stub_model(Spree::LegacyUser, :email => "spree@example.com") }
11
- let(:order) { stub_model(Spree::Order, :user => user) }
9
+ describe Spree::Order, type: :model do
10
+ let(:store) { build_stubbed(:store) }
11
+ let(:user) { stub_model(Spree::LegacyUser, email: "spree@example.com") }
12
+ let(:order) { stub_model(Spree::Order, user: user, store: store) }
12
13
 
13
14
  before do
14
- allow(Spree::LegacyUser).to receive_messages(:current => mock_model(Spree::LegacyUser, :id => 123))
15
+ allow(Spree::LegacyUser).to receive_messages(current: mock_model(Spree::LegacyUser, id: 123))
16
+ end
17
+
18
+ context '#store' do
19
+ it { is_expected.to respond_to(:store) }
20
+
21
+ context 'when there is no store assigned' do
22
+ subject { Spree::Order.new }
23
+
24
+ context 'when there is no default store' do
25
+ it "will not be valid" do
26
+ expect(subject).not_to be_valid
27
+ end
28
+ end
29
+
30
+ context "when there is a default store" do
31
+ let!(:store) { create(:store) }
32
+
33
+ it { is_expected.to be_valid }
34
+ end
35
+ end
36
+
37
+ context 'when a store is assigned' do
38
+ subject { Spree::Order.new(store: create(:store)) }
39
+ it { is_expected.to be_valid }
40
+ end
15
41
  end
16
42
 
17
43
  context "#canceled_by" do
@@ -46,6 +72,7 @@ describe Spree::Order, :type => :model do
46
72
  end
47
73
 
48
74
  context "#create" do
75
+ let!(:store) { create :store }
49
76
  let(:order) { Spree::Order.create }
50
77
 
51
78
  it "should assign an order number" do
@@ -72,9 +99,9 @@ describe Spree::Order, :type => :model do
72
99
  end
73
100
 
74
101
  context "insufficient_stock_lines" do
75
- let(:line_item) { mock_model Spree::LineItem, :insufficient_stock? => true }
102
+ let(:line_item) { mock_model Spree::LineItem, insufficient_stock?: true }
76
103
 
77
- before { allow(order).to receive_messages(:line_items => [line_item]) }
104
+ before { allow(order).to receive_messages(line_items: [line_item]) }
78
105
 
79
106
  it "should return line_item that has insufficient stock on hand" do
80
107
  expect(order.insufficient_stock_lines.size).to eq(1)
@@ -213,6 +240,7 @@ describe Spree::Order, :type => :model do
213
240
  def initialize(order)
214
241
  @order = order
215
242
  end
243
+
216
244
  def merge!(other_order, user = nil)
217
245
  [@order, other_order, user]
218
246
  end
@@ -220,10 +248,6 @@ describe Spree::Order, :type => :model do
220
248
  Spree::Config.order_merger_class = TestOrderMerger
221
249
  end
222
250
 
223
- after do
224
- Spree::Config.order_merger_class = Spree::PromotionChooser
225
- end
226
-
227
251
  let(:user) { build(:user) }
228
252
 
229
253
  it 'uses the configured order merger' do
@@ -257,6 +281,7 @@ describe Spree::Order, :type => :model do
257
281
  end
258
282
 
259
283
  context "ensure shipments will be updated" do
284
+ subject(:order) { create :order }
260
285
  before do
261
286
  Spree::Shipment.create!(order: order)
262
287
  end
@@ -296,7 +321,6 @@ describe Spree::Order, :type => :model do
296
321
  expect { shipment.reload }.not_to raise_error
297
322
  end
298
323
  end
299
-
300
324
  end
301
325
 
302
326
  context 'when the order is in address state' do
@@ -368,33 +392,61 @@ describe Spree::Order, :type => :model do
368
392
  }.not_to change { order.state }
369
393
  end
370
394
  end
371
-
372
395
  end
373
396
 
374
397
  describe "#tax_address" do
398
+ let(:order) { build(:order, ship_address: ship_address, bill_address: bill_address, store: store) }
399
+ let(:store) { build(:store) }
400
+
375
401
  before { Spree::Config[:tax_using_ship_address] = tax_using_ship_address }
376
402
  subject { order.tax_address }
377
403
 
378
- context "when tax_using_ship_address is true" do
379
- let(:tax_using_ship_address) { true }
404
+ context "when the order has no addresses" do
405
+ let(:ship_address) { nil }
406
+ let(:bill_address) { nil }
407
+
408
+ context "when tax_using_ship_address is true" do
409
+ let(:tax_using_ship_address) { true }
380
410
 
381
- it 'returns ship_address' do
382
- expect(subject).to eq(order.ship_address)
411
+ it 'returns the stores default cart tax location' do
412
+ expect(subject).to eq(store.default_cart_tax_location)
413
+ end
414
+ end
415
+
416
+ context "when tax_using_ship_address is not true" do
417
+ let(:tax_using_ship_address) { false }
418
+
419
+ it 'returns the stores default cart tax location' do
420
+ expect(subject).to eq(store.default_cart_tax_location)
421
+ end
383
422
  end
384
423
  end
385
424
 
386
- context "when tax_using_ship_address is not true" do
387
- let(:tax_using_ship_address) { false }
425
+ context "when the order has addresses" do
426
+ let(:ship_address) { build(:address) }
427
+ let(:bill_address) { build(:address) }
428
+
429
+ context "when tax_using_ship_address is true" do
430
+ let(:tax_using_ship_address) { true }
431
+
432
+ it 'returns ship_address' do
433
+ expect(subject).to eq(order.ship_address)
434
+ end
435
+ end
436
+
437
+ context "when tax_using_ship_address is not true" do
438
+ let(:tax_using_ship_address) { false }
388
439
 
389
- it "returns bill_address" do
390
- expect(subject).to eq(order.bill_address)
440
+ it "returns bill_address" do
441
+ expect(subject).to eq(order.bill_address)
442
+ end
391
443
  end
392
444
  end
393
445
  end
394
446
 
395
447
  describe "#restart_checkout_flow" do
396
448
  context "when in cart state" do
397
- let(:order) { create(:order_with_totals, state: "cart") }
449
+ let(:order) { create(:order_with_totals, state: "cart") }
398
450
 
399
451
  it "remains in cart state" do
400
452
  expect { order.restart_checkout_flow }.not_to change { order.state }
@@ -403,13 +455,13 @@ describe Spree::Order, :type => :model do
403
455
  it "updates the state column to the first checkout_steps value" do
404
456
  order = create(:order_with_totals, state: "delivery")
405
457
  expect(order.checkout_steps).to eql ["address", "delivery", "confirm", "complete"]
406
- expect{ order.restart_checkout_flow }.to change{order.state}.from("delivery").to("address")
458
+ expect{ order.restart_checkout_flow }.to change{ order.state }.from("delivery").to("address")
407
459
  end
408
460
 
409
461
  context "without line items" do
410
462
  it "updates the state column to cart" do
411
463
  order = create(:order, state: "delivery")
412
- expect{ order.restart_checkout_flow }.to change{order.state}.from("delivery").to("cart")
464
+ expect{ order.restart_checkout_flow }.to change{ order.state }.from("delivery").to("cart")
413
465
  end
414
466
  end
415
467
  end
@@ -423,7 +475,7 @@ describe Spree::Order, :type => :model do
423
475
  order.payment_state = 'paid'
424
476
  expect(order.state_changes).to be_empty
425
477
  order.state_changed('payment')
426
- state_change = order.state_changes.find_by(:name => 'payment')
478
+ state_change = order.state_changes.find_by(name: 'payment')
427
479
  expect(state_change.previous_state).to eq('balance_due')
428
480
  expect(state_change.next_state).to eq('paid')
429
481
  end
@@ -440,38 +492,53 @@ describe Spree::Order, :type => :model do
440
492
  context "#available_payment_methods" do
441
493
  it "includes frontend payment methods" do
442
494
  payment_method = Spree::PaymentMethod.create!({
443
- :name => "Fake",
444
- :active => true,
445
- :display_on => "front_end",
495
+ name: "Fake",
496
+ active: true,
497
+ display_on: "front_end"
446
498
  })
447
499
  expect(order.available_payment_methods).to include(payment_method)
448
500
  end
449
501
 
450
502
  it "includes 'both' payment methods" do
451
503
  payment_method = Spree::PaymentMethod.create!({
452
- :name => "Fake",
453
- :active => true,
454
- :display_on => "both",
504
+ name: "Fake",
505
+ active: true,
506
+ display_on: "both"
455
507
  })
456
508
  expect(order.available_payment_methods).to include(payment_method)
457
509
  end
458
510
 
459
511
  it "does not include a payment method twice if display_on is blank" do
460
512
  payment_method = Spree::PaymentMethod.create!({
461
- :name => "Fake",
462
- :active => true,
463
- :display_on => "both",
513
+ name: "Fake",
514
+ active: true,
515
+ display_on: "both"
464
516
  })
465
517
  expect(order.available_payment_methods.count).to eq(1)
466
518
  expect(order.available_payment_methods).to include(payment_method)
467
519
  end
468
520
 
521
+ context "with more than one payment method" do
522
+ subject { order.available_payment_methods }
523
+
524
+ let!(:first_method) { FactoryGirl.create(:payment_method, display_on: :both) }
525
+ let!(:second_method) { FactoryGirl.create(:payment_method, display_on: :both) }
526
+
527
+ before do
528
+ second_method.move_to_top
529
+ end
530
+
531
+ it "respects the order of methods based on position" do
532
+ expect(subject).to eql([second_method, first_method])
533
+ end
534
+ end
535
+
469
536
  context 'when the order has a store' do
470
537
  let(:order) { create(:order) }
471
538
 
472
539
  let!(:store_with_payment_methods) do
473
540
  create(:store,
474
- payment_methods: [payment_method_with_store],
541
+ payment_methods: [payment_method_with_store]
475
542
  )
476
543
  end
477
544
  let!(:payment_method_with_store) { create(:payment_method) }
@@ -503,7 +570,7 @@ describe Spree::Order, :type => :model do
503
570
  context "#apply_free_shipping_promotions" do
504
571
  it "calls out to the FreeShipping promotion handler" do
505
572
  shipment = double('Shipment')
506
- allow(order).to receive_messages :shipments => [shipment]
573
+ allow(order).to receive_messages shipments: [shipment]
507
574
  expect(Spree::PromotionHandler::FreeShipping).to receive(:new).and_return(handler = double)
508
575
  expect(handler).to receive(:activate)
509
576
 
@@ -516,14 +583,13 @@ describe Spree::Order, :type => :model do
516
583
  end
517
584
  end
518
585
 
519
-
520
586
  context "#products" do
521
587
  before :each do
522
- @variant1 = mock_model(Spree::Variant, :product => "product1")
523
- @variant2 = mock_model(Spree::Variant, :product => "product2")
524
- @line_items = [mock_model(Spree::LineItem, :product => "product1", :variant => @variant1, :variant_id => @variant1.id, :quantity => 1),
525
- mock_model(Spree::LineItem, :product => "product2", :variant => @variant2, :variant_id => @variant2.id, :quantity => 2)]
526
- allow(order).to receive_messages(:line_items => @line_items)
588
+ @variant1 = mock_model(Spree::Variant, product: "product1")
589
+ @variant2 = mock_model(Spree::Variant, product: "product2")
590
+ @line_items = [mock_model(Spree::LineItem, product: "product1", variant: @variant1, variant_id: @variant1.id, quantity: 1),
591
+ mock_model(Spree::LineItem, product: "product2", variant: @variant2, variant_id: @variant2.id, quantity: 2)]
592
+ allow(order).to receive_messages(line_items: @line_items)
527
593
  end
528
594
 
529
595
  it "contains?" do
@@ -533,7 +599,7 @@ describe Spree::Order, :type => :model do
533
599
  it "gets the quantity of a given variant" do
534
600
  expect(order.quantity_of(@variant1)).to eq(1)
535
601
 
536
- @variant3 = mock_model(Spree::Variant, :product => "product3")
602
+ @variant3 = mock_model(Spree::Variant, product: "product3")
537
603
  expect(order.quantity_of(@variant3)).to eq(0)
538
604
  end
539
605
 
@@ -554,7 +620,7 @@ describe Spree::Order, :type => :model do
554
620
 
555
621
  it "matches line item when options match" do
556
622
  allow(order).to receive(:foos_match).and_return(true)
557
- expect(order.line_item_options_match(@line_items.first, {foos: {bar: :zoo}})).to be true
623
+ expect(order.line_item_options_match(@line_items.first, { foos: { bar: :zoo } })).to be true
558
624
  end
559
625
 
560
626
  it "does not match line item without options" do
@@ -661,27 +727,27 @@ describe Spree::Order, :type => :model do
661
727
  let(:order) { Spree::Order.create }
662
728
 
663
729
  it "should be true for order in the 'complete' state" do
664
- allow(order).to receive_messages(:complete? => true)
730
+ allow(order).to receive_messages(complete?: true)
665
731
  expect(order.can_ship?).to be true
666
732
  end
667
733
 
668
734
  it "should be true for order in the 'resumed' state" do
669
- allow(order).to receive_messages(:resumed? => true)
735
+ allow(order).to receive_messages(resumed?: true)
670
736
  expect(order.can_ship?).to be true
671
737
  end
672
738
 
673
739
  it "should be true for an order in the 'awaiting return' state" do
674
- allow(order).to receive_messages(:awaiting_return? => true)
740
+ allow(order).to receive_messages(awaiting_return?: true)
675
741
  expect(order.can_ship?).to be true
676
742
  end
677
743
 
678
744
  it "should be true for an order in the 'returned' state" do
679
- allow(order).to receive_messages(:returned? => true)
745
+ allow(order).to receive_messages(returned?: true)
680
746
  expect(order.can_ship?).to be true
681
747
  end
682
748
 
683
749
  it "should be false if the order is neither in the 'complete' nor 'resumed' state" do
684
- allow(order).to receive_messages(:resumed? => false, :complete? => false)
750
+ allow(order).to receive_messages(resumed?: false, complete?: false)
685
751
  expect(order.can_ship?).to be false
686
752
  end
687
753
  end
@@ -698,20 +764,20 @@ describe Spree::Order, :type => :model do
698
764
 
699
765
  context "#allow_checkout?" do
700
766
  it "should be true if there are line_items in the order" do
701
- allow(order).to receive_message_chain(:line_items, :count => 1)
767
+ allow(order).to receive_message_chain(:line_items, count: 1)
702
768
  expect(order.checkout_allowed?).to be true
703
769
  end
704
770
  it "should be false if there are no line_items in the order" do
705
- allow(order).to receive_message_chain(:line_items, :count => 0)
771
+ allow(order).to receive_message_chain(:line_items, count: 0)
706
772
  expect(order.checkout_allowed?).to be false
707
773
  end
708
774
  end
709
775
 
710
776
  context "#amount" do
711
777
  before do
712
- @order = create(:order, :user => user)
713
- @order.line_items = [create(:line_item, :price => 1.0, :quantity => 2),
714
- create(:line_item, :price => 1.0, :quantity => 1)]
778
+ @order = create(:order, user: user)
779
+ @order.line_items = [create(:line_item, price: 1.0, quantity: 2),
780
+ create(:line_item, price: 1.0, quantity: 1)]
715
781
  end
716
782
  it "should return the correct lum sum of items" do
717
783
  expect(@order.amount).to eq(3.0)
@@ -720,8 +786,8 @@ describe Spree::Order, :type => :model do
720
786
 
721
787
  context "#backordered?" do
722
788
  it 'is backordered if one of the shipments is backordered' do
723
- allow(order).to receive_messages(:shipments => [mock_model(Spree::Shipment, :backordered? => false),
724
- mock_model(Spree::Shipment, :backordered? => true)])
789
+ allow(order).to receive_messages(shipments: [mock_model(Spree::Shipment, backordered?: false),
790
+ mock_model(Spree::Shipment, backordered?: true)])
725
791
  expect(order).to be_backordered
726
792
  end
727
793
  end
@@ -744,7 +810,7 @@ describe Spree::Order, :type => :model do
744
810
 
745
811
  context "#tax_total" do
746
812
  it "adds included tax and additional tax" do
747
- allow(order).to receive_messages(:additional_tax_total => 10, :included_tax_total => 20)
813
+ allow(order).to receive_messages(additional_tax_total: 10, included_tax_total: 20)
748
814
 
749
815
  expect(order.tax_total).to eq 30
750
816
  end
@@ -762,10 +828,10 @@ describe Spree::Order, :type => :model do
762
828
  describe "#pre_tax_item_amount" do
763
829
  it "sums all of the line items' pre tax amounts" do
764
830
  subject.line_items = [
765
- Spree::LineItem.new(price: 10, quantity: 2, pre_tax_amount: 5.0),
766
- Spree::LineItem.new(price: 30, quantity: 1, pre_tax_amount: 14.0),
831
+ Spree::LineItem.new(price: 10, quantity: 2, included_tax_total: 15.0),
832
+ Spree::LineItem.new(price: 30, quantity: 1, included_tax_total: 16.0)
767
833
  ]
768
-
834
+ # (2*10)-15 + 30-16 = 5 + 14 = 19
769
835
  expect(subject.pre_tax_item_amount).to eq 19.0
770
836
  end
771
837
  end
@@ -820,13 +886,14 @@ describe Spree::Order, :type => :model do
820
886
 
821
887
  context 'a reimbursement related refund exists' do
822
888
  let(:order) { refund.payment.order }
823
- let(:refund) { create(:refund, reimbursement_id: 123, amount: 5, payment_amount: 14)}
889
+ let(:refund) { create(:refund, reimbursement_id: 123, amount: 5, payment_amount: 14) }
824
890
 
825
891
  it { is_expected.to eq false }
826
892
  end
827
893
  end
828
894
 
829
895
  describe "#create_proposed_shipments" do
896
+ subject(:order) { create(:order) }
830
897
  it "assigns the coordinator returned shipments to its shipments" do
831
898
  shipment = build(:shipment)
832
899
  allow_any_instance_of(Spree::Stock::Coordinator).to receive(:shipments).and_return([shipment])
@@ -976,7 +1043,6 @@ describe Spree::Order, :type => :model do
976
1043
  end
977
1044
 
978
1045
  it { expect(order.fully_discounted?).to eq true }
979
-
980
1046
  end
981
1047
 
982
1048
  context "the order had inventory-related cost" do
@@ -991,7 +1057,6 @@ describe Spree::Order, :type => :model do
991
1057
  end
992
1058
 
993
1059
  it { expect(order.fully_discounted?).to eq false }
994
-
995
1060
  end
996
1061
  end
997
1062
 
@@ -1005,7 +1070,7 @@ describe Spree::Order, :type => :model do
1005
1070
  subject { order }
1006
1071
 
1007
1072
  it "returns the sum of the payment amounts" do
1008
- expect(subject.total_applicable_store_credit).to eq (payment.amount + second_payment.amount)
1073
+ expect(subject.total_applicable_store_credit).to eq(payment.amount + second_payment.amount)
1009
1074
  end
1010
1075
  end
1011
1076
 
@@ -1140,8 +1205,8 @@ describe Spree::Order, :type => :model do
1140
1205
  end
1141
1206
 
1142
1207
  it "uses the primary store credit type over the secondary" do
1143
- primary_payment = order.payments.detect{|x| x.source == primary_store_credit }
1144
- secondary_payment = order.payments.detect{|x| x.source == secondary_store_credit }
1208
+ primary_payment = order.payments.detect{ |x| x.source == primary_store_credit }
1209
+ secondary_payment = order.payments.detect{ |x| x.source == secondary_store_credit }
1145
1210
 
1146
1211
  expect(order.payments.size).to eq 2
1147
1212
  expect(primary_payment.source).to eq primary_store_credit
@@ -1229,7 +1294,7 @@ describe Spree::Order, :type => :model do
1229
1294
  let(:applicable_store_credit) { 10.0 }
1230
1295
 
1231
1296
  it "deducts the applicable store credit" do
1232
- expect(subject.order_total_after_store_credit).to eq (order_total - applicable_store_credit)
1297
+ expect(subject.order_total_after_store_credit).to eq(order_total - applicable_store_credit)
1233
1298
  end
1234
1299
  end
1235
1300
 
@@ -1313,7 +1378,7 @@ describe Spree::Order, :type => :model do
1313
1378
  end
1314
1379
 
1315
1380
  it "returns a negative amount" do
1316
- expect(subject.display_total_applicable_store_credit.money.cents).to eq (total_applicable_store_credit * -100.0)
1381
+ expect(subject.display_total_applicable_store_credit.money.cents).to eq(total_applicable_store_credit * -100.0)
1317
1382
  end
1318
1383
  end
1319
1384
 
@@ -1329,7 +1394,7 @@ describe Spree::Order, :type => :model do
1329
1394
  end
1330
1395
 
1331
1396
  it "returns the order_total_after_store_credit amount" do
1332
- expect(subject.display_order_total_after_store_credit.money.cents).to eq (order_total_after_store_credit * 100.0)
1397
+ expect(subject.display_order_total_after_store_credit.money.cents).to eq(order_total_after_store_credit * 100.0)
1333
1398
  end
1334
1399
  end
1335
1400
 
@@ -1345,7 +1410,7 @@ describe Spree::Order, :type => :model do
1345
1410
  end
1346
1411
 
1347
1412
  it "returns the total_available_store_credit amount" do
1348
- expect(subject.display_total_available_store_credit.money.cents).to eq (total_available_store_credit * 100.0)
1413
+ expect(subject.display_total_available_store_credit.money.cents).to eq(total_available_store_credit * 100.0)
1349
1414
  end
1350
1415
  end
1351
1416
 
@@ -1366,7 +1431,7 @@ describe Spree::Order, :type => :model do
1366
1431
 
1367
1432
  it "returns all of the user's available store credit minus what's applied to the order amount" do
1368
1433
  amount_remaining = total_available_store_credit - total_applicable_store_credit
1369
- expect(subject.display_store_credit_remaining_after_capture.money.cents).to eq (amount_remaining * 100.0)
1434
+ expect(subject.display_store_credit_remaining_after_capture.money.cents).to eq(amount_remaining * 100.0)
1370
1435
  end
1371
1436
  end
1372
1437
 
@@ -1390,7 +1455,7 @@ describe Spree::Order, :type => :model do
1390
1455
  line_items_count: 1,
1391
1456
  # order will be $20 total:
1392
1457
  line_items_price: 10,
1393
- shipment_cost: 10,
1458
+ shipment_cost: 10
1394
1459
  )
1395
1460
  end
1396
1461
 
@@ -1411,56 +1476,4 @@ describe Spree::Order, :type => :model do
1411
1476
  end
1412
1477
  end
1413
1478
  end
1414
-
1415
- describe "#validate_payments_attributes" do
1416
- let(:attributes) { [ActionController::Parameters.new(payment_method_id: payment_method.id)] }
1417
- subject do
1418
- order.validate_payments_attributes(attributes)
1419
- end
1420
-
1421
- context "with empty array" do
1422
- let(:attributes) { [] }
1423
- it "doesn't error" do
1424
- subject
1425
- end
1426
- end
1427
-
1428
- context "with no payment method specified" do
1429
- let(:attributes) { [ActionController::Parameters.new({})] }
1430
- it "doesn't error" do
1431
- subject
1432
- end
1433
- end
1434
-
1435
- context "with valid payment method" do
1436
- let(:payment_method) { create(:check_payment_method) }
1437
- it "doesn't error" do
1438
- subject
1439
- end
1440
- end
1441
-
1442
- context "with inactive payment method" do
1443
- let(:payment_method) { create(:check_payment_method, active: false) }
1444
-
1445
- it "raises RecordNotFound" do
1446
- expect { subject }.to raise_error(ActiveRecord::RecordNotFound)
1447
- end
1448
- end
1449
-
1450
- context "with unavailable payment method" do
1451
- let(:payment_method) { create(:check_payment_method, display_on: "back_end") }
1452
-
1453
- it "raises RecordNotFound" do
1454
- expect { subject }.to raise_error(ActiveRecord::RecordNotFound)
1455
- end
1456
- end
1457
-
1458
- context "with soft-deleted payment method" do
1459
- let(:payment_method) { create(:check_payment_method, deleted_at: Time.current) }
1460
-
1461
- it "raises RecordNotFound" do
1462
- expect { subject }.to raise_error(ActiveRecord::RecordNotFound)
1463
- end
1464
- end
1465
- end
1466
1479
  end
@@ -13,6 +13,6 @@ module Spree
13
13
  subject
14
14
  expect(order_stock_location.reload.shipment_fulfilled).to eq(true)
15
15
  end
16
- end
16
+ end
17
17
  end
18
- end
18
+ end
@@ -3,7 +3,6 @@ require 'spec_helper'
3
3
  module Spree
4
4
  RSpec.describe OrderUpdateAttributes do
5
5
  let(:order) { create(:order) }
6
- let(:payment_method) { create(:payment_method) }
7
6
  let(:request_env) { nil }
8
7
  let(:update) { described_class.new(order, attributes, request_env: request_env) }
9
8
 
@@ -15,7 +14,7 @@ module Spree
15
14
  end
16
15
 
17
16
  context 'with coupon code' do
18
- let(:attributes){ {coupon_code: 'abc123'} }
17
+ let(:attributes){ { coupon_code: 'abc123' } }
19
18
  it "sets coupon code" do
20
19
  expect(update.apply).to be_truthy
21
20
  expect(order.coupon_code).to eq('abc123')
@@ -26,20 +25,17 @@ module Spree
26
25
  let(:attributes) do
27
26
  {
28
27
  payments_attributes: [
29
- {
30
- payment_method_id: payment_method.id,
31
- source_attributes: attributes_for(:credit_card)
32
- }
28
+ { source_attributes: attributes_for(:credit_card) }
33
29
  ]
34
30
  }
35
31
  end
36
32
 
37
33
  context 'with params and a request_env' do
38
- let(:request_env){ {'USER_AGENT' => 'Firefox'} }
34
+ let(:request_env){ { 'USER_AGENT' => 'Firefox' } }
39
35
  it 'sets the request_env on the payment' do
40
36
  expect(update.apply).to be_truthy
41
37
  expect(order.payments.length).to eq 1
42
- expect(order.payments[0].request_env).to eq({'USER_AGENT' => 'Firefox'})
38
+ expect(order.payments[0].request_env).to eq({ 'USER_AGENT' => 'Firefox' })
43
39
  end
44
40
  end
45
41
  end
@@ -54,7 +50,7 @@ module Spree
54
50
  let(:attributes) do
55
51
  {
56
52
  shipments_attributes: {
57
- 0 => {selected_shipping_rate_id: shipping_method2, id: shipment.id }
53
+ 0 => { selected_shipping_rate_id: shipping_method2, id: shipment.id }
58
54
  }
59
55
  }
60
56
  end
@@ -74,7 +70,7 @@ module Spree
74
70
  described_class.new(
75
71
  order,
76
72
  shipments_attributes: {
77
- 0 => {selected_shipping_rate_id: shipping_rate2.id, id: shipment.id }
73
+ 0 => { selected_shipping_rate_id: shipping_rate2.id, id: shipment.id }
78
74
  }
79
75
  ).apply
80
76