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,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Gateway::BogusSimple, :type => :model do
4
-
3
+ describe Spree::Gateway::BogusSimple, type: :model do
5
4
  subject { Spree::Gateway::BogusSimple.new }
6
5
 
7
6
  # regression test for https://github.com/spree/spree/issues/3824
@@ -16,5 +15,4 @@ describe Spree::Gateway::BogusSimple, :type => :model do
16
15
  expect(response.message).to include("failure")
17
16
  end
18
17
  end
19
-
20
- end
18
+ end
@@ -1,12 +1,14 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Spree
4
- describe Gateway::Bogus, :type => :model do
4
+ describe Gateway::Bogus, type: :model do
5
5
  let(:bogus) { create(:credit_card_payment_method) }
6
6
  let!(:cc) { create(:credit_card, payment_method: bogus, gateway_customer_profile_id: "BGS-RERTERT") }
7
7
 
8
8
  it "disable recurring contract by destroying payment source" do
9
- bogus.disable_customer_profile(cc)
9
+ ActiveSupport::Deprecation.silence do
10
+ bogus.disable_customer_profile(cc)
11
+ end
10
12
  expect(cc.gateway_customer_profile_id).to be_nil
11
13
  end
12
14
  end
@@ -1,14 +1,18 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Gateway, :type => :model do
3
+ describe Spree::Gateway, type: :model do
4
4
  class Provider
5
5
  def initialize(options)
6
6
  end
7
7
 
8
8
  def authorize; 'authorize'; end
9
+
9
10
  def purchase; 'purchase'; end
11
+
10
12
  def capture; 'capture'; end
13
+
11
14
  def void; 'void'; end
15
+
12
16
  def credit; 'credit'; end
13
17
  end
14
18
 
@@ -43,8 +47,9 @@ describe Spree::Gateway, :type => :model do
43
47
  end
44
48
 
45
49
  context "fetching payment sources" do
50
+ let(:store) { create :store }
46
51
  let(:user) { create :user }
47
- let(:order) { Spree::Order.create(user: user, completed_at: completed_at) }
52
+ let(:order) { Spree::Order.create(user: user, completed_at: completed_at, store: store) }
48
53
 
49
54
  let(:payment_method) { create(:credit_card_payment_method) }
50
55
 
@@ -98,7 +103,7 @@ describe Spree::Gateway, :type => :model do
98
103
  let(:payment_method){ create(:credit_card_payment_method, preference_source: 'test_preference_source') }
99
104
 
100
105
  it "reads static preferences" do
101
- expect(payment_method.options).to eq({:server=>"bar"})
106
+ expect(payment_method.options).to eq({ server: "bar" })
102
107
  end
103
108
  end
104
109
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::InventoryUnit, :type => :model do
3
+ describe Spree::InventoryUnit, type: :model do
4
4
  let(:stock_location) { create(:stock_location_with_items) }
5
5
  let(:stock_item) { stock_location.stock_items.order(:id).first }
6
6
  let(:line_item) { create(:line_item, variant: stock_item.variant) }
@@ -106,9 +106,7 @@ describe Spree::InventoryUnit, :type => :model do
106
106
  it "does not find inventory units belonging to incomplete orders" do
107
107
  expect(Spree::InventoryUnit.backordered_for_stock_item(stock_item)).not_to include(other_unit)
108
108
  end
109
-
110
109
  end
111
-
112
110
  end
113
111
 
114
112
  context "variants deleted" do
@@ -129,10 +127,12 @@ describe Spree::InventoryUnit, :type => :model do
129
127
  context "#finalize_units!" do
130
128
  let!(:stock_location) { create(:stock_location) }
131
129
  let(:variant) { create(:variant) }
132
- let(:inventory_units) { [
130
+ let(:inventory_units) {
131
+ [
133
132
  create(:inventory_unit, variant: variant),
134
133
  create(:inventory_unit, variant: variant)
135
- ] }
134
+ ]
135
+ }
136
136
 
137
137
  it "should create a stock movement" do
138
138
  Spree::InventoryUnit.finalize_units!(inventory_units)
@@ -173,11 +173,11 @@ describe Spree::InventoryUnit, :type => :model do
173
173
 
174
174
  describe '#additional_tax_total' do
175
175
  let(:quantity) { 2 }
176
- let(:line_item_additional_tax_total) { 10.00 }
176
+ let(:line_item_additional_tax_total) { 10.00 }
177
177
  let(:line_item) do
178
178
  build(:line_item, {
179
179
  quantity: quantity,
180
- additional_tax_total: line_item_additional_tax_total,
180
+ additional_tax_total: line_item_additional_tax_total
181
181
  })
182
182
  end
183
183
 
@@ -192,11 +192,11 @@ describe Spree::InventoryUnit, :type => :model do
192
192
 
193
193
  describe '#included_tax_total' do
194
194
  let(:quantity) { 2 }
195
- let(:line_item_included_tax_total) { 10.00 }
195
+ let(:line_item_included_tax_total) { 10.00 }
196
196
  let(:line_item) do
197
197
  build(:line_item, {
198
198
  quantity: quantity,
199
- included_tax_total: line_item_included_tax_total,
199
+ included_tax_total: line_item_included_tax_total
200
200
  })
201
201
  end
202
202
 
@@ -211,11 +211,11 @@ describe Spree::InventoryUnit, :type => :model do
211
211
 
212
212
  describe '#additional_tax_total' do
213
213
  let(:quantity) { 2 }
214
- let(:line_item_additional_tax_total) { 10.00 }
214
+ let(:line_item_additional_tax_total) { 10.00 }
215
215
  let(:line_item) do
216
216
  build(:line_item, {
217
217
  quantity: quantity,
218
- additional_tax_total: line_item_additional_tax_total,
218
+ additional_tax_total: line_item_additional_tax_total
219
219
  })
220
220
  end
221
221
 
@@ -230,11 +230,11 @@ describe Spree::InventoryUnit, :type => :model do
230
230
 
231
231
  describe '#included_tax_total' do
232
232
  let(:quantity) { 2 }
233
- let(:line_item_included_tax_total) { 10.00 }
233
+ let(:line_item_included_tax_total) { 10.00 }
234
234
  let(:line_item) do
235
235
  build(:line_item, {
236
236
  quantity: quantity,
237
- included_tax_total: line_item_included_tax_total,
237
+ included_tax_total: line_item_included_tax_total
238
238
  })
239
239
  end
240
240
 
@@ -248,7 +248,6 @@ describe Spree::InventoryUnit, :type => :model do
248
248
  end
249
249
 
250
250
  describe "#exchange_requested?" do
251
-
252
251
  subject { inventory_unit.exchange_requested? }
253
252
 
254
253
  context "return item contains inventory unit and was for an exchange" do
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Spree
4
- describe ItemAdjustments, :type => :model do
4
+ describe ItemAdjustments, type: :model do
5
5
  let(:order) { create :order_with_line_items, line_items_count: 1 }
6
6
  let(:line_item) { order.line_items.first }
7
7
 
@@ -9,8 +9,8 @@ module Spree
9
9
 
10
10
  context '#update' do
11
11
  it "updates a linked adjustment" do
12
- tax_rate = create(:tax_rate, :amount => 0.05)
13
- adjustment = create(:adjustment, order: order, source: tax_rate, adjustable: line_item)
12
+ tax_rate = create(:tax_rate, amount: 0.05)
13
+ create(:adjustment, order: order, source: tax_rate, adjustable: line_item)
14
14
  line_item.price = 10
15
15
  line_item.tax_category = tax_rate.tax_category
16
16
 
@@ -22,15 +22,15 @@ module Spree
22
22
 
23
23
  context "taxes and promotions" do
24
24
  let!(:tax_rate) do
25
- create(:tax_rate, :amount => 0.05)
25
+ create(:tax_rate, amount: 0.05)
26
26
  end
27
27
 
28
28
  let!(:promotion) do
29
- Spree::Promotion.create(:name => "$10 off")
29
+ Spree::Promotion.create(name: "$10 off")
30
30
  end
31
31
 
32
32
  let!(:promotion_action) do
33
- calculator = Calculator::FlatRate.new(:preferred_amount => 10)
33
+ calculator = Calculator::FlatRate.new(preferred_amount: 10)
34
34
  Promotion::Actions::CreateItemAdjustments.create calculator: calculator, promotion: promotion
35
35
  end
36
36
 
@@ -44,10 +44,10 @@ module Spree
44
44
  context "tax included in price" do
45
45
  before do
46
46
  create(:adjustment,
47
- :source => tax_rate,
48
- :adjustable => line_item,
49
- :order => order,
50
- :included => true
47
+ source: tax_rate,
48
+ adjustable: line_item,
49
+ order: order,
50
+ included: true
51
51
  )
52
52
  end
53
53
 
@@ -71,10 +71,10 @@ module Spree
71
71
  context "tax excluded from price" do
72
72
  before do
73
73
  create(:adjustment,
74
- :source => tax_rate,
75
- :adjustable => line_item,
76
- :order => order,
77
- :included => false
74
+ source: tax_rate,
75
+ adjustable: line_item,
76
+ order: order,
77
+ included: false
78
78
  )
79
79
  end
80
80
 
@@ -100,7 +100,7 @@ module Spree
100
100
  context "promotion chooser customization" do
101
101
  before do
102
102
  class Spree::TestPromotionChooser
103
- def initialize(adjustments)
103
+ def initialize(_adjustments)
104
104
  raise "Custom promotion chooser"
105
105
  end
106
106
  end
@@ -108,46 +108,42 @@ module Spree
108
108
  Spree::Config.promotion_chooser_class = Spree::TestPromotionChooser
109
109
  end
110
110
 
111
- after do
112
- Spree::Config.promotion_chooser_class = Spree::PromotionChooser
113
- end
114
-
115
111
  it "uses the defined promotion chooser" do
116
112
  expect { subject.update }.to raise_error("Custom promotion chooser")
117
113
  end
118
114
  end
119
115
 
120
116
  context "default promotion chooser (best promotion is always applied)" do
121
- let(:calculator) { Calculator::FlatRate.new(:preferred_amount => 10) }
117
+ let(:calculator) { Calculator::FlatRate.new(preferred_amount: 10) }
122
118
 
123
119
  let(:source) do
124
120
  Promotion::Actions::CreateItemAdjustments.create!(
125
121
  calculator: calculator,
126
- promotion: promotion,
122
+ promotion: promotion
127
123
  )
128
124
  end
129
125
  let(:promotion) { create(:promotion) }
130
126
 
131
127
  def create_adjustment(label, amount)
132
- create(:adjustment, :order => order,
133
- :adjustable => line_item,
134
- :source => source,
135
- :amount => amount,
136
- :finalized => true,
137
- :label => label)
128
+ create(:adjustment, order: order,
129
+ adjustable: line_item,
130
+ source: source,
131
+ amount: amount,
132
+ finalized: true,
133
+ label: label)
138
134
  end
139
135
 
140
136
  it "should make all but the most valuable promotion adjustment ineligible, leaving non promotion adjustments alone" do
141
137
  create_adjustment("Promotion A", -100)
142
138
  create_adjustment("Promotion B", -200)
143
139
  create_adjustment("Promotion C", -300)
144
- create(:adjustment, :order => order,
145
- :adjustable => line_item,
146
- :source => nil,
147
- :amount => -500,
148
- :finalized => true,
149
- :label => "Some other credit")
150
- line_item.adjustments.each {|a| a.update_column(:eligible, true)}
140
+ create(:adjustment, order: order,
141
+ adjustable: line_item,
142
+ source: nil,
143
+ amount: -500,
144
+ finalized: true,
145
+ label: "Some other credit")
146
+ line_item.adjustments.each { |a| a.update_column(:eligible, true) }
151
147
 
152
148
  subject.update
153
149
 
@@ -161,7 +157,7 @@ module Spree
161
157
  create_adjustment("Promotion A", -200)
162
158
  create_adjustment("Promotion B", -200)
163
159
  end
164
- line_item.adjustments.each {|a| a.update_column(:eligible, true)}
160
+ line_item.adjustments.each { |a| a.update_column(:eligible, true) }
165
161
 
166
162
  subject.update
167
163
 
@@ -175,7 +171,7 @@ module Spree
175
171
  create_adjustment("Promotion A", -200)
176
172
  create_adjustment("Promotion B", -200)
177
173
  end
178
- line_item.adjustments.each {|a| a.update_column(:eligible, true)}
174
+ line_item.adjustments.each { |a| a.update_column(:eligible, true) }
179
175
 
180
176
  subject.update
181
177
 
@@ -186,16 +182,16 @@ module Spree
186
182
  context "when previously ineligible promotions become available" do
187
183
  let(:order_promo1) { create(:promotion, :with_order_adjustment, :with_item_total_rule, weighted_order_adjustment_amount: 5, item_total_threshold_amount: 10) }
188
184
  let(:order_promo2) { create(:promotion, :with_order_adjustment, :with_item_total_rule, weighted_order_adjustment_amount: 10, item_total_threshold_amount: 20) }
189
- let(:order_promos) { [ order_promo1, order_promo2 ] }
185
+ let(:order_promos) { [order_promo1, order_promo2] }
190
186
  let(:line_item_promo1) { create(:promotion, :with_line_item_adjustment, :with_item_total_rule, adjustment_rate: 2.5, item_total_threshold_amount: 10, apply_automatically: true) }
191
187
  let(:line_item_promo2) { create(:promotion, :with_line_item_adjustment, :with_item_total_rule, adjustment_rate: 5, item_total_threshold_amount: 20, apply_automatically: true) }
192
- let(:line_item_promos) { [ line_item_promo1, line_item_promo2 ] }
188
+ let(:line_item_promos) { [line_item_promo1, line_item_promo2] }
193
189
  let(:order) { create(:order_with_line_items, line_items_count: 1) }
194
190
 
195
191
  # Apply promotions in different sequences. Results should be the same.
196
192
  promo_sequences = [
197
- [ 0, 1 ],
198
- [ 1, 0 ]
193
+ [0, 1],
194
+ [1, 0]
199
195
  ]
200
196
 
201
197
  promo_sequences.each do |promo_sequence|
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::LineItem, :type => :model do
3
+ describe Spree::LineItem, type: :model do
4
4
  let(:order) { create :order_with_line_items, line_items_count: 1 }
5
5
  let(:line_item) { order.line_items.first }
6
6
 
@@ -58,7 +58,7 @@ describe Spree::LineItem, :type => :model do
58
58
  let(:variant) { create(:variant) }
59
59
 
60
60
  before do
61
- create(:tax_rate, :zone => order.tax_zone, :tax_category => variant.tax_category)
61
+ create(:tax_rate, zone: order.tax_zone, tax_category: variant.tax_category)
62
62
  end
63
63
 
64
64
  context "when order has a tax zone" do
@@ -89,26 +89,62 @@ describe Spree::LineItem, :type => :model do
89
89
  end
90
90
  end
91
91
 
92
- # Test for https://github.com/spree/spree/issues/3391
93
- context '#copy_price' do
94
- it "copies over a variant's prices" do
95
- line_item.price = nil
96
- line_item.cost_price = nil
97
- line_item.currency = nil
98
- line_item.copy_price
99
- variant = line_item.variant
100
- expect(line_item.price).to eq(variant.price)
101
- expect(line_item.cost_price).to eq(variant.cost_price)
102
- expect(line_item.currency).to eq(variant.currency)
92
+ describe 'line item creation' do
93
+ let(:variant) { create :variant }
94
+
95
+ subject(:line_item) { Spree::LineItem.new(variant: variant, order: order) }
96
+
97
+ # Tests for https://github.com/spree/spree/issues/3391
98
+ context 'before validation' do
99
+ before { line_item.valid? }
100
+
101
+ it 'copies the variants price' do
102
+ expect(line_item.price).to eq(variant.price)
103
+ end
104
+
105
+ it 'copies the variants cost_price' do
106
+ expect(line_item.cost_price).to eq(variant.cost_price)
107
+ end
108
+
109
+ it "copies the order's currency" do
110
+ expect(line_item.currency).to eq(order.currency)
111
+ end
112
+
113
+ # Test for https://github.com/spree/spree/issues/3481
114
+ it 'copies the variants tax category' do
115
+ expect(line_item.tax_category).to eq(line_item.variant.tax_category)
116
+ end
103
117
  end
104
- end
105
118
 
106
- # Test for https://github.com/spree/spree/issues/3481
107
- context '#copy_tax_category' do
108
- it "copies over a variant's tax category" do
109
- line_item.tax_category = nil
110
- line_item.copy_tax_category
111
- expect(line_item.tax_category).to eq(line_item.variant.tax_category)
119
+ # Specs for https://github.com/solidusio/solidus/pull/522#issuecomment-170668125
120
+ context "with `#copy_price` defined" do
121
+ before(:context) do
122
+ Spree::LineItem.class_eval do
123
+ def copy_price
124
+ self.currency = "USD"
125
+ self.cost_price = 10
126
+ self.price = 20
127
+ end
128
+ end
129
+ end
130
+
131
+ after(:context) do
132
+ Spree::LineItem.class_eval do
133
+ remove_method :copy_price
134
+ end
135
+ end
136
+
137
+ it 'should display a deprecation warning' do
138
+ expect(ActiveSupport::Deprecation).to receive(:warn)
139
+ Spree::LineItem.new(variant: variant, order: order)
140
+ end
141
+
142
+ it 'should run the user-defined copy_price method' do
143
+ expect_any_instance_of(Spree::LineItem).to receive(:copy_price).and_call_original
144
+ ActiveSupport::Deprecation.silence do
145
+ Spree::LineItem.new(variant: variant, order: order)
146
+ end
147
+ end
112
148
  end
113
149
  end
114
150
 
@@ -123,16 +159,11 @@ describe Spree::LineItem, :type => :model do
123
159
 
124
160
  describe "#discounted_money" do
125
161
  it "should return a money object with the discounted amount" do
162
+ expect(line_item.discounted_amount).to eq(10.00)
126
163
  expect(line_item.discounted_money.to_s).to eq "$10.00"
127
164
  end
128
165
  end
129
166
 
130
- describe '.currency' do
131
- it 'returns the globally configured currency' do
132
- line_item.currency == 'USD'
133
- end
134
- end
135
-
136
167
  describe ".money" do
137
168
  before do
138
169
  line_item.price = 3.50
@@ -151,49 +182,62 @@ describe Spree::LineItem, :type => :model do
151
182
  end
152
183
  end
153
184
 
154
- context "currency same as order.currency" do
155
- it "is a valid line item" do
156
- line_item = order.line_items.first
157
- line_item.currency = order.currency
158
- line_item.valid?
185
+ context 'setting the currency' do
186
+ let(:line_item) { order.line_items.first }
187
+
188
+ context "currency same as order.currency" do
189
+ it "is a valid line item" do
190
+ line_item.currency = order.currency
191
+ line_item.valid?
159
192
 
160
- expect(line_item.error_on(:currency).size).to eq(0)
193
+ expect(line_item.error_on(:currency).size).to eq(0)
194
+ end
161
195
  end
162
- end
163
196
 
164
- context "currency different than order.currency" do
165
- it "is not a valid line item" do
166
- line_item = order.line_items.first
167
- line_item.currency = "no currency"
168
- line_item.valid?
197
+ context "currency different than order.currency" do
198
+ it "is not a valid line item" do
199
+ expect(Spree::Deprecation).to receive(:warn).at_least(:once)
200
+ line_item.currency = "RUB"
201
+ line_item.valid?
169
202
 
170
- expect(line_item.error_on(:currency).size).to eq(1)
203
+ expect(line_item.error_on(:currency).size).to eq(1)
204
+ end
171
205
  end
172
206
  end
173
207
 
174
208
  describe "#options=" do
175
209
  it "can handle updating a blank line item with no order" do
210
+ expect(Spree::Deprecation).not_to receive(:warn)
176
211
  line_item.options = { price: 123 }
177
212
  end
178
213
 
179
214
  it "updates the data provided in the options" do
215
+ expect(Spree::Deprecation).not_to receive(:warn)
180
216
  line_item.options = { price: 123 }
181
217
  expect(line_item.price).to eq 123
182
218
  end
219
+ end
183
220
 
184
- it "updates the price based on the options provided" do
185
- expect(line_item).to receive(:gift_wrap=).with(true)
186
- expect(line_item.variant).to receive(:gift_wrap_price_modifier_amount_in).with("USD", true).and_return 1.99
187
- line_item.options = { gift_wrap: true }
188
- expect(line_item.price).to eq 21.98
221
+ describe 'money_price=' do
222
+ let(:line_item) { Spree::LineItem.new }
223
+ let(:new_price) { Spree::Money.new(99.00, currency: "RUB") }
224
+
225
+ it 'assigns a new price and currency' do
226
+ line_item.money_price = new_price
227
+ expect(line_item.price).to eq(new_price.cents / 100.0)
228
+ expect(line_item.currency).to eq(new_price.currency.iso_code)
189
229
  end
190
230
  end
191
231
 
192
- describe "precision of pre_tax_amount" do
193
- let!(:line_item) { create :line_item, pre_tax_amount: 4.2051 }
232
+ describe "#pricing_options" do
233
+ let(:line_item) { Spree::LineItem.new(currency: "RUB") }
234
+
235
+ subject { line_item.pricing_options }
236
+
237
+ it { is_expected.to be_a(Spree::Config.pricing_options_class) }
194
238
 
195
- it "keeps four digits of precision even when reloading" do
196
- expect(line_item.reload.pre_tax_amount).to eq(4.2051)
239
+ it "holds the line items's currency" do
240
+ expect(subject.currency).to eq("RUB")
197
241
  end
198
242
  end
199
243
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::OptionType, :type => :model do
3
+ describe Spree::OptionType, type: :model do
4
4
  context "touching" do
5
5
  it "should touch a product" do
6
6
  product_option_type = create(:product_option_type)
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::OptionValue, :type => :model do
3
+ describe Spree::OptionValue, type: :model do
4
4
  context "touching" do
5
5
  let!(:variant) do
6
6
  Timecop.freeze(1.day.ago) do
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Order, :type => :model do
3
+ describe Spree::Order, type: :model do
4
4
  let(:order) { Spree::Order.new }
5
5
 
6
6
  context 'validation' do
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Order, :type => :model do
3
+ describe Spree::Order, type: :model do
4
4
  let(:order) { stub_model(Spree::Order) }
5
5
  before do
6
6
  Spree::Order.define_state_machine!
@@ -19,10 +19,10 @@ describe Spree::Order, :type => :model do
19
19
 
20
20
  context "#save" do
21
21
  context "when associated with a registered user" do
22
- let(:user) { double(:user, :email => "test@example.com") }
22
+ let(:user) { double(:user, email: "test@example.com") }
23
23
 
24
24
  before do
25
- allow(order).to receive_messages :user => user
25
+ allow(order).to receive_messages user: user
26
26
  end
27
27
 
28
28
  it "should assign the email address of the user" do