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,171 +1,95 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Order, :type => :model do
4
- let(:order) { Spree::Order.new }
5
- before do
6
- # Ensure state machine has been re-defined correctly
7
- Spree::Order.define_state_machine!
8
- # We don't care about this validation here
9
- allow(order).to receive(:require_email)
10
- end
3
+ describe Spree::Order, type: :model do
4
+ let(:order) { create(:order_with_line_items) }
11
5
 
12
6
  context "#next!" do
13
7
  context "when current state is confirm" do
14
8
  before do
15
9
  order.state = "confirm"
16
- order.run_callbacks(:create)
17
- allow(order).to receive_messages :payment_required? => true
18
- allow(order).to receive_messages :process_payments! => true
19
- allow(order).to receive_messages :ensure_available_shipping_rates => true
10
+ order.save!
20
11
  end
21
12
 
22
13
  context "when payment processing succeeds" do
23
- before do
24
- order.payments << FactoryGirl.create(:payment, state: 'checkout', order: order)
25
- allow(order).to receive_messages process_payments: true
14
+ let!(:payment) do
15
+ create(:payment, state: 'checkout', order: order)
26
16
  end
27
17
 
28
18
  it "should finalize order when transitioning to complete state" do
29
- expect(order).to receive(:finalize!)
30
19
  order.complete!
20
+ expect(order).to be_complete
21
+ expect(order).to be_completed
31
22
  end
32
23
 
33
24
  context "when credit card processing fails" do
34
- before { allow(order).to receive_messages :process_payments! => false }
25
+ let!(:payment) do
26
+ create(:payment, :failing, state: 'checkout', order: order)
27
+ end
35
28
 
36
29
  it "should not complete the order" do
37
- order.next
38
- expect(order.state).to eq("confirm")
39
- end
40
- end
41
- end
42
-
43
- context "when payment processing fails" do
44
- before { allow(order).to receive_messages :process_payments! => false }
45
-
46
- it "cannot transition to complete" do
47
- order.next
48
- expect(order.state).to eq("confirm")
30
+ expect(order.complete).to be false
31
+ expect(order.state).to eq("confirm")
32
+ end
49
33
  end
50
34
  end
51
35
  end
52
36
 
53
- context "when current state is delivery" do
37
+ context "when current state is address" do
54
38
  before do
55
- allow(order).to receive_messages :payment_required? => true
56
- allow(order).to receive :apply_free_shipping_promotions
57
- order.state = "delivery"
58
- end
59
-
60
- it "adjusts tax rates when transitioning to delivery" do
61
- # Once for the line items
62
- expect(Spree::TaxRate).to receive(:adjust).once
63
- allow(order).to receive :set_shipments_cost
39
+ order.ensure_updated_shipments
64
40
  order.next!
41
+ expect(order.all_adjustments).to be_empty
42
+ expect(order.state).to eq "address"
65
43
  end
66
44
 
67
- it "adjusts tax rates twice if there are any shipments" do
68
- # Once for the line items, once for the shipments
69
- order.shipments.build
70
- expect(Spree::TaxRate).to receive(:adjust).twice
71
- allow(order).to receive :set_shipments_cost
45
+ it "adjusts tax rates when transitioning to delivery" do
46
+ expect(Spree::Tax::OrderAdjuster).to receive(:new).once.with(order).and_call_original
72
47
  order.next!
73
48
  end
74
49
  end
75
50
  end
76
51
 
77
52
  context "#can_cancel?" do
53
+ let(:order) { create(:completed_order_with_totals) }
78
54
  states = [:pending, :backorder, :ready]
79
55
 
80
56
  states.each do |shipment_state|
81
57
  it "should be true if shipment_state is #{shipment_state}" do
82
- allow(order).to receive_messages :completed? => true
58
+ expect(order).to be_completed
83
59
  order.shipment_state = shipment_state
84
- expect(order.can_cancel?).to be true
60
+
61
+ expect(order).to be_can_cancel
85
62
  end
86
63
  end
87
64
 
88
65
  (Spree::Shipment.state_machine.states.keys - states).each do |shipment_state|
89
66
  it "should be false if shipment_state is #{shipment_state}" do
90
- allow(order).to receive_messages :completed? => true
67
+ expect(order).to be_completed
91
68
  order.shipment_state = shipment_state
92
- expect(order.can_cancel?).to be false
69
+ expect(order).not_to be_can_cancel
93
70
  end
94
71
  end
95
-
96
72
  end
97
73
 
98
74
  context "#cancel" do
99
- let!(:variant) { stub_model(Spree::Variant) }
100
- let!(:inventory_units) { [stub_model(Spree::InventoryUnit, :variant => variant),
101
- stub_model(Spree::InventoryUnit, :variant => variant) ]}
102
- let!(:shipment) do
103
- shipment = stub_model(Spree::Shipment)
104
- allow(shipment).to receive_messages :inventory_units => inventory_units, :order => order
105
- allow(order).to receive_messages :shipments => [shipment]
106
- shipment
107
- end
108
-
109
- before do
110
-
111
- 2.times do
112
- create(:line_item, :order => order, price: 10)
113
- end
114
-
115
- allow(order.line_items).to receive_messages :find_by_variant_id => order.line_items.first
75
+ let!(:order) { create(:completed_order_with_totals) }
76
+ let!(:shipment) { order.shipments.first }
116
77
 
117
- allow(order).to receive_messages :completed? => true
118
- allow(order).to receive_messages :allow_cancel? => true
119
-
120
- shipments = [shipment]
121
- allow(order).to receive_messages :shipments => shipments
122
- allow(shipments).to receive_messages :states => []
123
- allow(shipments).to receive_messages :ready => []
124
- allow(shipments).to receive_messages :pending => []
125
- allow(shipments).to receive_messages :shipped => []
126
-
127
- allow_any_instance_of(Spree::OrderUpdater).to receive(:update_adjustment_total) { 10 }
78
+ it "is setup correctly" do
79
+ expect(order).to be_completed
80
+ expect(order).to be_complete
81
+ expect(order).to be_allow_cancel
128
82
  end
129
83
 
130
84
  it "should send a cancel email" do
131
-
132
- # Stub methods that cause side-effects in this test
133
- allow(shipment).to receive(:cancel!)
134
- allow(order).to receive :restock_items!
135
- expect(Spree::OrderMailer).to receive(:cancel_email).with(order).and_return(mail_message = double)
136
- expect(mail_message).to receive :deliver_later
137
85
  order.cancel!
138
- end
139
86
 
140
- context "restocking inventory" do
141
- before do
142
- allow(shipment).to receive(:ensure_correct_adjustment)
143
- allow(shipment).to receive(:update_order)
144
- allow(Spree::OrderMailer).to receive(:cancel_email).and_return(mail_message = double)
145
- allow(mail_message).to receive :deliver_later
146
-
147
- end
87
+ mail = ActionMailer::Base.deliveries.last
88
+ expect(mail.subject).to include "Cancellation"
148
89
  end
149
90
 
150
91
  context "resets payment state" do
151
-
152
- let(:payment) { create(:payment, amount: order.total) }
153
-
154
- before do
155
- # TODO: This is ugly :(
156
- # Stubs methods that cause unwanted side effects in this test
157
- allow(Spree::OrderMailer).to receive(:cancel_email).and_return(mail_message = double)
158
- allow(mail_message).to receive :deliver_later
159
- allow(order).to receive :restock_items!
160
- allow(shipment).to receive(:cancel!)
161
- allow(payment).to receive(:cancel!)
162
- allow(order).to receive_message_chain(:payments, :valid, :size).and_return(1)
163
- allow(order).to receive_message_chain(:payments, :completed).and_return([payment])
164
- allow(order).to receive_message_chain(:payments, :completed, :includes).and_return([payment])
165
- allow(order).to receive_message_chain(:payments, :last).and_return(payment)
166
- allow(order).to receive_message_chain(:payments, :store_credits, :pending).and_return([payment])
167
- allow(order).to receive(:refund_total).and_return(0)
168
- end
92
+ let!(:payment) { create(:payment, order: order, amount: order.total, state: "completed") }
169
93
 
170
94
  context "without shipped items" do
171
95
  it "should set payment state to 'void'" do
@@ -175,35 +99,20 @@ describe Spree::Order, :type => :model do
175
99
 
176
100
  context "with shipped items" do
177
101
  before do
178
- allow(order).to receive_messages shipment_state: 'partial'
179
- allow(order).to receive_messages outstanding_balance?: false
180
- allow(order).to receive_messages payment_state: "paid"
102
+ order.shipments[0].ship!
181
103
  end
182
104
 
183
105
  it "should not alter the payment state" do
184
- order.cancel!
106
+ expect(order).to_not be_allow_cancel
107
+ expect(order.cancel).to be false
185
108
  expect(order.payment_state).to eql "paid"
186
109
  end
187
110
  end
188
111
 
189
- context "with payments" do
190
- let(:payment) { create(:payment) }
191
-
192
- it "should automatically refund all payments" do
193
- expect(payment).to receive(:cancel!)
194
- order.cancel!
195
- end
112
+ it "should automatically refund all payments" do
113
+ expect(order).to be_allow_cancel
114
+ expect { order.cancel! }.to change{ payment.reload.state }.to("void")
196
115
  end
197
116
  end
198
117
  end
199
-
200
-
201
- # Another regression test for https://github.com/spree/spree/issues/729
202
- context "#resume" do
203
- before do
204
- allow(order).to receive_messages email: "user@spreecommerce.com"
205
- allow(order).to receive_messages state: "canceled"
206
- allow(order).to receive_messages allow_resume?: true
207
- end
208
- end
209
118
  end
@@ -1,13 +1,13 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Spree
4
- describe Spree::Order, :type => :model do
4
+ describe Spree::Order, type: :model do
5
5
  let(:order) { stub_model(Spree::Order) }
6
6
 
7
7
  context "#tax_zone" do
8
8
  let(:bill_address) { create :address }
9
9
  let(:ship_address) { create :address }
10
- let(:order) { Spree::Order.create(:ship_address => ship_address, :bill_address => bill_address) }
10
+ let(:order) { Spree::Order.create(ship_address: ship_address, bill_address: bill_address) }
11
11
  let(:zone) { create :zone }
12
12
 
13
13
  context "when no zones exist" do
@@ -17,7 +17,7 @@ module Spree
17
17
  end
18
18
 
19
19
  context "when :tax_using_ship_address => true" do
20
- before { Spree::Config.set(:tax_using_ship_address => true) }
20
+ before { Spree::Config.set(tax_using_ship_address: true) }
21
21
 
22
22
  it "should calculate using ship_address" do
23
23
  expect(Spree::Zone).to receive(:match).at_least(:once).with(ship_address)
@@ -27,7 +27,7 @@ module Spree
27
27
  end
28
28
 
29
29
  context "when :tax_using_ship_address => false" do
30
- before { Spree::Config.set(:tax_using_ship_address => false) }
30
+ before { Spree::Config.set(tax_using_ship_address: false) }
31
31
 
32
32
  it "should calculate using bill_address" do
33
33
  expect(Spree::Zone).to receive(:match).at_least(:once).with(bill_address)
@@ -38,12 +38,12 @@ module Spree
38
38
 
39
39
  context "when there is a default tax zone" do
40
40
  before do
41
- @default_zone = create(:zone, :name => "foo_zone")
42
- allow(Spree::Zone).to receive_messages :default_tax => @default_zone
41
+ @default_zone = create(:zone, name: "foo_zone")
42
+ allow(Spree::Zone).to receive_messages default_tax: @default_zone
43
43
  end
44
44
 
45
45
  context "when there is a matching zone" do
46
- before { allow(Spree::Zone).to receive_messages(:match => zone) }
46
+ before { allow(Spree::Zone).to receive_messages(match: zone) }
47
47
 
48
48
  it "should return the matching zone" do
49
49
  expect(order.tax_zone).to eq(zone)
@@ -51,7 +51,7 @@ module Spree
51
51
  end
52
52
 
53
53
  context "when there is no matching zone" do
54
- before { allow(Spree::Zone).to receive_messages(:match => nil) }
54
+ before { allow(Spree::Zone).to receive_messages(match: nil) }
55
55
 
56
56
  it "should return the default tax zone" do
57
57
  expect(order.tax_zone).to eq(@default_zone)
@@ -60,10 +60,10 @@ module Spree
60
60
  end
61
61
 
62
62
  context "when no default tax zone" do
63
- before { allow(Spree::Zone).to receive_messages :default_tax => nil }
63
+ before { allow(Spree::Zone).to receive_messages default_tax: nil }
64
64
 
65
65
  context "when there is a matching zone" do
66
- before { allow(Spree::Zone).to receive_messages(:match => zone) }
66
+ before { allow(Spree::Zone).to receive_messages(match: zone) }
67
67
 
68
68
  it "should return the matching zone" do
69
69
  expect(order.tax_zone).to eq(zone)
@@ -71,7 +71,7 @@ module Spree
71
71
  end
72
72
 
73
73
  context "when there is no matching zone" do
74
- before { allow(Spree::Zone).to receive_messages(:match => nil) }
74
+ before { allow(Spree::Zone).to receive_messages(match: nil) }
75
75
 
76
76
  it "should return nil" do
77
77
  expect(order.tax_zone).to be_nil
@@ -79,6 +79,5 @@ module Spree
79
79
  end
80
80
  end
81
81
  end
82
-
83
82
  end
84
83
  end
@@ -1,13 +1,13 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Spree
4
- describe Order, :type => :model do
5
- let(:order) { Order.create }
4
+ describe Order, type: :model do
5
+ let(:order) { create(:order) }
6
6
  let(:shirt) { create(:variant) }
7
7
 
8
8
  context "adds item to cart and activates promo" do
9
9
  let(:promotion) { Promotion.create name: 'Huhu', apply_automatically: true }
10
- let(:calculator) { Calculator::FlatPercentItemTotal.new(:preferred_flat_percent => 10) }
10
+ let(:calculator) { Calculator::FlatPercentItemTotal.new(preferred_flat_percent: 10) }
11
11
  let!(:action) { Promotion::Actions::CreateAdjustment.create(promotion: promotion, calculator: calculator) }
12
12
 
13
13
  before { order.contents.add(shirt, 1) }
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Order, :type => :model do
3
+ describe Spree::Order, type: :model do
4
4
  let(:order) { stub_model(Spree::Order) }
5
5
 
6
6
  context "#update!" do
7
- let(:line_items) { [mock_model(Spree::LineItem, :amount => 5) ]}
7
+ let(:line_items) { [mock_model(Spree::LineItem, amount: 5)] }
8
8
 
9
9
  context "when there are update hooks" do
10
10
  before { Spree::Order.register_update_hook :foo }
@@ -1,12 +1,12 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Spree
4
- describe Spree::Order, :type => :model do
4
+ describe Spree::Order, type: :model do
5
5
  context "validations" do
6
6
  # Regression test for https://github.com/spree/spree/issues/2214
7
7
  it "does not return two error messages when email is blank" do
8
8
  order = Spree::Order.new
9
- allow(order).to receive_messages(:require_email => true)
9
+ allow(order).to receive_messages(require_email: true)
10
10
  order.valid?
11
11
  expect(order.errors[:email]).to eq(["can't be blank"])
12
12
  end
@@ -153,7 +153,7 @@ describe Spree::OrderCancellations do
153
153
  it "generates the correct total amount" do
154
154
  order.cancellations.short_ship([inventory_unit_1])
155
155
  order.cancellations.short_ship([inventory_unit_2])
156
- expect(line_item.adjustments.non_tax.sum(:amount)).to eq -1.67
156
+ expect(line_item.adjustments.non_tax.sum(:amount)).to eq(-1.67)
157
157
  expect(line_item.total).to eq 0
158
158
  end
159
159
  end
@@ -135,7 +135,7 @@ describe Spree::OrderCapturing do
135
135
  let(:payment_methods) { [Spree::Gateway::Bogus, ExceptionallyBogusPaymentMethod] }
136
136
 
137
137
  class ExceptionallyBogusPaymentMethod < Spree::Gateway::Bogus
138
- def capture(*args)
138
+ def capture(*_args)
139
139
  raise ActiveMerchant::ConnectionError.new("foo", nil)
140
140
  end
141
141
  end
@@ -1,6 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::OrderContents, :type => :model do
3
+ describe Spree::OrderContents, type: :model do
4
+ let!(:store) { create :store }
4
5
  let(:order) { Spree::Order.create }
5
6
  let(:variant) { create(:variant) }
6
7
  let!(:stock_location) { variant.stock_locations.first }
@@ -57,7 +58,7 @@ describe Spree::OrderContents, :type => :model do
57
58
  end
58
59
 
59
60
  it "should create stock location associations if provided" do
60
- line_item = subject.add(variant, 3, stock_location_quantities: {stock_location.id => 1, stock_location_2.id => 2})
61
+ line_item = subject.add(variant, 3, stock_location_quantities: { stock_location.id => 1, stock_location_2.id => 2 })
61
62
  order_stock_locations = line_item.order.order_stock_locations
62
63
  expect(order_stock_locations.count).to eq(2)
63
64
  expect(order_stock_locations.map(&:quantity)).to eq([1, 2])
@@ -66,7 +67,7 @@ describe Spree::OrderContents, :type => :model do
66
67
 
67
68
  context "running promotions" do
68
69
  let(:promotion) { create(:promotion, apply_automatically: true) }
69
- let(:calculator) { Spree::Calculator::FlatRate.new(:preferred_amount => 10) }
70
+ let(:calculator) { Spree::Calculator::FlatRate.new(preferred_amount: 10) }
70
71
 
71
72
  shared_context "discount changes order total" do
72
73
  before { subject.add(variant, 1) }
@@ -117,7 +118,7 @@ describe Spree::OrderContents, :type => :model do
117
118
 
118
119
  context 'given a shipment' do
119
120
  it "ensure shipment calls update_amounts instead of order calling ensure_updated_shipments" do
120
- line_item = subject.add(variant, 1)
121
+ subject.add(variant, 1)
121
122
  shipment = create(:shipment)
122
123
  expect(subject.order).to_not receive(:ensure_updated_shipments)
123
124
  expect(shipment).to receive(:update_amounts)
@@ -127,7 +128,7 @@ describe Spree::OrderContents, :type => :model do
127
128
 
128
129
  context 'not given a shipment' do
129
130
  it "ensures updated shipments" do
130
- line_item = subject.add(variant, 1)
131
+ subject.add(variant, 1)
131
132
  expect(subject.order).to receive(:ensure_updated_shipments)
132
133
  subject.remove(variant)
133
134
  end
@@ -151,12 +152,12 @@ describe Spree::OrderContents, :type => :model do
151
152
  expect(order.item_total.to_f).to eq(0.00)
152
153
  expect(order.total.to_f).to eq(0.00)
153
154
 
154
- subject.add(variant,2)
155
+ subject.add(variant, 2)
155
156
 
156
157
  expect(order.item_total.to_f).to eq(39.98)
157
158
  expect(order.total.to_f).to eq(39.98)
158
159
 
159
- subject.remove(variant,1)
160
+ subject.remove(variant, 1)
160
161
  expect(order.item_total.to_f).to eq(19.99)
161
162
  expect(order.total.to_f).to eq(19.99)
162
163
  end
@@ -192,7 +193,7 @@ describe Spree::OrderContents, :type => :model do
192
193
  expect(order.item_total.to_f).to eq(0.00)
193
194
  expect(order.total.to_f).to eq(0.00)
194
195
 
195
- line_item = subject.add(variant,2)
196
+ line_item = subject.add(variant, 2)
196
197
 
197
198
  expect(order.item_total.to_f).to eq(39.98)
198
199
  expect(order.total.to_f).to eq(39.98)
@@ -203,7 +204,6 @@ describe Spree::OrderContents, :type => :model do
203
204
  end
204
205
  end
205
206
 
206
-
207
207
  context "update cart" do
208
208
  let!(:shirt) { subject.add variant, 1 }
209
209
 
@@ -227,7 +227,7 @@ describe Spree::OrderContents, :type => :model do
227
227
  context "submits item quantity 0" do
228
228
  let(:params) do
229
229
  { line_items_attributes: {
230
- "0" => { id: shirt.id, quantity: 0 },
230
+ "0" => { id: shirt.id, quantity: 0 }
231
231
  } }
232
232
  end
233
233
 
@@ -303,5 +303,4 @@ describe Spree::OrderContents, :type => :model do
303
303
  end
304
304
  end
305
305
  end
306
-
307
306
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::OrderInventory, :type => :model do
3
+ describe Spree::OrderInventory, type: :model do
4
4
  let(:order) { create :completed_order_with_totals }
5
5
  let(:line_item) { order.line_items.first }
6
6
 
@@ -91,9 +91,9 @@ describe Spree::OrderInventory, :type => :model do
91
91
  before do
92
92
  subject.verify
93
93
 
94
- order.shipments.create(:stock_location_id => stock_location.id, :cost => 5)
94
+ order.shipments.create(stock_location_id: stock_location.id, cost: 5)
95
95
 
96
- shipped = order.shipments.create(:stock_location_id => order.shipments.first.stock_location.id, :cost => 10)
96
+ shipped = order.shipments.create(stock_location_id: order.shipments.first.stock_location.id, cost: 10)
97
97
  shipped.update_column(:state, 'shipped')
98
98
  end
99
99
 
@@ -164,9 +164,9 @@ describe Spree::OrderInventory, :type => :model do
164
164
 
165
165
  it 'should destroy backordered units first' do
166
166
  allow(shipment).to receive_messages(inventory_units_for_item: [
167
- mock_model(Spree::InventoryUnit, :variant_id => variant.id, :state => 'backordered'),
168
- mock_model(Spree::InventoryUnit, :variant_id => variant.id, :state => 'on_hand'),
169
- mock_model(Spree::InventoryUnit, :variant_id => variant.id, :state => 'backordered')
167
+ mock_model(Spree::InventoryUnit, variant_id: variant.id, state: 'backordered'),
168
+ mock_model(Spree::InventoryUnit, variant_id: variant.id, state: 'on_hand'),
169
+ mock_model(Spree::InventoryUnit, variant_id: variant.id, state: 'backordered')
170
170
  ])
171
171
 
172
172
  expect(shipment.inventory_units_for_item[0]).to receive(:destroy)
@@ -178,8 +178,8 @@ describe Spree::OrderInventory, :type => :model do
178
178
 
179
179
  it 'should destroy unshipped units first' do
180
180
  allow(shipment).to receive_messages(inventory_units_for_item: [
181
- mock_model(Spree::InventoryUnit, :variant_id => variant.id, :state => 'shipped'),
182
- mock_model(Spree::InventoryUnit, :variant_id => variant.id, :state => 'on_hand')
181
+ mock_model(Spree::InventoryUnit, variant_id: variant.id, state: 'shipped'),
182
+ mock_model(Spree::InventoryUnit, variant_id: variant.id, state: 'on_hand')
183
183
  ])
184
184
 
185
185
  expect(shipment.inventory_units_for_item[0]).not_to receive(:destroy)
@@ -190,8 +190,8 @@ describe Spree::OrderInventory, :type => :model do
190
190
 
191
191
  it 'only attempts to destroy as many units as are eligible, and return amount destroyed' do
192
192
  allow(shipment).to receive_messages(inventory_units_for_item: [
193
- mock_model(Spree::InventoryUnit, :variant_id => variant.id, :state => 'shipped'),
194
- mock_model(Spree::InventoryUnit, :variant_id => variant.id, :state => 'on_hand')
193
+ mock_model(Spree::InventoryUnit, variant_id: variant.id, state: 'shipped'),
194
+ mock_model(Spree::InventoryUnit, variant_id: variant.id, state: 'on_hand')
195
195
  ])
196
196
 
197
197
  expect(shipment.inventory_units_for_item[0]).not_to receive(:destroy)
@@ -201,7 +201,7 @@ describe Spree::OrderInventory, :type => :model do
201
201
  end
202
202
 
203
203
  it 'should destroy self if not inventory units remain' do
204
- allow(shipment.inventory_units).to receive_messages(:count => 0)
204
+ allow(shipment.inventory_units).to receive_messages(count: 0)
205
205
  expect(shipment).to receive(:destroy)
206
206
 
207
207
  expect(subject.send(:remove_from_shipment, shipment, 1)).to eq(1)
@@ -4,6 +4,7 @@ require 'spec_helper'
4
4
  module Spree
5
5
  describe OrderMerger, type: :model do
6
6
  let(:variant) { create(:variant) }
7
+ let!(:store) { create(:store, default: true) }
7
8
  let(:order_1) { Spree::Order.create }
8
9
  let(:order_2) { Spree::Order.create }
9
10
  let(:user) { stub_model(Spree::LegacyUser, email: "spree@example.com") }
@@ -8,7 +8,6 @@ describe Spree::OrderShipping do
8
8
  end
9
9
 
10
10
  shared_examples 'shipment shipping' do
11
-
12
11
  it "marks the inventory units as shipped" do
13
12
  expect { subject }.to change { order.inventory_units.reload.map(&:state) }.from(['on_hand']).to(['shipped'])
14
13
  end
@@ -43,7 +42,6 @@ describe Spree::OrderShipping do
43
42
  end
44
43
  end.to change { order.updated_at }.from(order.updated_at).to(future)
45
44
  end
46
-
47
45
  end
48
46
 
49
47
  describe "#ship" do
@@ -52,7 +50,7 @@ describe Spree::OrderShipping do
52
50
  inventory_units: inventory_units,
53
51
  stock_location: stock_location,
54
52
  address: address,
55
- shipping_method: shipping_method,
53
+ shipping_method: shipping_method
56
54
  )
57
55
  end
58
56
 
@@ -71,7 +69,7 @@ describe Spree::OrderShipping do
71
69
  stock_location: stock_location,
72
70
  address: address,
73
71
  shipping_method: shipping_method,
74
- external_number: 'some-external-number',
72
+ external_number: 'some-external-number'
75
73
  )
76
74
  end
77
75
 
@@ -87,7 +85,7 @@ describe Spree::OrderShipping do
87
85
  stock_location: stock_location,
88
86
  address: address,
89
87
  shipping_method: shipping_method,
90
- tracking_number: 'tracking-number',
88
+ tracking_number: 'tracking-number'
91
89
  )
92
90
  end
93
91
 
@@ -103,7 +101,7 @@ describe Spree::OrderShipping do
103
101
  stock_location: stock_location,
104
102
  address: address,
105
103
  shipping_method: shipping_method,
106
- suppress_mailer: true,
104
+ suppress_mailer: true
107
105
  )
108
106
  end
109
107
 
@@ -148,7 +146,7 @@ describe Spree::OrderShipping do
148
146
  subject do
149
147
  order.shipping.ship_shipment(
150
148
  shipment,
151
- external_number: 'some-external-number',
149
+ external_number: 'some-external-number'
152
150
  )
153
151
  end
154
152
 
@@ -161,7 +159,7 @@ describe Spree::OrderShipping do
161
159
  subject do
162
160
  order.shipping.ship_shipment(
163
161
  shipment,
164
- tracking_number: 'tracking-number',
162
+ tracking_number: 'tracking-number'
165
163
  )
166
164
  end
167
165
 
@@ -193,7 +191,7 @@ describe Spree::OrderShipping do
193
191
  inventory_units: shipped_inventory,
194
192
  stock_location: shipment.stock_location,
195
193
  address: shipment.address,
196
- shipping_method: shipment.shipping_method,
194
+ shipping_method: shipment.shipping_method
197
195
  )
198
196
  end
199
197
 
@@ -211,7 +209,7 @@ describe Spree::OrderShipping do
211
209
  subject do
212
210
  order.shipping.ship_shipment(
213
211
  shipment,
214
- suppress_mailer: true,
212
+ suppress_mailer: true
215
213
  )
216
214
  end
217
215