solidus_core 1.2.3 → 1.3.0.beta1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of solidus_core might be problematic. Click here for more details.

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,11 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Address, :type => :model do
4
-
3
+ describe Spree::Address, type: :model do
5
4
  subject { Spree::Address }
6
5
 
7
6
  context "aliased attributes" do
8
- let(:address) { Spree::Address.new firstname: 'Ryan', lastname: 'Bigg'}
7
+ let(:address) { Spree::Address.new firstname: 'Ryan', lastname: 'Bigg' }
9
8
 
10
9
  it " first_name" do
11
10
  expect(address.first_name).to eq("Ryan")
@@ -17,13 +16,12 @@ describe Spree::Address, :type => :model do
17
16
  end
18
17
 
19
18
  context "validation" do
20
-
21
- let(:country) { mock_model(Spree::Country, :states => [state], :states_required => true) }
22
- let(:state) { stub_model(Spree::State, :name => 'maryland', :abbr => 'md') }
23
- let(:address) { build(:address, :country => country) }
19
+ let(:country) { mock_model(Spree::Country, states: [state], states_required: true) }
20
+ let(:state) { stub_model(Spree::State, name: 'maryland', abbr: 'md') }
21
+ let(:address) { build(:address, country: country) }
24
22
 
25
23
  before do
26
- allow(country.states).to receive_messages :find_all_by_name_or_abbr => [state]
24
+ allow(country.states).to receive_messages find_all_by_name_or_abbr: [state]
27
25
  end
28
26
 
29
27
  context 'address does not require state' do
@@ -72,7 +70,7 @@ describe Spree::Address, :type => :model do
72
70
 
73
71
  it "state is entered but country does not contain that state" do
74
72
  address.state = state
75
- address.country = stub_model(Spree::Country, :states_required => true)
73
+ address.country = stub_model(Spree::Country, states_required: true)
76
74
  address.valid?
77
75
  expect(address.errors["state"]).to eq(['is invalid'])
78
76
  end
@@ -80,7 +78,7 @@ describe Spree::Address, :type => :model do
80
78
  it "both state and state_name are entered but country does not contain the state" do
81
79
  address.state = state
82
80
  address.state_name = 'maryland'
83
- address.country = stub_model(Spree::Country, :states_required => true)
81
+ address.country = stub_model(Spree::Country, states_required: true)
84
82
  expect(address).to be_valid
85
83
  expect(address.state_id).to be_nil
86
84
  end
@@ -167,23 +165,24 @@ describe Spree::Address, :type => :model do
167
165
 
168
166
  context 'has a default country' do
169
167
  before do
170
- Spree::Config[:default_country_id] = default_country.id
168
+ Spree::Config[:default_country_iso] = default_country.iso
171
169
  end
172
170
 
173
- it "sets up a new record with Spree::Config[:default_country_id]" do
171
+ it "sets up a new record with Spree::Config[:default_country_iso]" do
174
172
  expect(Spree::Address.build_default.country).to eq default_country
175
173
  end
176
174
  end
177
175
 
178
176
  # Regression test for https://github.com/spree/spree/issues/1142
179
- it "uses the first available country if :default_country_id is set to an invalid value" do
180
- Spree::Config[:default_country_id] = "0"
181
- expect(Spree::Address.build_default.country).to eq default_country
177
+ it "raises ActiveRecord::RecordNotFound if :default_country_iso is set to an invalid value" do
178
+ Spree::Config[:default_country_iso] = "00"
179
+ expect {
180
+ Spree::Address.build_default.country
181
+ }.to raise_error(ActiveRecord::RecordNotFound)
182
182
  end
183
183
  end
184
184
  end
185
185
 
186
-
187
186
  context '.factory' do
188
187
  context 'with attributes that use setters defined in Address' do
189
188
  let(:address_attributes) { attributes_for(:address, country_id: nil, country_iso: country.iso) }
@@ -258,15 +257,14 @@ describe Spree::Address, :type => :model do
258
257
  end
259
258
  end
260
259
 
261
-
262
260
  describe '.value_attributes' do
263
261
  subject do
264
262
  Spree::Address.value_attributes(base_attributes, merge_attributes)
265
263
  end
266
264
 
267
265
  context 'with symbols and strings' do
268
- let(:base_attributes) { {'address1' => '1234 way', 'address2' => 'apt 2'} }
269
- let(:merge_attributes) { {:address1 => '5678 way'} }
266
+ let(:base_attributes) { { 'address1' => '1234 way', 'address2' => 'apt 2' } }
267
+ let(:merge_attributes) { { address1: '5678 way' } }
270
268
 
271
269
  it 'stringifies and merges the keys' do
272
270
  expect(subject).to eq('address1' => '5678 way', 'address2' => 'apt 2')
@@ -279,13 +277,13 @@ describe Spree::Address, :type => :model do
279
277
  'id' => 1,
280
278
  'created_at' => Time.current,
281
279
  'updated_at' => Time.current,
282
- 'address1' => '1234 way',
280
+ 'address1' => '1234 way'
283
281
  }
284
282
  end
285
283
  let(:merge_attributes) do
286
284
  {
287
285
  'updated_at' => Time.current,
288
- 'address2' => 'apt 2',
286
+ 'address2' => 'apt 2'
289
287
  }
290
288
  end
291
289
 
@@ -295,8 +293,8 @@ describe Spree::Address, :type => :model do
295
293
  end
296
294
 
297
295
  context 'with aliased attributes' do
298
- let(:base_attributes) { {'first_name' => 'Jordan'} }
299
- let(:merge_attributes) { {'last_name' => 'Brough'} }
296
+ let(:base_attributes) { { 'first_name' => 'Jordan' } }
297
+ let(:merge_attributes) { { 'last_name' => 'Brough' } }
300
298
 
301
299
  it 'renames them to the normalized value' do
302
300
  expect(subject).to eq('firstname' => 'Jordan', 'lastname' => 'Brough')
@@ -311,7 +309,7 @@ describe Spree::Address, :type => :model do
311
309
  end
312
310
 
313
311
  context '#country_iso=' do
314
- let(:address) { build(:address, :country_id => nil) }
312
+ let(:address) { build(:address, country_id: nil) }
315
313
  let(:country) { create(:country, iso: 'ZW') }
316
314
 
317
315
  it 'sets the country to the country with the matching iso code' do
@@ -328,42 +326,41 @@ describe Spree::Address, :type => :model do
328
326
 
329
327
  context '#full_name' do
330
328
  context 'both first and last names are present' do
331
- let(:address) { stub_model(Spree::Address, :firstname => 'Michael', :lastname => 'Jackson') }
329
+ let(:address) { stub_model(Spree::Address, firstname: 'Michael', lastname: 'Jackson') }
332
330
  specify { expect(address.full_name).to eq('Michael Jackson') }
333
331
  end
334
332
 
335
333
  context 'first name is blank' do
336
- let(:address) { stub_model(Spree::Address, :firstname => nil, :lastname => 'Jackson') }
334
+ let(:address) { stub_model(Spree::Address, firstname: nil, lastname: 'Jackson') }
337
335
  specify { expect(address.full_name).to eq('Jackson') }
338
336
  end
339
337
 
340
338
  context 'last name is blank' do
341
- let(:address) { stub_model(Spree::Address, :firstname => 'Michael', :lastname => nil) }
339
+ let(:address) { stub_model(Spree::Address, firstname: 'Michael', lastname: nil) }
342
340
  specify { expect(address.full_name).to eq('Michael') }
343
341
  end
344
342
 
345
343
  context 'both first and last names are blank' do
346
- let(:address) { stub_model(Spree::Address, :firstname => nil, :lastname => nil) }
344
+ let(:address) { stub_model(Spree::Address, firstname: nil, lastname: nil) }
347
345
  specify { expect(address.full_name).to eq('') }
348
346
  end
349
-
350
347
  end
351
348
 
352
349
  context '#state_text' do
353
350
  context 'state is blank' do
354
- let(:address) { stub_model(Spree::Address, :state => nil, :state_name => 'virginia') }
351
+ let(:address) { stub_model(Spree::Address, state: nil, state_name: 'virginia') }
355
352
  specify { expect(address.state_text).to eq('virginia') }
356
353
  end
357
354
 
358
355
  context 'both name and abbr is present' do
359
- let(:state) { stub_model(Spree::State, :name => 'virginia', :abbr => 'va') }
360
- let(:address) { stub_model(Spree::Address, :state => state) }
356
+ let(:state) { stub_model(Spree::State, name: 'virginia', abbr: 'va') }
357
+ let(:address) { stub_model(Spree::Address, state: state) }
361
358
  specify { expect(address.state_text).to eq('va') }
362
359
  end
363
360
 
364
361
  context 'only name is present' do
365
- let(:state) { stub_model(Spree::State, :name => 'virginia', :abbr => nil) }
366
- let(:address) { stub_model(Spree::Address, :state => state) }
362
+ let(:state) { stub_model(Spree::State, name: 'virginia', abbr: nil) }
363
+ let(:address) { stub_model(Spree::Address, state: state) }
367
364
  specify { expect(address.state_text).to eq('virginia') }
368
365
  end
369
366
  end
@@ -371,6 +368,6 @@ describe Spree::Address, :type => :model do
371
368
  context '#requires_phone' do
372
369
  subject { described_class.new }
373
370
 
374
- it { is_expected.to be_require_phone }
371
+ it { is_expected.to be_require_phone }
375
372
  end
376
373
  end
@@ -1,11 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Spree::AdjustmentReason do
4
-
5
4
  describe 'creation' do
6
5
  it 'is successful' do
7
6
  create(:adjustment_reason)
8
7
  end
9
8
  end
10
-
11
9
  end
@@ -3,8 +3,8 @@
3
3
 
4
4
  require 'spec_helper'
5
5
 
6
- describe Spree::Adjustment, :type => :model do
7
-
6
+ describe Spree::Adjustment, type: :model do
7
+ let!(:store) { create :store }
8
8
  let(:order) { Spree::Order.new }
9
9
  let(:line_item) { create :line_item, order: order }
10
10
 
@@ -1,8 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::AppConfiguration, :type => :model do
4
-
5
- let (:prefs) { Rails.application.config.spree.preferences }
3
+ describe Spree::AppConfiguration, type: :model do
4
+ let(:prefs) { Rails.application.config.spree.preferences }
6
5
 
7
6
  it "should be available from the environment" do
8
7
  prefs.layout = "my/layout"
@@ -21,8 +20,39 @@ describe Spree::AppConfiguration, :type => :model do
21
20
  expect(prefs.variant_search_class).to eq Spree::Core::Search::Variant
22
21
  end
23
22
 
23
+ it "uses variant pricer class by default" do
24
+ expect(prefs.variant_pricer_class).to eq Spree::Variant::Pricer
25
+ end
26
+
27
+ it "has a getter for the pricing options class provided by the variant pricer class" do
28
+ expect(prefs.pricing_options_class).to eq Spree::Variant::Pricer.pricing_options_class
29
+ end
30
+
31
+ it "has an instacached getter for the default pricing options" do
32
+ expect(prefs.default_pricing_options).to be_a Spree::Variant::Pricer.pricing_options_class
33
+ expect(prefs.default_pricing_options.object_id).to eq prefs.default_pricing_options.object_id
34
+ end
35
+
24
36
  describe '#stock' do
25
37
  subject { prefs.stock }
26
38
  it { is_expected.to be_a Spree::Core::StockConfiguration }
27
39
  end
40
+
41
+ describe '@default_country_iso_code' do
42
+ it 'is the USA by default' do
43
+ expect(prefs[:default_country_iso]).to eq("US")
44
+ end
45
+ end
46
+
47
+ describe '@admin_vat_country_iso' do
48
+ it 'is `nil` by default' do
49
+ expect(prefs[:admin_vat_country_iso]).to eq(nil)
50
+ end
51
+ end
52
+
53
+ it 'has a default admin VAT location with nil values by default' do
54
+ expect(prefs.admin_vat_location).to eq(Spree::Tax::TaxLocation.new)
55
+ expect(prefs.admin_vat_location.state_id).to eq(nil)
56
+ expect(prefs.admin_vat_location.country_id).to eq(nil)
57
+ end
28
58
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Asset, :type => :model do
3
+ describe Spree::Asset, type: :model do
4
4
  describe "#viewable" do
5
5
  it "touches association" do
6
6
  product = build(:custom_product)
@@ -20,5 +20,4 @@ describe Spree::Asset, :type => :model do
20
20
  expect(asset2.position).to eq 1
21
21
  end
22
22
  end
23
-
24
23
  end
@@ -1,30 +1,39 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Calculator::DefaultTax, :type => :model do
4
- let!(:country) { create(:country) }
5
- let!(:zone) { create(:zone, :name => "Country Zone", :default_tax => true, :zone_members => []) }
6
- let!(:tax_category) { create(:tax_category, :tax_rates => []) }
7
- let!(:rate) { create(:tax_rate, :tax_category => tax_category, :amount => 0.05, :included_in_price => included_in_price) }
3
+ describe Spree::Calculator::DefaultTax, type: :model do
4
+ let(:address) { create(:address) }
5
+ let!(:zone) { create(:zone, name: "Country Zone", default_tax: true, countries: [tax_rate_country]) }
6
+ let(:tax_rate_country) { address.country }
7
+ let(:tax_category) { create(:tax_category) }
8
+ let!(:rate) { create(:tax_rate, tax_category: tax_category, amount: 0.05, included_in_price: included_in_price, zone: zone) }
8
9
  let(:included_in_price) { false }
9
- let!(:calculator) { Spree::Calculator::DefaultTax.new(:calculable => rate ) }
10
- let!(:order) { create(:order) }
11
- let!(:line_item) { create(:line_item, :price => 10, :quantity => 3, :tax_category => tax_category) }
12
- let!(:shipment) { create(:shipment, :cost => 15) }
10
+ subject(:calculator) { Spree::Calculator::DefaultTax.new(calculable: rate ) }
13
11
 
14
12
  context "#compute" do
15
13
  context "when given an order" do
16
- let!(:line_item_1) { line_item }
17
- let!(:line_item_2) { create(:line_item, :price => 10, :quantity => 3, :tax_category => tax_category) }
14
+ let(:order) do
15
+ create(
16
+ :order_with_line_items,
17
+ line_items_attributes: [
18
+ { price: 10, quantity: 3, tax_category: tax_category }.merge(line_item_one_options),
19
+ { price: 10, quantity: 3, tax_category: tax_category }.merge(line_item_two_options)
20
+ ],
21
+ ship_address: address
22
+ )
23
+ end
24
+ let(:line_item_one_options) { {} }
25
+ let(:line_item_two_options) { {} }
18
26
 
19
- before do
20
- allow(order).to receive_messages :line_items => [line_item_1, line_item_2]
27
+ context "when all items matches the rate's tax category" do
28
+ it "should be equal to the sum of the item totals * rate" do
29
+ expect(calculator.compute(order)).to eq(3)
30
+ end
21
31
  end
22
32
 
23
33
  context "when no line items match the tax category" do
24
- before do
25
- line_item_1.tax_category = nil
26
- line_item_2.tax_category = nil
27
- end
34
+ let(:other_tax_category) { create(:tax_category) }
35
+ let(:line_item_one_options) { { tax_category: other_tax_category } }
36
+ let(:line_item_two_options) { { tax_category: other_tax_category } }
28
37
 
29
38
  it "should be 0" do
30
39
  expect(calculator.compute(order)).to eq(0)
@@ -32,32 +41,20 @@ describe Spree::Calculator::DefaultTax, :type => :model do
32
41
  end
33
42
 
34
43
  context "when one item matches the tax category" do
35
- before do
36
- line_item_1.tax_category = tax_category
37
- line_item_2.tax_category = nil
38
- end
44
+ let(:other_tax_category) { create(:tax_category) }
45
+ let(:line_item_two_options) { { tax_category: other_tax_category } }
39
46
 
40
47
  it "should be equal to the item total * rate" do
41
48
  expect(calculator.compute(order)).to eq(1.5)
42
49
  end
43
50
 
44
51
  context "correctly rounds to within two decimal places" do
45
- before do
46
- line_item_1.price = 10.333
47
- line_item_1.quantity = 1
48
- end
52
+ let(:line_item_one_options) { { price: 10.333, quantity: 1 } }
49
53
 
50
54
  specify do
51
55
  # Amount is 0.51665, which will be rounded to...
52
56
  expect(calculator.compute(order)).to eq(0.52)
53
57
  end
54
-
55
- end
56
- end
57
-
58
- context "when more than one item matches the tax category" do
59
- it "should be equal to the sum of the item totals * rate" do
60
- expect(calculator.compute(order)).to eq(3)
61
58
  end
62
59
  end
63
60
 
@@ -71,57 +68,149 @@ describe Spree::Calculator::DefaultTax, :type => :model do
71
68
  # 60 - 57.14 = $2.86
72
69
  expect(calculator.compute(order).to_f).to eql 2.86
73
70
  end
71
+
72
+ context "when the order's tax address is outside the default VAT zone" do
73
+ let(:order_zone) { create(:zone, countries: [address.country]) }
74
+ let(:default_vat_country) { create(:country, iso: "DE") }
75
+
76
+ before do
77
+ rate.zone.update(countries: [default_vat_country])
78
+ # The order has to be reloaded here because of tax zone caching.
79
+ order.reload
80
+ end
81
+
82
+ it 'creates a negative amount, indicating a VAT refund' do
83
+ expect(subject.compute(order)).to eq(-2.86)
84
+ end
85
+ end
74
86
  end
75
87
  end
88
+ end
89
+
90
+ shared_examples_for 'computing any item' do
91
+ let(:promo_total) { 0 }
92
+ let(:order) { build_stubbed(:order, ship_address: address) }
76
93
 
77
94
  context "when tax is included in price" do
78
95
  let(:included_in_price) { true }
96
+
79
97
  context "when the variant matches the tax category" do
98
+ it "should be equal to the item's full price * rate" do
99
+ expect(calculator.compute(item)).to eql 1.43
100
+ end
80
101
 
81
102
  context "when line item is discounted" do
82
- before do
83
- line_item.promo_total = -1
84
- Spree::TaxRate.store_pre_tax_amount(line_item, [rate])
85
- end
103
+ let(:promo_total) { -1 }
86
104
 
87
105
  it "should be equal to the item's discounted total * rate" do
88
- expect(calculator.compute(line_item)).to eql 1.38
106
+ expect(calculator.compute(item)).to eql 1.38
89
107
  end
90
108
  end
91
109
 
92
- it "should be equal to the item's full price * rate" do
93
- Spree::TaxRate.store_pre_tax_amount(line_item, [rate])
94
- expect(calculator.compute(line_item)).to eql 1.43
110
+ context "when the order's tax address is outside the default VAT zone" do
111
+ let!(:order_zone) { create(:zone, countries: [address.country]) }
112
+ let(:default_vat_country) { create(:country, iso: "DE") }
113
+
114
+ before do
115
+ rate.zone.update(countries: [default_vat_country])
116
+ end
117
+
118
+ it 'creates a negative amount, indicating a VAT refund' do
119
+ expect(subject.compute(item)).to eq(-1.43)
120
+ end
95
121
  end
96
122
  end
97
123
  end
98
124
 
99
125
  context "when tax is not included in price" do
100
126
  context "when the line item is discounted" do
101
- before { line_item.promo_total = -1 }
127
+ let(:promo_total) { -1 }
102
128
 
103
129
  it "should be equal to the item's pre-tax total * rate" do
104
- expect(calculator.compute(line_item)).to eq(1.45)
130
+ expect(calculator.compute(item)).to eq(1.45)
105
131
  end
106
132
  end
107
133
 
108
134
  context "when the variant matches the tax category" do
109
135
  it "should be equal to the item pre-tax total * rate" do
110
- expect(calculator.compute(line_item)).to eq(1.50)
136
+ expect(calculator.compute(item)).to eq(1.50)
111
137
  end
112
138
  end
113
139
  end
140
+ end
114
141
 
115
- context "when given a shipment" do
116
- it "should be 5% of 15" do
117
- expect(calculator.compute(shipment)).to eq(0.75)
118
- end
142
+ describe 'when given a line item' do
143
+ let(:item) do
144
+ build_stubbed(
145
+ :line_item,
146
+ price: 10,
147
+ quantity: 3,
148
+ promo_total: promo_total,
149
+ order: order,
150
+ tax_category: tax_category
151
+ )
152
+ end
119
153
 
120
- it "takes discounts into consideration" do
121
- shipment.promo_total = -1
122
- # 5% of 14
123
- expect(calculator.compute(shipment)).to eq(0.7)
124
- end
154
+ it_behaves_like 'computing any item'
155
+ end
156
+
157
+ describe 'when given a shipment' do
158
+ let(:shipping_method) do
159
+ build_stubbed(
160
+ :shipping_method,
161
+ tax_category: tax_category
162
+ )
125
163
  end
164
+
165
+ let(:shipping_rate) do
166
+ build_stubbed(
167
+ :shipping_rate,
168
+ selected: true,
169
+ shipping_method: shipping_method
170
+ )
171
+ end
172
+
173
+ let(:item) do
174
+ build_stubbed(
175
+ :shipment,
176
+ cost: 30,
177
+ promo_total: promo_total,
178
+ order: order,
179
+ shipping_rates: [shipping_rate]
180
+ )
181
+ end
182
+
183
+ it_behaves_like 'computing any item'
184
+ end
185
+
186
+ describe 'when given a shipping rate' do
187
+ let(:shipping_method) do
188
+ build_stubbed(
189
+ :shipping_method,
190
+ tax_category: tax_category
191
+ )
192
+ end
193
+
194
+ let(:shipment) do
195
+ build_stubbed(
196
+ :shipment,
197
+ order: order
198
+ )
199
+ end
200
+
201
+ let(:item) do
202
+ # cost and discounted_amount for shipping rates are the same as they
203
+ # can not be discounted. for the sake of passing tests, the cost is
204
+ # adjusted here.
205
+ build_stubbed(
206
+ :shipping_rate,
207
+ cost: 30 + promo_total,
208
+ selected: true,
209
+ shipping_method: shipping_method,
210
+ shipment: shipment
211
+ )
212
+ end
213
+
214
+ it_behaves_like 'computing any item'
126
215
  end
127
216
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Calculator::FlatPercentItemTotal, :type => :model do
3
+ describe Spree::Calculator::FlatPercentItemTotal, type: :model do
4
4
  let(:calculator) { Spree::Calculator::FlatPercentItemTotal.new }
5
5
  let(:line_item) { mock_model Spree::LineItem }
6
6
 
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Calculator::FlexiRate, :type => :model do
3
+ describe Spree::Calculator::FlexiRate, type: :model do
4
4
  let(:calculator) { Spree::Calculator::FlexiRate.new }
5
5
 
6
6
  let(:order) do
@@ -15,27 +15,27 @@ describe Spree::Calculator::FlexiRate, :type => :model do
15
15
  end
16
16
 
17
17
  it "should compute amount correctly when first_item has a value" do
18
- allow(calculator).to receive_messages :preferred_first_item => 1.0
18
+ allow(calculator).to receive_messages preferred_first_item: 1.0
19
19
  expect(calculator.compute(order).round(2)).to eq(1.0)
20
20
  end
21
21
 
22
22
  it "should compute amount correctly when additional_items has a value" do
23
- allow(calculator).to receive_messages :preferred_additional_item => 1.0
23
+ allow(calculator).to receive_messages preferred_additional_item: 1.0
24
24
  expect(calculator.compute(order).round(2)).to eq(9.0)
25
25
  end
26
26
 
27
27
  it "should compute amount correctly when additional_items and first_item have values" do
28
- allow(calculator).to receive_messages :preferred_first_item => 5.0, :preferred_additional_item => 1.0
28
+ allow(calculator).to receive_messages preferred_first_item: 5.0, preferred_additional_item: 1.0
29
29
  expect(calculator.compute(order).round(2)).to eq(14.0)
30
30
  end
31
31
 
32
32
  it "should compute amount correctly when additional_items and first_item have values AND max items has value" do
33
- allow(calculator).to receive_messages :preferred_first_item => 5.0, :preferred_additional_item => 1.0, :preferred_max_items => 3
33
+ allow(calculator).to receive_messages preferred_first_item: 5.0, preferred_additional_item: 1.0, preferred_max_items: 3
34
34
  expect(calculator.compute(order).round(2)).to eq(7.0)
35
35
  end
36
36
 
37
37
  it "should allow creation of new object with all the attributes" do
38
- Spree::Calculator::FlexiRate.new(:preferred_first_item => 1, :preferred_additional_item => 1, :preferred_max_items => 1)
38
+ Spree::Calculator::FlexiRate.new(preferred_first_item: 1, preferred_additional_item: 1, preferred_max_items: 1)
39
39
  end
40
40
  end
41
41
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  module Spree
4
4
  class Calculator
5
- describe PercentOnLineItem, :type => :model do
5
+ describe PercentOnLineItem, type: :model do
6
6
  let(:line_item) { double("LineItem", amount: 100) }
7
7
 
8
8
  before { subject.preferred_percent = 15 }
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Calculator::PriceSack, :type => :model do
3
+ describe Spree::Calculator::PriceSack, type: :model do
4
4
  let(:calculator) do
5
5
  calculator = Spree::Calculator::PriceSack.new
6
6
  calculator.preferred_minimal_amount = 5
@@ -10,7 +10,7 @@ describe Spree::Calculator::PriceSack, :type => :model do
10
10
  end
11
11
 
12
12
  let(:order) { stub_model(Spree::Order) }
13
- let(:shipment) { stub_model(Spree::Shipment, :amount => 10) }
13
+ let(:shipment) { stub_model(Spree::Shipment, amount: 10) }
14
14
 
15
15
  # Regression test for https://github.com/spree/spree/issues/714 and https://github.com/spree/spree/issues/739
16
16
  it "computes with an order object" do