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
@@ -2,15 +2,16 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- describe Spree::Taxon, :type => :model do
6
- let(:taxon) { FactoryGirl.build(:taxon, :name => "Ruby on Rails") }
7
-
5
+ describe Spree::Taxon, type: :model do
8
6
  describe '#to_param' do
7
+ let(:taxon) { FactoryGirl.build(:taxon, name: "Ruby on Rails") }
8
+
9
9
  subject { super().to_param }
10
10
  it { is_expected.to eql taxon.permalink }
11
11
  end
12
12
 
13
13
  context "set_permalink" do
14
+ let(:taxon) { FactoryGirl.build(:taxon, name: "Ruby on Rails") }
14
15
 
15
16
  it "should set permalink correctly when no parent present" do
16
17
  taxon.set_permalink
@@ -24,7 +25,7 @@ describe Spree::Taxon, :type => :model do
24
25
  end
25
26
 
26
27
  context "with parent taxon" do
27
- let(:parent) { FactoryGirl.build(:taxon, :permalink => "brands") }
28
+ let(:parent) { FactoryGirl.build(:taxon, permalink: "brands") }
28
29
  before { allow(taxon).to receive_messages parent: parent }
29
30
 
30
31
  it "should set permalink correctly when taxon has parent" do
@@ -59,7 +60,70 @@ describe Spree::Taxon, :type => :model do
59
60
  end
60
61
  end
61
62
  end
63
+ end
64
+ end
65
+
66
+ context "updating permalink" do
67
+ let(:taxonomy) { create(:taxonomy, name: 't') }
68
+ let(:root) { taxonomy.root }
69
+ let(:taxon1) { create(:taxon, name: 't1', taxonomy: taxonomy, parent: root) }
70
+ let(:taxon2) { create(:taxon, name: 't2', taxonomy: taxonomy, parent: root) }
71
+ let(:taxon2_child) { create(:taxon, name: 't2_child', taxonomy: taxonomy, parent: taxon2) }
72
+
73
+ context "changing parent" do
74
+ subject do
75
+ -> { taxon2.update!(parent: taxon1) }
76
+ end
77
+
78
+ it "changes own permalink" do
79
+ is_expected.to change{ taxon2.reload.permalink }.from('t/t2').to('t/t1/t2')
80
+ end
81
+
82
+ it "changes child's permalink" do
83
+ is_expected.to change{ taxon2_child.reload.permalink }.from('t/t2/t2-child').to('t/t1/t2/t2-child')
84
+ end
85
+ end
86
+
87
+ context "changing own permalink" do
88
+ subject do
89
+ -> { taxon2.update!(permalink: 'foo') }
90
+ end
91
+
92
+ it "changes own permalink" do
93
+ is_expected.to change{ taxon2.reload.permalink }.from('t/t2').to('t/foo')
94
+ end
62
95
 
96
+ it "changes child's permalink" do
97
+ is_expected.to change{ taxon2_child.reload.permalink }.from('t/t2/t2-child').to('t/foo/t2-child')
98
+ end
99
+ end
100
+
101
+ context "changing own permalink part" do
102
+ subject do
103
+ -> { taxon2.update!(permalink_part: 'foo') }
104
+ end
105
+
106
+ it "changes own permalink" do
107
+ is_expected.to change{ taxon2.reload.permalink }.from('t/t2').to('t/foo')
108
+ end
109
+
110
+ it "changes child's permalink" do
111
+ is_expected.to change{ taxon2_child.reload.permalink }.from('t/t2/t2-child').to('t/foo/t2-child')
112
+ end
113
+ end
114
+
115
+ context "changing parent and own permalink" do
116
+ subject do
117
+ -> { taxon2.update!(parent: taxon1, permalink: 'foo') }
118
+ end
119
+
120
+ it "changes own permalink" do
121
+ is_expected.to change{ taxon2.reload.permalink }.from('t/t2').to('t/t1/foo')
122
+ end
123
+
124
+ it "changes child's permalink" do
125
+ is_expected.to change{ taxon2_child.reload.permalink }.from('t/t2/t2-child').to('t/t1/foo/t2-child')
126
+ end
63
127
  end
64
128
  end
65
129
 
@@ -68,7 +132,7 @@ describe Spree::Taxon, :type => :model do
68
132
  let(:taxonomy) { create(:taxonomy) }
69
133
 
70
134
  it "does not error out" do
71
- taxonomy.root.children.unscoped.where(:name => "Some name").first_or_create
135
+ taxonomy.root.children.unscoped.where(name: "Some name").first_or_create
72
136
  end
73
137
  end
74
138
  end
@@ -1,11 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Taxonomy, :type => :model do
3
+ describe Spree::Taxonomy, type: :model do
4
4
  context "#destroy" do
5
5
  before do
6
6
  @taxonomy = create(:taxonomy)
7
7
  @root_taxon = @taxonomy.root
8
- @child_taxon = create(:taxon, :taxonomy_id => @taxonomy.id, :parent => @root_taxon)
8
+ @child_taxon = create(:taxon, taxonomy_id: @taxonomy.id, parent: @root_taxon)
9
9
  end
10
10
 
11
11
  it "should destroy all associated taxons" do
@@ -15,4 +15,3 @@ describe Spree::Taxonomy, :type => :model do
15
15
  end
16
16
  end
17
17
  end
18
-
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Tracker, :type => :model do
3
+ describe Spree::Tracker, type: :model do
4
4
  describe "current" do
5
5
  before(:each) { @tracker = create(:tracker) }
6
6
 
@@ -232,7 +232,7 @@ describe Spree::TransferItem do
232
232
  context "scopes" do
233
233
  let(:partially_received) { stock_transfer.transfer_items.first }
234
234
  let(:fully_received) { stock_transfer.transfer_items.last }
235
- let(:variant) { create(:variant)}
235
+ let(:variant) { create(:variant) }
236
236
 
237
237
  before do
238
238
  fully_received.update_attributes(expected_quantity: 1, received_quantity: 1)
@@ -12,7 +12,7 @@ describe Spree::UnitCancel do
12
12
 
13
13
  adjustment = Spree::Adjustment.last
14
14
  expect(adjustment.adjustable).to eq inventory_unit.line_item
15
- expect(adjustment.amount).to eq -10.0
15
+ expect(adjustment.amount).to eq(-10.0)
16
16
  expect(adjustment.order).to eq inventory_unit.order
17
17
  expect(adjustment.label).to eq "Cancellation - Short Ship"
18
18
  expect(adjustment).to be_eligible
@@ -36,7 +36,7 @@ describe Spree::UnitCancel do
36
36
 
37
37
  context "all inventory on the line item are not canceled" do
38
38
  it "divides the line item total by the inventory units size" do
39
- expect(subject).to eq -5.0
39
+ expect(subject).to eq(-5.0)
40
40
  end
41
41
  end
42
42
 
@@ -44,7 +44,7 @@ describe Spree::UnitCancel do
44
44
  before { inventory_unit2.cancel! }
45
45
 
46
46
  it "divides the line item total by the uncanceled units size" do
47
- expect(subject).to eq -10.0
47
+ expect(subject).to eq(-10.0)
48
48
  end
49
49
  end
50
50
 
@@ -68,12 +68,8 @@ describe Spree::UnitCancel do
68
68
  end
69
69
 
70
70
  before do
71
- @old_expedited_exchanges_value = Spree::Config[:expedited_exchanges]
72
71
  Spree::Config[:expedited_exchanges] = true
73
72
  end
74
- after do
75
- Spree::Config[:expedited_exchanges] = @old_expedited_exchanges_value
76
- end
77
73
 
78
74
  # This sets up an order with one shipped inventory unit, one unshipped
79
75
  # inventory unit, and one unshipped exchange inventory unit.
@@ -95,7 +91,7 @@ describe Spree::UnitCancel do
95
91
  inventory_units: [@shipped_inventory_unit],
96
92
  stock_location: @shipment.stock_location,
97
93
  address: order.ship_address,
98
- shipping_method: @shipment.shipping_method,
94
+ shipping_method: @shipment.shipping_method
99
95
  )
100
96
 
101
97
  # Create an expedited exchange for the shipped inventory unit.
@@ -107,9 +103,9 @@ describe Spree::UnitCancel do
107
103
  return_items: [
108
104
  Spree::ReturnItem.new(
109
105
  inventory_unit: @shipped_inventory_unit,
110
- exchange_variant: exchange_variant,
111
- ),
112
- ],
106
+ exchange_variant: exchange_variant
107
+ )
108
+ ]
113
109
  )
114
110
  @exchange_inventory_unit = order.inventory_units.reload[2]
115
111
  end
@@ -122,7 +118,7 @@ describe Spree::UnitCancel do
122
118
  let(:unit_cancel) do
123
119
  Spree::UnitCancel.create!(
124
120
  inventory_unit: @unshipped_inventory_unit,
125
- reason: Spree::UnitCancel::SHORT_SHIP,
121
+ reason: Spree::UnitCancel::SHORT_SHIP
126
122
  )
127
123
  end
128
124
 
@@ -137,7 +133,7 @@ describe Spree::UnitCancel do
137
133
  let(:unit_cancel) do
138
134
  Spree::UnitCancel.create!(
139
135
  inventory_unit: @exchange_inventory_unit,
140
- reason: Spree::UnitCancel::SHORT_SHIP,
136
+ reason: Spree::UnitCancel::SHORT_SHIP
141
137
  )
142
138
  end
143
139
 
@@ -145,5 +141,4 @@ describe Spree::UnitCancel do
145
141
  end
146
142
  end
147
143
  end
148
-
149
144
  end
@@ -1,12 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::LegacyUser, :type => :model do
3
+ describe Spree::LegacyUser, type: :model do
4
4
  context "#last_incomplete_order" do
5
5
  let!(:user) { create(:user) }
6
6
 
7
-
8
7
  it "excludes orders that are not frontend_viewable" do
9
- order = create(:order, user: user, frontend_viewable: false)
8
+ create(:order, user: user, frontend_viewable: false)
10
9
  expect(user.last_incomplete_spree_order).to eq nil
11
10
  end
12
11
 
@@ -18,51 +17,45 @@ describe Spree::LegacyUser, :type => :model do
18
17
  it "can scope to a store" do
19
18
  store = create(:store)
20
19
  store_1_order = create(:order, user: user, store: store)
21
- store_2_order = create(:order, user: user, store: create(:store))
20
+ create(:order, user: user, store: create(:store))
22
21
  expect(user.last_incomplete_spree_order(store: store)).to eq store_1_order
23
22
  end
24
23
 
25
24
  it "excludes completed orders" do
26
- order = create(:completed_order_with_totals, user: user, created_by: user)
25
+ create(:completed_order_with_totals, user: user, created_by: user)
27
26
  expect(user.last_incomplete_spree_order).to eq nil
28
27
  end
29
28
 
30
29
  it "excludes orders created prior to the user's last completed order" do
31
- incomplete_order = create(:order, user: user, created_by: user, created_at: 1.second.ago)
32
- completed_order = create(:completed_order_with_totals, user: user, created_by: user)
30
+ create(:order, user: user, created_by: user, created_at: 1.second.ago)
31
+ create(:completed_order_with_totals, user: user, created_by: user)
33
32
  expect(user.last_incomplete_spree_order).to eq nil
34
33
  end
35
34
 
36
35
  context "with completable_order_created_cutoff set" do
37
36
  before do
38
- @original_order_cutoff_preference = Spree::Config.completable_order_created_cutoff_days
39
37
  Spree::Config.completable_order_created_cutoff_days = 1
40
38
  end
41
39
 
42
- after { Spree::Config.completable_order_created_cutoff_days = @original_order_cutoff_preference }
43
-
44
40
  it "excludes orders updated outside of the cutoff date" do
45
- incomplete_order = create(:order, user: user, created_by: user, created_at: 3.days.ago, updated_at: 2.days.ago)
41
+ create(:order, user: user, created_by: user, created_at: 3.days.ago, updated_at: 2.days.ago)
46
42
  expect(user.last_incomplete_spree_order).to eq nil
47
43
  end
48
44
  end
49
45
 
50
46
  context "with completable_order_created_cutoff set" do
51
47
  before do
52
- @original_order_cutoff_preference = Spree::Config.completable_order_updated_cutoff_days
53
48
  Spree::Config.completable_order_updated_cutoff_days = 1
54
49
  end
55
50
 
56
- after { Spree::Config.completable_order_updated_cutoff_days = @original_order_cutoff_preference }
57
-
58
51
  it "excludes orders updated outside of the cutoff date" do
59
- incomplete_order = create(:order, user: user, created_by: user, created_at: 3.days.ago, updated_at: 2.days.ago)
52
+ create(:order, user: user, created_by: user, created_at: 3.days.ago, updated_at: 2.days.ago)
60
53
  expect(user.last_incomplete_spree_order).to eq nil
61
54
  end
62
55
  end
63
56
 
64
57
  it "chooses the most recently created incomplete order" do
65
- order_1 = create(:order, user: user, created_at: 1.second.ago)
58
+ create(:order, user: user, created_at: 1.second.ago)
66
59
  order_2 = create(:order, user: user)
67
60
  expect(user.last_incomplete_spree_order).to eq order_2
68
61
  end
@@ -103,14 +96,16 @@ describe Spree::LegacyUser, :type => :model do
103
96
  end
104
97
 
105
98
  it "drops payment source" do
106
- user.drop_payment_source cc
99
+ ActiveSupport::Deprecation.silence do
100
+ user.drop_payment_source cc
101
+ end
107
102
  expect(cc.gateway_customer_profile_id).to be_nil
108
103
  end
109
104
  end
110
105
  end
111
106
  end
112
107
 
113
- describe Spree.user_class, :type => :model do
108
+ describe Spree.user_class, type: :model do
114
109
  context "reporting" do
115
110
  let(:order_value) { BigDecimal.new("80.94") }
116
111
  let(:order_count) { 4 }
@@ -129,7 +124,7 @@ describe Spree.user_class, :type => :model do
129
124
  context "with orders" do
130
125
  before { load_orders }
131
126
  it "returns the total of completed orders for the user" do
132
- expect(subject.lifetime_value).to eq (order_count * order_value)
127
+ expect(subject.lifetime_value).to eq(order_count * order_value)
133
128
  end
134
129
  end
135
130
  context "without orders" do
@@ -207,13 +202,13 @@ describe Spree.user_class, :type => :model do
207
202
  before { additional_store_credit.update_attributes(amount_authorized: authorized_amount) }
208
203
 
209
204
  it "returns sum of amounts minus used amount and authorized amount" do
210
- expect(subject.total_available_store_credit.to_f).to eq (amount + additional_amount - amount_used - authorized_amount)
205
+ expect(subject.total_available_store_credit.to_f).to eq(amount + additional_amount - amount_used - authorized_amount)
211
206
  end
212
207
  end
213
208
 
214
209
  context "there are no authorized amounts on any of the store credits" do
215
210
  it "returns sum of amounts minus used amount" do
216
- expect(subject.total_available_store_credit.to_f).to eq (amount + additional_amount - amount_used)
211
+ expect(subject.total_available_store_credit.to_f).to eq(amount + additional_amount - amount_used)
217
212
  end
218
213
  end
219
214
  end
@@ -225,20 +220,20 @@ describe Spree.user_class, :type => :model do
225
220
  before { additional_store_credit.update_attributes(amount_authorized: authorized_amount) }
226
221
 
227
222
  it "returns sum of amounts minus authorized amount" do
228
- expect(subject.total_available_store_credit.to_f).to eq (amount + additional_amount - authorized_amount)
223
+ expect(subject.total_available_store_credit.to_f).to eq(amount + additional_amount - authorized_amount)
229
224
  end
230
225
  end
231
226
 
232
227
  context "there are no authorized amounts on any of the store credits" do
233
228
  it "returns sum of amounts" do
234
- expect(subject.total_available_store_credit.to_f).to eq (amount + additional_amount)
229
+ expect(subject.total_available_store_credit.to_f).to eq(amount + additional_amount)
235
230
  end
236
231
  end
237
232
  end
238
233
 
239
234
  context "all store credits have never been used or authorized" do
240
235
  it "returns sum of amounts" do
241
- expect(subject.total_available_store_credit.to_f).to eq (amount + additional_amount)
236
+ expect(subject.total_available_store_credit.to_f).to eq(amount + additional_amount)
242
237
  end
243
238
  end
244
239
  end
@@ -9,7 +9,7 @@ describe Spree::Validations::DbMaximumLengthValidator, type: :model do
9
9
  end
10
10
  let(:limit) { 255 }
11
11
  let(:product) { Spree::Product.new }
12
- let(:slug) { "x" * (limit + 1)}
12
+ let(:slug) { "x" * (limit + 1) }
13
13
 
14
14
  before do
15
15
  product.slug = slug
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::Variant::Pricer do
4
+ let(:variant) { build_stubbed(:variant) }
5
+
6
+ subject { described_class.new(variant) }
7
+
8
+ it { is_expected.to respond_to(:variant) }
9
+ it { is_expected.to respond_to(:price_for) }
10
+
11
+ describe ".pricing_options_class" do
12
+ it "returns the standard pricing options class" do
13
+ expect(described_class.pricing_options_class).to eq(Spree::Variant::PricingOptions)
14
+ end
15
+ end
16
+
17
+ describe "#price_for(options)" do
18
+ let(:variant) { create(:variant, price: 12.34) }
19
+
20
+ context "with the default currency" do
21
+ let(:pricing_options) { described_class.pricing_options_class.new(currency: "USD") }
22
+
23
+ it "returns the correct (default) price as a Spree::Money object" do
24
+ expect(subject.price_for(pricing_options)).to eq(Spree::Money.new(12.34, currency: "USD"))
25
+ end
26
+ end
27
+
28
+ context "with a different currency" do
29
+ let(:pricing_options) { described_class.pricing_options_class.new(currency: "EUR") }
30
+
31
+ context "when there is a price for that currency" do
32
+ before do
33
+ variant.prices.create(amount: 99.00, currency: "EUR")
34
+ end
35
+
36
+ it "returns the price in the correct currency as a Spree::Money object" do
37
+ expect(subject.price_for(pricing_options)).to eq(Spree::Money.new(99.00, currency: "EUR"))
38
+ end
39
+ end
40
+
41
+ context "when there is no price for that currency" do
42
+ it "returns nil" do
43
+ expect(subject.price_for(pricing_options)).to be_nil
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,106 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::Variant::PricingOptions do
4
+ subject { described_class.new }
5
+
6
+ context '.default_price_attributes' do
7
+ it 'can be passed into a WHERE clause on Spree::Prices' do
8
+ expect(Spree::Price.where(described_class.default_price_attributes).to_a).to eq([])
9
+ end
10
+
11
+ context "with a matching price present" do
12
+ let!(:price) { create(:price) }
13
+
14
+ it 'returns a matching price' do
15
+ expect(Spree::Price.where(described_class.default_price_attributes).to_a).to include(price)
16
+ end
17
+ end
18
+ end
19
+
20
+ context ".from_line_item" do
21
+ let(:line_item) { build_stubbed(:line_item, currency: "USD") }
22
+ subject { described_class.from_line_item(line_item) }
23
+
24
+ it "returns the order's currency" do
25
+ expect(subject.desired_attributes[:currency]).to eq("USD")
26
+ end
27
+
28
+ context "if line item has no order" do
29
+ before do
30
+ expect(line_item).to receive(:order).and_return(nil)
31
+ end
32
+
33
+ it "returns the line item's currency" do
34
+ expect(subject.desired_attributes[:currency]).to eq("USD")
35
+ end
36
+ end
37
+
38
+ context "if line item's order has no currency" do
39
+ before do
40
+ expect(line_item.order).to receive(:currency).and_return(nil)
41
+ end
42
+
43
+ it "returns the line item's currency" do
44
+ expect(subject.desired_attributes[:currency]).to eq("USD")
45
+ end
46
+ end
47
+
48
+ context "if neither order nor line item have a currency" do
49
+ before do
50
+ expect(line_item).to receive(:currency).and_return(nil)
51
+ expect(line_item).to receive(:order).and_return(nil)
52
+ expect(Spree::Config).to receive(:currency).at_least(:once).and_return("RUB")
53
+ end
54
+
55
+ it "returns the configured default currency" do
56
+ expect(subject.desired_attributes[:currency]).to eq("RUB")
57
+ end
58
+ end
59
+ end
60
+
61
+ describe '#desired_attributes' do
62
+ context "when called with no arguments" do
63
+ it "returns the default pricing options" do
64
+ expect(subject.desired_attributes).to eq(described_class.default_price_attributes)
65
+ end
66
+ end
67
+
68
+ context "when called with a different currency" do
69
+ subject { described_class.new(currency: "EUR") }
70
+
71
+ it "returns a Hash with the correct currency" do
72
+ expect(subject.desired_attributes[:currency]).to eq("EUR")
73
+ end
74
+ end
75
+ end
76
+
77
+ describe "#currency" do
78
+ context "when initialized with no currency" do
79
+ it "returns the default currency" do
80
+ expect(Spree::Config.currency).to eq("USD")
81
+ expect(subject.currency).to eq("USD")
82
+ end
83
+ end
84
+
85
+ context "when initialized with a different currency" do
86
+ subject { described_class.new(currency: "EUR") }
87
+
88
+ it "returns that currency" do
89
+ expect(subject.currency).to eq("EUR")
90
+ end
91
+ end
92
+ end
93
+
94
+ describe "#cache_key" do
95
+ it 'creates a cache key out of the values of the attributes hash' do
96
+ expect(subject.cache_key).to eq("USD")
97
+ end
98
+
99
+ context "with another currency" do
100
+ subject { described_class.new(currency: "EUR") }
101
+ it 'creates the correct cache key' do
102
+ expect(subject.cache_key).to eq("EUR")
103
+ end
104
+ end
105
+ end
106
+ end
@@ -1,29 +1,51 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "Variant scopes", :type => :model do
3
+ describe "Variant scopes", type: :model do
4
4
  let!(:product) { create(:product) }
5
- let!(:variant_1) { create(:variant, :product => product) }
6
- let!(:variant_2) { create(:variant, :product => product) }
5
+ let!(:variant_1) { create(:variant, product: product) }
6
+ let!(:variant_2) { create(:variant, product: product) }
7
+
8
+ context ".with_prices" do
9
+ context "when searching for the default pricing options" do
10
+ it "finds all variants" do
11
+ expect(Spree::Variant.with_prices).to contain_exactly(product.master, variant_1, variant_2)
12
+ end
13
+ end
14
+
15
+ context "when searching for different pricing options" do
16
+ let(:pricing_options) { Spree::Config.pricing_options_class.new(currency: "EUR") }
17
+ context "when only one variant has price in Euro" do
18
+ before do
19
+ variant_1.prices.create(amount: 99.00, currency: "EUR")
20
+ end
21
+
22
+ context "and we search for variants with only prices in Euro" do
23
+ it "finds the one variant with a price in Euro" do
24
+ expect(Spree::Variant.with_prices(pricing_options)).to contain_exactly(variant_1)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
7
30
 
8
31
  it ".descend_by_popularity" do
9
32
  # Requires a product with at least two variants, where one has a higher number of
10
33
  # orders than the other
11
34
  Spree::LineItem.delete_all # FIXME leaky database - too many line_items
12
- create(:line_item, :variant => variant_1)
35
+ create(:line_item, variant: variant_1)
13
36
  expect(Spree::Variant.descend_by_popularity.first).to eq(variant_1)
14
37
  end
15
38
 
16
-
17
39
  context "finding by option values" do
18
- let!(:option_type) { create(:option_type, :name => "bar") }
40
+ let!(:option_type) { create(:option_type, name: "bar") }
19
41
  let!(:option_value_1) do
20
- option_value = create(:option_value, :name => "foo", :option_type => option_type)
42
+ option_value = create(:option_value, name: "foo", option_type: option_type)
21
43
  variant_1.option_values << option_value
22
44
  option_value
23
45
  end
24
46
 
25
47
  let!(:option_value_2) do
26
- option_value = create(:option_value, :name => "fizz", :option_type => option_type)
48
+ option_value = create(:option_value, name: "fizz", option_type: option_type)
27
49
  variant_1.option_values << option_value
28
50
  option_value
29
51
  end
@@ -50,6 +72,7 @@ describe "Variant scopes", :type => :model do
50
72
 
51
73
  it "by mixed conditions" do
52
74
  variants = product_variants.has_option(option_type.id, "foo", option_value_2)
75
+ expect(variants).to be_empty
53
76
  end
54
77
  end
55
78
  end
@@ -53,7 +53,7 @@ describe Spree::VariantPropertyRule, type: :model do
53
53
  describe "#applies_to_variant?" do
54
54
  let(:variant_option_value_1) { create(:option_value) }
55
55
  let(:variant_option_value_2) { create(:option_value) }
56
- let!(:variant) { create(:variant, option_values: option_values)}
56
+ let!(:variant) { create(:variant, option_values: option_values) }
57
57
 
58
58
  let(:rule_option_value) { create(:option_value) }
59
59
  let(:rule) { create(:variant_property_rule, option_value: rule_option_value) }