solidus_core 1.2.3 → 1.3.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (573) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Rakefile +1 -1
  4. data/app/assets/javascripts/spree.js.coffee.erb +1 -1
  5. data/app/helpers/spree/base_helper.rb +21 -43
  6. data/app/helpers/spree/orders_helper.rb +0 -1
  7. data/app/helpers/spree/products_helper.rb +10 -12
  8. data/app/helpers/spree/taxons_helper.rb +4 -4
  9. data/app/mailers/spree/base_mailer.rb +1 -3
  10. data/app/mailers/spree/carton_mailer.rb +2 -2
  11. data/app/mailers/spree/order_mailer.rb +2 -2
  12. data/app/models/concerns/spree/adjustment_source.rb +12 -16
  13. data/app/models/concerns/spree/calculated_adjustments.rb +17 -14
  14. data/app/models/concerns/spree/default_price.rb +10 -26
  15. data/app/models/concerns/spree/display_money.rb +1 -1
  16. data/app/models/concerns/spree/ordered_property_value_list.rb +10 -12
  17. data/app/models/concerns/spree/ransackable_attributes.rb +6 -5
  18. data/app/models/concerns/spree/user_address_book.rb +87 -81
  19. data/app/models/concerns/spree/user_methods.rb +2 -2
  20. data/app/models/concerns/spree/user_payment_source.rb +12 -8
  21. data/app/models/spree/ability.rb +2 -2
  22. data/app/models/spree/address.rb +37 -38
  23. data/app/models/spree/adjustment.rb +2 -6
  24. data/app/models/spree/app_configuration.rb +60 -5
  25. data/app/models/spree/base.rb +1 -1
  26. data/app/models/spree/calculator/default_tax.rb +28 -24
  27. data/app/models/spree/calculator/flat_percent_item_total.rb +1 -1
  28. data/app/models/spree/calculator/flat_rate.rb +2 -2
  29. data/app/models/spree/calculator/flexi_rate.rb +4 -4
  30. data/app/models/spree/calculator/percent_per_item.rb +8 -9
  31. data/app/models/spree/calculator/price_sack.rb +3 -3
  32. data/app/models/spree/calculator/returns/default_refund_amount.rb +11 -12
  33. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +1 -1
  34. data/app/models/spree/calculator/shipping/flat_rate.rb +2 -2
  35. data/app/models/spree/calculator/shipping/flexi_rate.rb +3 -3
  36. data/app/models/spree/calculator/shipping/per_item.rb +1 -1
  37. data/app/models/spree/calculator/shipping/price_sack.rb +3 -3
  38. data/app/models/spree/calculator/tiered_flat_rate.rb +2 -1
  39. data/app/models/spree/calculator/tiered_percent.rb +2 -1
  40. data/app/models/spree/calculator.rb +3 -3
  41. data/app/models/spree/carton.rb +2 -2
  42. data/app/models/spree/country.rb +7 -4
  43. data/app/models/spree/credit_card.rb +26 -22
  44. data/app/models/spree/customer_return.rb +8 -7
  45. data/app/models/spree/exchange.rb +1 -9
  46. data/app/models/spree/gateway/bogus.rb +31 -31
  47. data/app/models/spree/gateway/bogus_simple.rb +6 -8
  48. data/app/models/spree/gateway.rb +9 -15
  49. data/app/models/spree/image.rb +3 -3
  50. data/app/models/spree/inventory_unit.rb +23 -23
  51. data/app/models/spree/item_adjustments.rb +3 -2
  52. data/app/models/spree/legacy_user.rb +1 -5
  53. data/app/models/spree/line_item.rb +95 -84
  54. data/app/models/spree/option_type.rb +1 -1
  55. data/app/models/spree/option_value.rb +3 -1
  56. data/app/models/spree/order/checkout.rb +45 -44
  57. data/app/models/spree/order/payments.rb +42 -45
  58. data/app/models/spree/order.rb +70 -75
  59. data/app/models/spree/order_cancellations.rb +4 -4
  60. data/app/models/spree/order_capturing.rb +3 -2
  61. data/app/models/spree/order_contents.rb +61 -59
  62. data/app/models/spree/order_inventory.rb +59 -54
  63. data/app/models/spree/order_mutex.rb +0 -1
  64. data/app/models/spree/order_shipping.rb +8 -9
  65. data/app/models/spree/order_stock_location.rb +3 -3
  66. data/app/models/spree/order_update_attributes.rb +0 -2
  67. data/app/models/spree/order_updater.rb +11 -24
  68. data/app/models/spree/payment/processing.rb +26 -37
  69. data/app/models/spree/payment.rb +68 -71
  70. data/app/models/spree/payment_method/check.rb +2 -2
  71. data/app/models/spree/payment_method/store_credit.rb +6 -7
  72. data/app/models/spree/payment_method.rb +11 -8
  73. data/app/models/spree/preferences/configuration.rb +2 -2
  74. data/app/models/spree/preferences/preferable.rb +1 -1
  75. data/app/models/spree/preferences/preferable_class_methods.rb +1 -1
  76. data/app/models/spree/preferences/scoped_store.rb +6 -5
  77. data/app/models/spree/preferences/static_model_preferences.rb +1 -1
  78. data/app/models/spree/preferences/statically_configurable.rb +2 -2
  79. data/app/models/spree/preferences/store.rb +2 -6
  80. data/app/models/spree/price.rb +17 -19
  81. data/app/models/spree/product/scopes.rb +18 -17
  82. data/app/models/spree/product.rb +28 -11
  83. data/app/models/spree/product_property.rb +2 -0
  84. data/app/models/spree/product_scope/scopes.rb +22 -22
  85. data/app/models/spree/promotion/actions/create_adjustment.rb +3 -4
  86. data/app/models/spree/promotion/actions/create_item_adjustments.rb +8 -8
  87. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +3 -3
  88. data/app/models/spree/promotion/actions/free_shipping.rb +4 -4
  89. data/app/models/spree/promotion/rules/first_order.rb +7 -6
  90. data/app/models/spree/promotion/rules/first_repeat_purchase_since.rb +2 -3
  91. data/app/models/spree/promotion/rules/item_total.rb +5 -2
  92. data/app/models/spree/promotion/rules/nth_order.rb +3 -4
  93. data/app/models/spree/promotion/rules/one_use_per_user.rb +1 -2
  94. data/app/models/spree/promotion/rules/option_value.rb +1 -2
  95. data/app/models/spree/promotion/rules/product.rb +4 -4
  96. data/app/models/spree/promotion/rules/taxon.rb +5 -5
  97. data/app/models/spree/promotion/rules/user.rb +1 -1
  98. data/app/models/spree/promotion/rules/user_logged_in.rb +1 -1
  99. data/app/models/spree/promotion.rb +8 -8
  100. data/app/models/spree/promotion_action.rb +1 -1
  101. data/app/models/spree/promotion_builder.rb +2 -2
  102. data/app/models/spree/promotion_chooser.rb +1 -0
  103. data/app/models/spree/promotion_code/code_builder.rb +3 -3
  104. data/app/models/spree/promotion_handler/cart.rb +17 -16
  105. data/app/models/spree/promotion_handler/coupon.rb +10 -14
  106. data/app/models/spree/promotion_handler/page.rb +4 -4
  107. data/app/models/spree/promotion_rule.rb +4 -3
  108. data/app/models/spree/prototype.rb +0 -1
  109. data/app/models/spree/refund.rb +3 -3
  110. data/app/models/spree/reimbursement/reimbursement_type_engine.rb +1 -3
  111. data/app/models/spree/reimbursement.rb +3 -5
  112. data/app/models/spree/reimbursement_performer.rb +0 -5
  113. data/app/models/spree/reimbursement_tax_calculator.rb +2 -7
  114. data/app/models/spree/reimbursement_type/credit.rb +1 -1
  115. data/app/models/spree/reimbursement_type/original_payment.rb +1 -1
  116. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +3 -3
  117. data/app/models/spree/reimbursement_type/store_credit.rb +1 -1
  118. data/app/models/spree/reimbursement_type.rb +1 -1
  119. data/app/models/spree/return_authorization.rb +38 -37
  120. data/app/models/spree/return_item/eligibility_validator/default.rb +4 -4
  121. data/app/models/spree/return_item/eligibility_validator/no_reimbursements.rb +0 -1
  122. data/app/models/spree/return_item/eligibility_validator/rma_required.rb +0 -1
  123. data/app/models/spree/return_item.rb +24 -23
  124. data/app/models/spree/returns_calculator.rb +1 -2
  125. data/app/models/spree/shipment.rb +80 -74
  126. data/app/models/spree/shipping_calculator.rb +4 -5
  127. data/app/models/spree/shipping_manifest.rb +3 -4
  128. data/app/models/spree/shipping_method.rb +54 -23
  129. data/app/models/spree/shipping_method_stock_location.rb +4 -0
  130. data/app/models/spree/shipping_rate.rb +24 -29
  131. data/app/models/spree/shipping_rate_tax.rb +41 -0
  132. data/app/models/spree/state.rb +1 -1
  133. data/app/models/spree/state_change.rb +1 -1
  134. data/app/models/spree/stock/availability_validator.rb +2 -2
  135. data/app/models/spree/stock/coordinator.rb +12 -13
  136. data/app/models/spree/stock/differentiator.rb +1 -0
  137. data/app/models/spree/stock/estimator.rb +18 -25
  138. data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
  139. data/app/models/spree/stock/package.rb +19 -9
  140. data/app/models/spree/stock/packer.rb +2 -3
  141. data/app/models/spree/stock/prioritizer.rb +3 -2
  142. data/app/models/spree/stock/quantifier.rb +2 -3
  143. data/app/models/spree/stock/shipping_rate_selector.rb +0 -1
  144. data/app/models/spree/stock/shipping_rate_sorter.rb +0 -1
  145. data/app/models/spree/stock/splitter/backordered.rb +0 -2
  146. data/app/models/spree/stock/splitter/base.rb +3 -2
  147. data/app/models/spree/stock/splitter/shipping_category.rb +2 -1
  148. data/app/models/spree/stock/splitter/weight.rb +2 -2
  149. data/app/models/spree/stock_item.rb +36 -37
  150. data/app/models/spree/stock_location.rb +17 -13
  151. data/app/models/spree/stock_movement.rb +1 -3
  152. data/app/models/spree/stock_transfer.rb +8 -8
  153. data/app/models/spree/store.rb +6 -0
  154. data/app/models/spree/store_credit.rb +24 -24
  155. data/app/models/spree/store_credit_category.rb +1 -2
  156. data/app/models/spree/tax/item_adjuster.rb +37 -0
  157. data/app/models/spree/tax/order_adjuster.rb +38 -0
  158. data/app/models/spree/tax/shipping_rate_taxer.rb +31 -0
  159. data/app/models/spree/tax/tax_helpers.rb +49 -0
  160. data/app/models/spree/tax/tax_location.rb +33 -0
  161. data/app/models/spree/tax_category.rb +1 -1
  162. data/app/models/spree/tax_rate.rb +46 -111
  163. data/app/models/spree/taxon.rb +36 -12
  164. data/app/models/spree/taxonomy.rb +10 -10
  165. data/app/models/spree/validations/db_maximum_length_validator.rb +0 -1
  166. data/app/models/spree/variant/pricer.rb +19 -0
  167. data/app/models/spree/variant/pricing_options.rb +31 -0
  168. data/app/models/spree/variant/scopes.rb +9 -9
  169. data/app/models/spree/variant.rb +95 -89
  170. data/app/models/spree/variant_property_rule.rb +1 -1
  171. data/app/models/spree/variant_property_rule_value.rb +2 -0
  172. data/app/models/spree/zone.rb +60 -24
  173. data/config/initializers/friendly_id.rb +1 -1
  174. data/config/locales/en.yml +337 -51
  175. data/config/routes.rb +1 -1
  176. data/db/default/spree/countries.rb +9 -15
  177. data/db/default/spree/roles.rb +1 -2
  178. data/db/default/spree/states.rb +7 -11
  179. data/db/default/spree/store_credit.rb +2 -2
  180. data/db/default/spree/stores.rb +2 -1
  181. data/db/migrate/20120831092320_spree_one_two.rb +100 -101
  182. data/db/migrate/20120831092359_spree_promo_one_two.rb +12 -12
  183. data/db/migrate/20120905151823_add_toggle_tax_rate_display.rb +1 -1
  184. data/db/migrate/20121009142519_add_lock_version_to_variant.rb +1 -1
  185. data/db/migrate/20121010142909_add_states_required_to_countries.rb +1 -1
  186. data/db/migrate/20121012071449_add_on_demand_to_product_and_variant.rb +2 -2
  187. data/db/migrate/20121017010007_remove_not_null_constraint_from_products_on_hand.rb +4 -4
  188. data/db/migrate/20121031162139_split_prices_from_variants.rb +8 -8
  189. data/db/migrate/20121107003422_remove_not_null_from_spree_prices_amount.rb +2 -2
  190. data/db/migrate/20121109173623_add_cost_currency_to_variants.rb +1 -1
  191. data/db/migrate/20121124203911_add_position_to_taxonomies.rb +1 -1
  192. data/db/migrate/20130120201805_add_position_to_product_properties.spree.rb +1 -2
  193. data/db/migrate/20130211190146_create_spree_stock_items.rb +1 -1
  194. data/db/migrate/20130213191427_create_default_stock.rb +12 -21
  195. data/db/migrate/20130226032817_change_meta_description_on_spree_products_to_text.rb +1 -1
  196. data/db/migrate/20130227143905_add_pending_to_inventory_unit.rb +2 -2
  197. data/db/migrate/20130228210442_create_shipping_method_zone.rb +1 -1
  198. data/db/migrate/20130301162924_create_shipping_method_categories.rb +2 -2
  199. data/db/migrate/20130304162240_create_spree_shipping_rates.rb +4 -4
  200. data/db/migrate/20130306181701_add_address_fields_to_stock_location.rb +2 -3
  201. data/db/migrate/20130306191917_add_active_field_to_stock_locations.rb +1 -1
  202. data/db/migrate/20130306195650_add_backorderable_to_stock_item.rb +1 -1
  203. data/db/migrate/20130307161754_add_default_quantity_to_stock_movement.rb +1 -1
  204. data/db/migrate/20130319062004_change_orders_total_precision.rb +4 -4
  205. data/db/migrate/20130319063911_change_spree_payments_amount_precision.rb +1 -3
  206. data/db/migrate/20130319064308_change_spree_return_authorization_amount_precision.rb +2 -4
  207. data/db/migrate/20130319082943_change_adjustments_amount_precision.rb +1 -3
  208. data/db/migrate/20130319190507_drop_source_and_destination_from_stock_movement.rb +2 -2
  209. data/db/migrate/20130325163316_migrate_inventory_unit_sold_to_on_hand.rb +2 -2
  210. data/db/migrate/20130417120035_update_adjustment_states.rb +2 -2
  211. data/db/migrate/20130417123427_add_shipping_rates_to_shipments.rb +3 -3
  212. data/db/migrate/20130628021056_add_unique_index_to_permalink_on_spree_products.rb +1 -1
  213. data/db/migrate/20130628022817_add_unique_index_to_orders_shipments_and_stock_transfers.rb +3 -3
  214. data/db/migrate/20130718042445_add_cost_price_to_line_item.rb +1 -1
  215. data/db/migrate/20130718233855_set_backorderable_to_default_to_false.rb +2 -2
  216. data/db/migrate/20130807024301_upgrade_adjustments.rb +3 -3
  217. data/db/migrate/20130813004002_add_shipment_total_to_spree_orders.rb +1 -1
  218. data/db/migrate/20130813140619_expand_order_number_size.rb +2 -2
  219. data/db/migrate/20130815000406_add_adjustment_total_to_line_items.rb +1 -1
  220. data/db/migrate/20130815024413_add_adjustment_total_to_shipments.rb +1 -1
  221. data/db/migrate/20130826062534_add_depth_to_spree_taxons.rb +1 -1
  222. data/db/migrate/20130830001033_add_shipping_category_to_shipping_methods_and_products.rb +1 -1
  223. data/db/migrate/20130830001159_migrate_old_shipping_calculators.rb +1 -1
  224. data/db/migrate/20131001013410_remove_unused_credit_card_fields.rb +1 -0
  225. data/db/migrate/20131026154747_add_track_inventory_to_variant.rb +1 -1
  226. data/db/migrate/20131118043959_add_included_to_adjustments.rb +1 -1
  227. data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +0 -1
  228. data/db/migrate/20131211112807_create_spree_orders_promotions.rb +1 -1
  229. data/db/migrate/20131218054603_add_item_count_to_spree_orders.rb +1 -1
  230. data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +1 -0
  231. data/db/migrate/20140219060952_add_considered_risky_to_orders.rb +1 -1
  232. data/db/migrate/20140309023735_migrate_old_preferences.rb +4 -3
  233. data/db/migrate/20140309033438_create_store_from_preferences.rb +2 -2
  234. data/db/migrate/20140410141842_add_many_missing_indexes.rb +13 -15
  235. data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +38 -40
  236. data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +4 -4
  237. data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +1 -1
  238. data/db/migrate/20140710041921_recreate_spree_return_authorizations.rb +0 -1
  239. data/db/migrate/20140718195325_create_friendly_id_slugs.rb +4 -4
  240. data/db/migrate/20140723214541_copy_product_slugs_to_slug_history.rb +4 -6
  241. data/db/migrate/20140805171219_make_existing_credit_cards_default.rb +1 -0
  242. data/db/migrate/20141217215630_update_product_slug_index.rb +2 -4
  243. data/db/migrate/20150112194216_add_position_to_stock_location.rb +2 -2
  244. data/db/migrate/20150225205344_move_promotion_code_to_promotion_code_value.rb +0 -1
  245. data/db/migrate/20150313201503_copy_shipped_shipments_to_cartons.rb +0 -1
  246. data/db/migrate/20150506181611_create_spree_store_credit_payment_method.rb +3 -3
  247. data/db/migrate/20150515211137_fix_adjustment_order_id.rb +0 -1
  248. data/db/migrate/20150612205731_remove_spree_configurations.rb +2 -2
  249. data/db/migrate/20150619160613_create_adjustment_reason.rb +1 -1
  250. data/db/migrate/20150723224133_remove_unnecessary_indexes.rb +10 -2
  251. data/db/migrate/20150731201146_add_spree_user_addresses.rb +0 -1
  252. data/db/migrate/20150811211025_add_finalized_to_spree_adjustments.rb +1 -1
  253. data/db/migrate/20151001121454_create_spree_shipping_method_stock_locations.rb +13 -0
  254. data/db/migrate/20151002023248_add_foreign_key_to_shipping_method_stock_location.rb +6 -0
  255. data/db/migrate/20151026093607_change_return_item_pre_tax_amount_to_amount.rb +29 -0
  256. data/db/migrate/20160111091912_add_column_available_to_all_on_spree_shipping_method.rb +5 -0
  257. data/db/migrate/20160116133604_add_position_to_spree_payment_methods.rb +5 -0
  258. data/db/migrate/20160122182105_add_carrier_and_service_level_to_spree_shipping_methods.rb +6 -0
  259. data/db/migrate/20160224201413_create_spree_shipping_rate_taxes.rb +11 -0
  260. data/db/migrate/20160229133259_add_cart_tax_country_iso_to_spree_store.rb +5 -0
  261. data/db/migrate/20160301103333_remove_pre_tax_amount_on_line_item_and_shipment.rb +6 -0
  262. data/db/migrate/20160308000300_disallow_adjustment_finalized_nulls.rb +19 -0
  263. data/db/migrate/20160318145302_add_timestamps_to_prices.rb +5 -0
  264. data/db/migrate/20160330204846_add_missing_timestamp_columns.rb +20 -0
  265. data/lib/generators/spree/custom_user/custom_user_generator.rb +3 -8
  266. data/lib/generators/spree/dummy/dummy_generator.rb +17 -19
  267. data/lib/generators/spree/install/install_generator.rb +15 -15
  268. data/lib/generators/spree/install/templates/config/initializers/spree.rb +1 -0
  269. data/lib/spree/core/controller_helpers/auth.rb +2 -4
  270. data/lib/spree/core/controller_helpers/common.rb +42 -43
  271. data/lib/spree/core/controller_helpers/order.rb +5 -9
  272. data/lib/spree/core/controller_helpers/payment_parameters.rb +4 -5
  273. data/lib/spree/core/controller_helpers/pricing.rb +27 -0
  274. data/lib/spree/core/controller_helpers/respond_with.rb +4 -4
  275. data/lib/spree/core/controller_helpers/search.rb +2 -2
  276. data/lib/spree/core/controller_helpers/store.rb +3 -3
  277. data/lib/spree/core/controller_helpers/strong_parameters.rb +4 -4
  278. data/lib/spree/core/current_store.rb +1 -1
  279. data/lib/spree/core/delegate_belongs_to.rb +19 -21
  280. data/lib/spree/core/engine.rb +12 -8
  281. data/lib/spree/core/environment/calculators.rb +0 -1
  282. data/lib/spree/core/environment_extension.rb +4 -4
  283. data/lib/spree/core/importer/order.rb +17 -22
  284. data/lib/spree/core/importer/product.rb +10 -9
  285. data/lib/spree/core/permalinks.rb +16 -16
  286. data/lib/spree/core/product_duplicator.rb +2 -3
  287. data/lib/spree/core/product_filters.rb +15 -16
  288. data/lib/spree/core/role_configuration.rb +2 -2
  289. data/lib/spree/core/search/base.rb +71 -57
  290. data/lib/spree/core/search/variant.rb +2 -4
  291. data/lib/spree/core/unreturned_item_charger.rb +1 -2
  292. data/lib/spree/core/validators/email.rb +2 -2
  293. data/lib/spree/core/version.rb +1 -1
  294. data/lib/spree/core.rb +2 -4
  295. data/lib/spree/i18n.rb +1 -1
  296. data/lib/spree/localized_number.rb +3 -1
  297. data/lib/spree/migrations.rb +27 -26
  298. data/lib/spree/money.rb +19 -4
  299. data/lib/spree/permission_sets/base.rb +1 -1
  300. data/lib/spree/permitted_attributes.rb +7 -7
  301. data/lib/spree/responder.rb +4 -5
  302. data/lib/spree/testing_support/authorization_helpers.rb +1 -1
  303. data/lib/spree/testing_support/caching.rb +8 -8
  304. data/lib/spree/testing_support/capybara_ext.rb +11 -13
  305. data/lib/spree/testing_support/common_rake.rb +4 -4
  306. data/lib/spree/testing_support/controller_requests.rb +1 -1
  307. data/lib/spree/testing_support/extension_rake.rb +1 -2
  308. data/lib/spree/testing_support/factories/address_factory.rb +14 -3
  309. data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +1 -1
  310. data/lib/spree/testing_support/factories/carton_factory.rb +2 -2
  311. data/lib/spree/testing_support/factories/credit_card_factory.rb +4 -0
  312. data/lib/spree/testing_support/factories/customer_return_factory.rb +4 -6
  313. data/lib/spree/testing_support/factories/line_item_factory.rb +1 -1
  314. data/lib/spree/testing_support/factories/order_factory.rb +10 -11
  315. data/lib/spree/testing_support/factories/payment_factory.rb +5 -0
  316. data/lib/spree/testing_support/factories/promotion_category_factory.rb +0 -1
  317. data/lib/spree/testing_support/factories/promotion_factory.rb +0 -1
  318. data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
  319. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  320. data/lib/spree/testing_support/factories/return_item_factory.rb +1 -1
  321. data/lib/spree/testing_support/factories/shipping_method_factory.rb +5 -2
  322. data/lib/spree/testing_support/factories/state_factory.rb +17 -7
  323. data/lib/spree/testing_support/factories/stock_location_factory.rb +4 -4
  324. data/lib/spree/testing_support/factories/stock_transfer_factory.rb +1 -1
  325. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +0 -1
  326. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +0 -2
  327. data/lib/spree/testing_support/factories/tax_category_factory.rb +2 -2
  328. data/lib/spree/testing_support/factories/user_factory.rb +1 -1
  329. data/lib/spree/testing_support/factories/variant_factory.rb +1 -2
  330. data/lib/spree/testing_support/factories/zone_factory.rb +2 -1
  331. data/lib/spree/testing_support/i18n.rb +4 -5
  332. data/lib/spree/testing_support/order_walkthrough.rb +8 -9
  333. data/lib/spree/testing_support/preferences.rb +1 -1
  334. data/lib/spree/testing_support/sequences.rb +5 -4
  335. data/lib/tasks/core.rake +15 -19
  336. data/lib/tasks/email.rake +3 -3
  337. data/lib/tasks/exchanges.rake +12 -14
  338. data/lib/tasks/migrations/assure_store_on_orders.rake +38 -0
  339. data/lib/tasks/migrations/copy_order_bill_address_to_credit_card.rake +2 -2
  340. data/lib/tasks/migrations/copy_shipped_shipments_to_cartons.rake +1 -11
  341. data/lib/tasks/migrations/migrate_shipping_rate_taxes.rake +17 -0
  342. data/lib/tasks/migrations/migrate_user_addresses.rake +1 -1
  343. data/lib/tasks/order_capturing.rake +1 -1
  344. data/lib/tasks/upgrade.rake +11 -0
  345. data/script/rails +0 -1
  346. data/solidus_core.gemspec +6 -8
  347. data/spec/helpers/base_helper_spec.rb +15 -18
  348. data/spec/helpers/order_helper_spec.rb +2 -2
  349. data/spec/helpers/products_helper_spec.rb +43 -51
  350. data/spec/helpers/taxons_helper_spec.rb +1 -1
  351. data/spec/lib/i18n_spec.rb +11 -11
  352. data/spec/lib/search/base_spec.rb +12 -14
  353. data/spec/lib/search/variant_spec.rb +1 -0
  354. data/spec/lib/spree/core/controller_helpers/order_spec.rb +1 -7
  355. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +26 -28
  356. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +63 -0
  357. data/spec/lib/spree/core/controller_helpers/search_spec.rb +4 -2
  358. data/spec/lib/spree/core/delegate_belongs_to_spec.rb +1 -1
  359. data/spec/lib/spree/core/importer/order_spec.rb +95 -90
  360. data/spec/lib/spree/core/role_configuration_spec.rb +16 -16
  361. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +35 -0
  362. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +10 -1
  363. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -1
  364. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +6 -1
  365. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +37 -1
  366. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +2 -2
  367. data/spec/lib/spree/core/testing_support/factories/stock_packer_factory_spec.rb +1 -1
  368. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +1 -2
  369. data/spec/lib/spree/core/testing_support/preferences_spec.rb +26 -0
  370. data/spec/lib/spree/core/unreturned_item_charger_spec.rb +7 -9
  371. data/spec/lib/spree/core/validators/email_spec.rb +8 -6
  372. data/spec/lib/spree/localized_number_spec.rb +1 -3
  373. data/spec/lib/spree/migrations_spec.rb +2 -2
  374. data/spec/lib/spree/money_spec.rb +75 -6
  375. data/spec/lib/tasks/exchanges_spec.rb +2 -12
  376. data/spec/lib/tasks/migrations/copy_shipped_shipments_to_cartons_spec.rb +0 -1
  377. data/spec/lib/tasks/order_capturing_spec.rb +1 -1
  378. data/spec/mailers/carton_mailer_spec.rb +3 -3
  379. data/spec/mailers/order_mailer_spec.rb +9 -11
  380. data/spec/mailers/reimbursement_mailer_spec.rb +2 -2
  381. data/spec/mailers/test_mailer_spec.rb +1 -1
  382. data/spec/models/spree/ability_spec.rb +4 -7
  383. data/spec/models/spree/address_spec.rb +32 -35
  384. data/spec/models/spree/adjustment_reason_spec.rb +0 -2
  385. data/spec/models/spree/adjustment_spec.rb +2 -2
  386. data/spec/models/spree/app_configuration_spec.rb +33 -3
  387. data/spec/models/spree/asset_spec.rb +1 -2
  388. data/spec/models/spree/calculator/default_tax_spec.rb +141 -52
  389. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +1 -1
  390. data/spec/models/spree/calculator/flexi_rate_spec.rb +6 -6
  391. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +1 -1
  392. data/spec/models/spree/calculator/price_sack_spec.rb +2 -2
  393. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +9 -11
  394. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +4 -4
  395. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +2 -2
  396. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +6 -7
  397. data/spec/models/spree/calculator/shipping/per_item_spec.rb +2 -2
  398. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +2 -2
  399. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +1 -2
  400. data/spec/models/spree/calculator/tiered_percent_spec.rb +1 -1
  401. data/spec/models/spree/calculator_spec.rb +3 -8
  402. data/spec/models/spree/carton_spec.rb +1 -1
  403. data/spec/models/spree/classification_spec.rb +1 -1
  404. data/spec/models/spree/concerns/display_money_spec.rb +0 -1
  405. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +26 -1
  406. data/spec/models/spree/concerns/user_address_book_spec.rb +19 -12
  407. data/spec/models/spree/concerns/user_methods_spec.rb +1 -1
  408. data/spec/models/spree/country_spec.rb +52 -0
  409. data/spec/models/spree/credit_card_spec.rb +17 -12
  410. data/spec/models/spree/customer_return_spec.rb +27 -23
  411. data/spec/models/spree/exchange_spec.rb +2 -7
  412. data/spec/models/spree/gateway/bogus_simple.rb +2 -4
  413. data/spec/models/spree/gateway/bogus_spec.rb +4 -2
  414. data/spec/models/spree/gateway_spec.rb +8 -3
  415. data/spec/models/spree/inventory_unit_spec.rb +13 -14
  416. data/spec/models/spree/item_adjustments_spec.rb +36 -40
  417. data/spec/models/spree/line_item_spec.rb +92 -48
  418. data/spec/models/spree/option_type_spec.rb +1 -1
  419. data/spec/models/spree/option_value_spec.rb +1 -1
  420. data/spec/models/spree/order/address_spec.rb +1 -1
  421. data/spec/models/spree/order/callbacks_spec.rb +3 -3
  422. data/spec/models/spree/order/checkout_spec.rb +55 -48
  423. data/spec/models/spree/order/finalizing_spec.rb +8 -9
  424. data/spec/models/spree/order/payment_spec.rb +20 -20
  425. data/spec/models/spree/order/risk_assessment_spec.rb +1 -1
  426. data/spec/models/spree/order/state_machine_spec.rb +40 -131
  427. data/spec/models/spree/order/tax_spec.rb +11 -12
  428. data/spec/models/spree/order/totals_spec.rb +3 -3
  429. data/spec/models/spree/order/updating_spec.rb +2 -2
  430. data/spec/models/spree/order/validations_spec.rb +2 -2
  431. data/spec/models/spree/order_cancellations_spec.rb +1 -1
  432. data/spec/models/spree/order_capturing_spec.rb +1 -1
  433. data/spec/models/spree/order_contents_spec.rb +10 -11
  434. data/spec/models/spree/order_inventory_spec.rb +11 -11
  435. data/spec/models/spree/order_merger_spec.rb +1 -0
  436. data/spec/models/spree/order_shipping_spec.rb +8 -10
  437. data/spec/models/spree/order_spec.rb +137 -124
  438. data/spec/models/spree/order_stock_location_spec.rb +2 -2
  439. data/spec/models/spree/order_update_attributes_spec.rb +6 -10
  440. data/spec/models/spree/order_updater_spec.rb +4 -8
  441. data/spec/models/spree/payment_create_spec.rb +11 -12
  442. data/spec/models/spree/payment_method/store_credit_spec.rb +10 -6
  443. data/spec/models/spree/payment_method_spec.rb +4 -5
  444. data/spec/models/spree/payment_spec.rb +61 -69
  445. data/spec/models/spree/permission_sets/base_spec.rb +1 -1
  446. data/spec/models/spree/permission_sets/configuration_display.rb +0 -1
  447. data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -1
  448. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -1
  449. data/spec/models/spree/permission_sets/order_display_spec.rb +0 -1
  450. data/spec/models/spree/permission_sets/order_management_spec.rb +0 -1
  451. data/spec/models/spree/permission_sets/product_display_spec.rb +0 -1
  452. data/spec/models/spree/permission_sets/product_management_spec.rb +0 -1
  453. data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -1
  454. data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -1
  455. data/spec/models/spree/permission_sets/report_display_spec.rb +0 -1
  456. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -1
  457. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -1
  458. data/spec/models/spree/permission_sets/restricted_stock_transfer_display_spec.rb +0 -1
  459. data/spec/models/spree/permission_sets/restricted_stock_transfer_management_spec.rb +6 -6
  460. data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -1
  461. data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -1
  462. data/spec/models/spree/permission_sets/stock_transfer_display_spec.rb +0 -1
  463. data/spec/models/spree/permission_sets/stock_transfer_management_spec.rb +0 -2
  464. data/spec/models/spree/permission_sets/user_display_spec.rb +0 -1
  465. data/spec/models/spree/permission_sets/user_management_spec.rb +0 -1
  466. data/spec/models/spree/preference_spec.rb +1 -4
  467. data/spec/models/spree/preferences/configuration_spec.rb +2 -7
  468. data/spec/models/spree/preferences/preferable_spec.rb +13 -24
  469. data/spec/models/spree/preferences/scoped_store_spec.rb +1 -1
  470. data/spec/models/spree/preferences/static_model_preferences_spec.rb +5 -6
  471. data/spec/models/spree/preferences/statically_configurable_spec.rb +2 -6
  472. data/spec/models/spree/preferences/store_spec.rb +2 -3
  473. data/spec/models/spree/price_spec.rb +6 -6
  474. data/spec/models/spree/product/scopes_spec.rb +20 -20
  475. data/spec/models/spree/product_duplicator_spec.rb +16 -29
  476. data/spec/models/spree/product_filter_spec.rb +2 -2
  477. data/spec/models/spree/product_spec.rb +53 -20
  478. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +10 -12
  479. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +4 -4
  480. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +9 -9
  481. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +1 -1
  482. data/spec/models/spree/promotion/rules/first_order_spec.rb +10 -10
  483. data/spec/models/spree/promotion/rules/item_total_spec.rb +63 -19
  484. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +1 -1
  485. data/spec/models/spree/promotion/rules/product_spec.rb +8 -8
  486. data/spec/models/spree/promotion/rules/taxon_spec.rb +4 -4
  487. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +3 -4
  488. data/spec/models/spree/promotion/rules/user_spec.rb +7 -7
  489. data/spec/models/spree/promotion_builder_spec.rb +10 -8
  490. data/spec/models/spree/promotion_category_spec.rb +1 -1
  491. data/spec/models/spree/promotion_code/code_builder_spec.rb +1 -3
  492. data/spec/models/spree/promotion_code_spec.rb +8 -7
  493. data/spec/models/spree/promotion_handler/cart_spec.rb +1 -1
  494. data/spec/models/spree/promotion_handler/coupon_spec.rb +28 -28
  495. data/spec/models/spree/promotion_handler/page_spec.rb +6 -7
  496. data/spec/models/spree/promotion_rule_spec.rb +1 -2
  497. data/spec/models/spree/promotion_spec.rb +25 -21
  498. data/spec/models/spree/refund_spec.rb +8 -11
  499. data/spec/models/spree/reimbursement/credit_spec.rb +2 -2
  500. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +6 -4
  501. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +1 -1
  502. data/spec/models/spree/reimbursement_performer_spec.rb +2 -2
  503. data/spec/models/spree/reimbursement_spec.rb +9 -11
  504. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +4 -5
  505. data/spec/models/spree/reimbursement_type/credit_spec.rb +2 -2
  506. data/spec/models/spree/reimbursement_type/exchange_spec.rb +2 -3
  507. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +4 -4
  508. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +1 -1
  509. data/spec/models/spree/return_authorization_spec.rb +18 -21
  510. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +7 -7
  511. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -1
  512. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -1
  513. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +1 -1
  514. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +1 -1
  515. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +1 -2
  516. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +3 -5
  517. data/spec/models/spree/return_item_spec.rb +29 -31
  518. data/spec/models/spree/returns_calculator_spec.rb +1 -1
  519. data/spec/models/spree/shipment_spec.rb +59 -43
  520. data/spec/models/spree/shipping_calculator_spec.rb +3 -3
  521. data/spec/models/spree/shipping_manifest_spec.rb +8 -7
  522. data/spec/models/spree/shipping_method_spec.rb +149 -24
  523. data/spec/models/spree/shipping_rate_spec.rb +116 -76
  524. data/spec/models/spree/shipping_rate_tax_spec.rb +83 -0
  525. data/spec/models/spree/state_spec.rb +2 -2
  526. data/spec/models/spree/stock/availability_validator_spec.rb +4 -4
  527. data/spec/models/spree/stock/coordinator_spec.rb +33 -49
  528. data/spec/models/spree/stock/differentiator_spec.rb +1 -1
  529. data/spec/models/spree/stock/estimator_spec.rb +83 -54
  530. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +1 -3
  531. data/spec/models/spree/stock/package_spec.rb +27 -10
  532. data/spec/models/spree/stock/packer_spec.rb +4 -4
  533. data/spec/models/spree/stock/prioritizer_spec.rb +1 -1
  534. data/spec/models/spree/stock/quantifier_spec.rb +2 -6
  535. data/spec/models/spree/stock/splitter/backordered_spec.rb +1 -1
  536. data/spec/models/spree/stock/splitter/base_spec.rb +1 -2
  537. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +1 -3
  538. data/spec/models/spree/stock/splitter/weight_spec.rb +3 -3
  539. data/spec/models/spree/stock_item_spec.rb +16 -16
  540. data/spec/models/spree/stock_location_spec.rb +6 -8
  541. data/spec/models/spree/stock_movement_spec.rb +1 -1
  542. data/spec/models/spree/stock_transfer_spec.rb +1 -3
  543. data/spec/models/spree/store_credit_category_spec.rb +1 -1
  544. data/spec/models/spree/store_credit_event_spec.rb +3 -5
  545. data/spec/models/spree/store_credit_spec.rb +24 -23
  546. data/spec/models/spree/store_spec.rb +21 -2
  547. data/spec/models/spree/tax/item_adjuster_spec.rb +74 -0
  548. data/spec/models/spree/tax/order_adjuster_spec.rb +49 -0
  549. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +50 -0
  550. data/spec/models/spree/tax/tax_location_spec.rb +68 -0
  551. data/spec/models/spree/tax/taxation_integration_spec.rb +787 -0
  552. data/spec/models/spree/tax_category_spec.rb +2 -2
  553. data/spec/models/spree/tax_rate_spec.rb +185 -536
  554. data/spec/models/spree/taxon_spec.rb +69 -5
  555. data/spec/models/spree/taxonomy_spec.rb +2 -3
  556. data/spec/models/spree/tracker_spec.rb +1 -1
  557. data/spec/models/spree/transfer_item_spec.rb +1 -1
  558. data/spec/models/spree/unit_cancel_spec.rb +9 -14
  559. data/spec/models/spree/user_spec.rb +19 -24
  560. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +1 -1
  561. data/spec/models/spree/variant/pricer_spec.rb +48 -0
  562. data/spec/models/spree/variant/pricing_options_spec.rb +106 -0
  563. data/spec/models/spree/variant/scopes_spec.rb +31 -8
  564. data/spec/models/spree/variant_property_rule_spec.rb +1 -1
  565. data/spec/models/spree/variant_spec.rb +166 -52
  566. data/spec/models/spree/zone_spec.rb +135 -10
  567. data/spec/support/big_decimal.rb +1 -1
  568. data/spec/support/concerns/working_factories.rb +2 -2
  569. data/spec/support/dummy_ability.rb +0 -1
  570. metadata +55 -44
  571. data/lib/generators/spree/dummy/templates/initializers/devise.rb +0 -3
  572. data/lib/spree/migration_helpers.rb +0 -19
  573. data/vendor/assets/stylesheets/skeleton.css +0 -242
@@ -1,107 +1,117 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::TaxRate, :type => :model do
4
- context "match" do
5
- let(:order) { create(:order) }
6
- let(:country) { create(:country) }
7
- let(:tax_category) { create(:tax_category) }
8
- let(:calculator) { Spree::Calculator::FlatRate.new }
9
-
10
- it "should return an empty array when tax_zone is nil" do
11
- allow(order).to receive_messages :tax_zone => nil
12
- expect(Spree::TaxRate.match(order.tax_zone)).to eq([])
3
+ describe Spree::TaxRate, type: :model do
4
+ it { is_expected.to respond_to(:shipping_rate_taxes) }
5
+
6
+ context '.for_address' do
7
+ let(:germany) { create(:country, iso: "DE") }
8
+ let(:germany_zone) { create(:zone, countries: [germany]) }
9
+ let!(:german_tax) { create(:tax_rate, zone: germany_zone) }
10
+ let(:france) { create(:country, iso: "FR") }
11
+ let(:france_zone) { create(:zone, countries: [france]) }
12
+ let!(:french_tax) { create(:tax_rate, zone: france_zone) }
13
+ let(:eu_zone) { create(:zone, countries: [germany, france]) }
14
+ let!(:eu_tax) { create(:tax_rate, zone: eu_zone) }
15
+ let(:usa) { create(:country, iso: "US") }
16
+ let(:us_zone) { create(:zone, countries: [usa]) }
17
+ let!(:us_tax) { create(:tax_rate, zone: us_zone) }
18
+ let(:new_york) { create(:state, country: usa, state_code: "NY") }
19
+ let(:new_york_zone) { create(:zone, states: [new_york]) }
20
+ let!(:new_york_tax) { create(:tax_rate, zone: new_york_zone) }
21
+ let(:alabama) { create(:state, country: usa, state_code: "AL") }
22
+ let(:alabama_zone) { create(:zone, states: [alabama]) }
23
+ let!(:alabama_tax) { create(:tax_rate, zone: alabama_zone) }
24
+
25
+ subject(:rates_for_address) { Spree::TaxRate.for_address(address) }
26
+
27
+ context 'when address is in germany' do
28
+ let(:address) { create(:address, country_iso_code: "DE") }
29
+ it { is_expected.to contain_exactly(german_tax, eu_tax) }
13
30
  end
14
31
 
15
- context "when no rate zones match the tax zone" do
16
- before do
17
- Spree::TaxRate.create(:amount => 1, :zone => create(:zone))
32
+ context 'when address is in france' do
33
+ let(:address) { create(:address, country_iso_code: "FR") }
34
+ it { is_expected.to contain_exactly(french_tax, eu_tax) }
35
+ end
36
+
37
+ context 'when address is in new york' do
38
+ let(:address) { create(:address, country_iso_code: "US", state_code: "NY") }
39
+ it { is_expected.to contain_exactly(new_york_tax, us_tax) }
40
+ end
41
+
42
+ context 'when address is in alabama' do
43
+ let(:address) { create(:address, country_iso_code: "US", state_code: "AL") }
44
+ it { is_expected.to contain_exactly(alabama_tax, us_tax) }
45
+ end
46
+
47
+ context 'when address is in alaska' do
48
+ let(:address) { create(:address, country_iso_code: "US", state_code: "AK") }
49
+ it { is_expected.to contain_exactly(us_tax) }
50
+ end
51
+ end
52
+
53
+ context ".for_zone" do
54
+ subject(:rates_for_zone) { Spree::TaxRate.for_zone(zone) }
55
+
56
+ context "when zone is nil" do
57
+ let(:zone) { nil }
58
+
59
+ it "should return an empty array" do
60
+ expect(subject).to eq([])
18
61
  end
62
+ end
63
+
64
+ context "when no rate zones match the tax zone" do
65
+ let(:rate_zone) { create(:zone, :with_country) }
66
+ let!(:rate) { create :tax_rate, zone: rate_zone }
19
67
 
20
68
  context "when there is no default tax zone" do
21
- before do
22
- @zone = create(:zone, :name => "Country Zone", :default_tax => false, :zone_members => [])
23
- @zone.zone_members.create(:zoneable => country)
24
- end
69
+ context "and the zone has no shared members with the rate zone" do
70
+ let(:zone) { create(:zone, :with_country) }
25
71
 
26
- it "should return an empty array" do
27
- allow(order).to receive_messages :tax_zone => @zone
28
- expect(Spree::TaxRate.match(order.tax_zone)).to eq([])
72
+ it "should return an empty array" do
73
+ expect(subject).to eq([])
74
+ end
29
75
  end
30
76
 
31
- it "should return the rate that matches the rate zone" do
32
- rate = Spree::TaxRate.create(
33
- :amount => 1,
34
- :zone => @zone,
35
- :tax_category => tax_category,
36
- :calculator => calculator
37
- )
77
+ context "and the zone has shared members with the rate zone" do
78
+ let(:zone) { create(:zone, countries: rate_zone.countries) }
38
79
 
39
- allow(order).to receive_messages :tax_zone => @zone
40
- expect(Spree::TaxRate.match(order.tax_zone)).to eq([rate])
80
+ it "should return the rate that matches the rate zone" do
81
+ expect(subject).to eq([rate])
82
+ end
41
83
  end
42
84
 
43
- it "should return all rates that match the rate zone" do
44
- rate1 = Spree::TaxRate.create(
45
- :amount => 1,
46
- :zone => @zone,
47
- :tax_category => tax_category,
48
- :calculator => calculator
49
- )
50
-
51
- rate2 = Spree::TaxRate.create(
52
- :amount => 2,
53
- :zone => @zone,
54
- :tax_category => tax_category,
55
- :calculator => Spree::Calculator::FlatRate.new
56
- )
57
-
58
- allow(order).to receive_messages :tax_zone => @zone
59
- expect(Spree::TaxRate.match(order.tax_zone)).to match_array([rate1, rate2])
85
+ context "there is many rates that match the zone" do
86
+ let!(:rate2) { create :tax_rate, zone: rate_zone }
87
+ let(:zone) { create(:zone, countries: rate_zone.countries) }
88
+
89
+ it "should return all rates that match the rate zone" do
90
+ expect(subject).to match_array([rate, rate2])
91
+ end
60
92
  end
61
93
 
62
94
  context "when the tax_zone is contained within a rate zone" do
63
- before do
64
- sub_zone = create(:zone, :name => "State Zone", :zone_members => [])
65
- sub_zone.zone_members.create(:zoneable => create(:state, :country => country))
66
- allow(order).to receive_messages :tax_zone => sub_zone
67
- @rate = Spree::TaxRate.create(
68
- :amount => 1,
69
- :zone => @zone,
70
- :tax_category => tax_category,
71
- :calculator => calculator
72
- )
73
- end
95
+ let(:country1) { create :country }
96
+ let(:country2) { create :country }
97
+ let(:rate_zone) { create(:zone, countries: [country1, country2]) }
98
+ let(:zone) { create(:zone, countries: [country1]) }
74
99
 
75
100
  it "should return the rate zone" do
76
- expect(Spree::TaxRate.match(order.tax_zone)).to eq([@rate])
101
+ expect(subject).to eq([rate])
77
102
  end
78
103
  end
79
104
  end
80
105
 
81
106
  context "when there is a default tax zone" do
82
- before do
83
- @zone = create(:zone, :name => "Country Zone", :default_tax => true, :zone_members => [])
84
- @zone.zone_members.create(:zoneable => country)
85
- end
86
-
107
+ let(:default_zone) { create(:zone, :with_country, default_tax: true) }
87
108
  let(:included_in_price) { false }
88
109
  let!(:rate) do
89
- Spree::TaxRate.create(:amount => 1,
90
- :zone => @zone,
91
- :tax_category => tax_category,
92
- :calculator => calculator,
93
- :included_in_price => included_in_price)
110
+ create(:tax_rate, zone: default_zone, included_in_price: included_in_price)
94
111
  end
95
112
 
96
- subject { Spree::TaxRate.match(order.tax_zone) }
97
-
98
- context "when the order has the same tax zone" do
99
- before do
100
- allow(order).to receive_messages :tax_zone => @zone
101
- allow(order).to receive_messages :tax_address => tax_address
102
- end
103
-
104
- let(:tax_address) { stub_model(Spree::Address) }
113
+ context "when the zone is the default zone" do
114
+ let(:zone) { default_zone }
105
115
 
106
116
  context "when the tax is not a VAT" do
107
117
  it { is_expected.to eq([rate]) }
@@ -109,528 +119,167 @@ describe Spree::TaxRate, :type => :model do
109
119
 
110
120
  context "when the tax is a VAT" do
111
121
  let(:included_in_price) { true }
122
+
112
123
  it { is_expected.to eq([rate]) }
113
124
  end
114
125
  end
115
126
 
116
- context "when the order has a different tax zone" do
117
- before do
118
- allow(order).to receive_messages :tax_zone => create(:zone, :name => "Other Zone")
119
- allow(order).to receive_messages :tax_address => tax_address
120
- end
121
-
122
- context "when the order has a tax_address" do
123
- let(:tax_address) { stub_model(Spree::Address) }
127
+ context "when the zone is outside the default zone" do
128
+ let(:zone) { create(:zone, :with_country) }
124
129
 
125
- context "when the tax is a VAT" do
126
- let(:included_in_price) { true }
127
- # The rate should match in this instance because:
128
- # 1) It's the default rate (and as such, a negative adjustment should apply)
129
- it { is_expected.to eq([rate]) }
130
- end
131
-
132
- context "when the tax is not VAT" do
133
- it "returns no tax rate" do
134
- expect(subject).to be_empty
135
- end
136
- end
137
- end
138
-
139
- context "when the order does not have a tax_address" do
140
- let(:tax_address) { nil}
141
-
142
- context "when the tax is a VAT" do
143
- let(:included_in_price) { true }
144
- # The rate should match in this instance because:
145
- # 1) The order has no tax address by this stage
146
- # 2) With no tax address, it has no tax zone
147
- # 3) Therefore, we assume the default tax zone
148
- # 4) This default zone has a default tax rate.
149
- it { is_expected.to eq([rate]) }
150
- end
151
-
152
- context "when the tax is not a VAT" do
153
- it { is_expected.to be_empty }
154
- end
155
- end
130
+ it { is_expected.to be_empty }
156
131
  end
157
132
  end
158
133
  end
159
134
  end
160
135
 
161
136
  context ".adjust" do
162
- let(:order) { stub_model(Spree::Order) }
163
- let(:tax_category_1) { stub_model(Spree::TaxCategory) }
164
- let(:tax_category_2) { stub_model(Spree::TaxCategory) }
165
- let(:rate_1) { stub_model(Spree::TaxRate, :tax_category => tax_category_1) }
166
- let(:rate_2) { stub_model(Spree::TaxRate, :tax_category => tax_category_2) }
137
+ let(:zone) { stub_model(Spree::Zone) }
167
138
 
168
139
  context "with line items" do
169
- let(:line_item) do
170
- stub_model(Spree::LineItem,
171
- :price => 10.0,
172
- :quantity => 1,
173
- :tax_category => tax_category_1,
174
- :variant => stub_model(Spree::Variant)
175
- )
176
- end
177
-
178
- let(:line_items) { [line_item] }
140
+ let(:line_item) { stub_model(Spree::LineItem) }
179
141
 
180
- before do
181
- allow(Spree::TaxRate).to receive_messages :match => [rate_1, rate_2]
182
- end
183
-
184
- it "should only apply adjustments for matching rates" do
185
- expect(rate_1).to receive(:adjust)
186
- expect(rate_2).not_to receive(:adjust)
187
- Spree::TaxRate.adjust(order.tax_zone, line_items)
142
+ it 'should emit a deprecation warning and call the item adjuster' do
143
+ expect(ActiveSupport::Deprecation).to receive(:warn)
144
+ expect(Spree::Tax::ItemAdjuster).to receive_message_chain(:new, :adjust!)
145
+ Spree::TaxRate.adjust(zone, [line_item])
188
146
  end
189
147
  end
190
148
 
191
149
  context "with shipments" do
192
- let(:shipments) { [stub_model(Spree::Shipment, :cost => 10.0, :tax_category => tax_category_1)] }
193
-
194
- before do
195
- allow(Spree::TaxRate).to receive_messages :match => [rate_1, rate_2]
196
- end
150
+ let(:shipment) { stub_model(Spree::Shipment) }
197
151
 
198
- it "should apply adjustments for matching rates" do
199
- expect(rate_1).to receive(:adjust)
200
- expect(rate_2).not_to receive(:adjust)
201
- Spree::TaxRate.adjust(order.tax_zone, shipments)
152
+ it 'should emit a deprecation warning and call the item adjuster' do
153
+ expect(ActiveSupport::Deprecation).to receive(:warn)
154
+ expect(Spree::Tax::ItemAdjuster).to receive_message_chain(:new, :adjust!)
155
+ Spree::TaxRate.adjust(zone, [shipment])
202
156
  end
203
157
  end
204
158
  end
205
159
 
206
- # While the above test is nice and fast - let me tell you a story or two here.
207
- context ".adjust" do
208
- let(:order) { create :order }
209
- let(:book_product) { create :product, price: 20, name: "Book", tax_category: books_category }
210
- let(:download_product) { create :product, price: 10, name: "Download", tax_category: digital_category }
211
- let(:sweater_product) { create :product, price: 30, name: "Download", tax_category: normal_category }
212
- let(:book) { book_product.master }
213
- let(:download) { download_product.master }
214
- let(:sweater) { sweater_product.master }
215
- let(:books_category) { create :tax_category, name: "Books" }
216
- let(:normal_category) { create :tax_category, name: "Normal" }
217
- let(:digital_category) { create :tax_category, name: "Digital Goods" }
218
-
219
- context 'selling from germany' do
220
- let(:germany) { create :country, iso: "DE" }
221
- # The weird default_tax boolean is what makes this context one with default included taxes
222
- let!(:germany_zone) { create :zone, countries: [germany], default_tax: true }
223
- let(:romania) { create(:country, iso: "RO") }
224
- let(:romania_zone) { create(:zone, countries: [romania] ) }
225
- let(:eu_zone) { create(:zone, countries: [romania, germany]) }
226
- let(:world_zone) { create(:zone, :with_country) }
227
-
228
- let!(:german_book_vat) do
229
- create(
230
- :tax_rate,
231
- included_in_price: true,
232
- amount: 0.07,
233
- tax_category: books_category,
234
- zone: eu_zone
235
- )
236
- end
237
- let!(:german_normal_vat) do
238
- create(
239
- :tax_rate,
240
- included_in_price: true,
241
- amount: 0.19,
242
- tax_category: normal_category,
243
- zone: eu_zone
244
- )
245
- end
246
- let!(:german_digital_vat) do
247
- create(
248
- :tax_rate,
249
- included_in_price: true,
250
- amount: 0.19,
251
- tax_category: digital_category,
252
- zone: germany_zone
253
- )
254
- end
255
- let!(:romanian_digital_vat) do
256
- create(
257
- :tax_rate,
258
- included_in_price: true,
259
- amount: 0.24,
260
- tax_category: digital_category,
261
- zone: romania_zone
262
- )
263
- end
264
-
265
- before do
266
- allow(order).to receive(:tax_zone) { tax_zone }
267
- order.contents.add(variant)
268
- Spree::TaxRate.adjust(order.tax_zone, order.line_items)
269
- end
270
-
271
- let(:line_item) { order.line_items.first }
272
-
273
- context 'to germany' do
274
- let(:tax_zone) { germany_zone }
275
-
276
- context 'an order with a book' do
277
- let(:variant) { book }
278
-
279
- it 'still has the original price' do
280
- expect(line_item.price).to eq(20)
281
- end
282
-
283
- it 'has one tax adjustment' do
284
- expect(line_item.adjustments.tax.count).to eq(1)
285
- end
286
-
287
- it 'has 1.13 cents of included tax' do
288
- expect(line_item.included_tax_total).to eq(1.31)
289
- end
290
- end
291
-
292
- context 'an order with a sweater' do
293
- let(:variant) { sweater }
294
-
295
- it 'still has the original price' do
296
- expect(line_item.price).to eq(30)
297
- end
298
-
299
- it 'has one tax adjustment' do
300
- expect(line_item.adjustments.tax.count).to eq(1)
301
- end
302
-
303
- it 'has 4,78 of included tax' do
304
- expect(line_item.included_tax_total).to eq(4.79)
305
- end
306
- end
307
-
308
- context 'an order with a download' do
309
- let(:variant) { download }
310
-
311
- it 'still has the original price' do
312
- expect(line_item.price).to eq(10)
313
- end
160
+ describe "#adjust" do
161
+ let(:taxable_address) { create(:address) }
162
+ let(:order) { create(:order_with_line_items, ship_address: order_address) }
163
+ let(:tax_zone) { create(:zone, countries: [taxable_address.country], default_tax: default_tax) }
164
+ let(:foreign_address) { create(:address, country_iso_code: "CA") }
165
+ let!(:foreign_zone) { create(:zone, countries: [foreign_address.country], default_tax: false) }
166
+ let(:tax_rate) do
167
+ create(:tax_rate,
168
+ included_in_price: included_in_price,
169
+ show_rate_in_label: show_rate_in_label,
170
+ amount: 0.125,
171
+ zone: tax_zone
172
+ )
173
+ end
314
174
 
315
- it 'has one tax adjustment' do
316
- expect(line_item.adjustments.tax.count).to eq(1)
317
- end
175
+ let(:item) { order.line_items.first }
318
176
 
319
- it 'has 1.60 of included tax' do
320
- expect(line_item.included_tax_total).to eq(1.60)
321
- end
322
- end
177
+ describe 'adjustments' do
178
+ before do
179
+ tax_rate.adjust(order.tax_zone, item)
323
180
  end
324
181
 
325
- context 'to romania' do
326
- let(:tax_zone) { romania_zone }
327
-
328
- context 'an order with a book' do
329
- let(:variant) { book }
330
-
331
- it 'still has the original price' do
332
- expect(line_item.price).to eq(20)
333
- end
334
-
335
- it 'is adjusted to the original price' do
336
- expect(line_item.total).to eq(20)
337
- end
338
-
339
- it 'has one tax adjustment' do
340
- expect(line_item.adjustments.tax.count).to eq(1)
341
- end
342
-
343
- it 'has 1.13 cents of included tax' do
344
- expect(line_item.included_tax_total).to eq(1.31)
345
- end
346
-
347
- it 'has a constant amount pre tax' do
348
- expect(line_item.pre_tax_amount).to eq(18.69)
349
- end
350
- end
351
-
352
- context 'an order with a sweater' do
353
- let(:variant) { sweater }
354
-
355
- it 'still has the original price' do
356
- expect(line_item.price).to eq(30)
357
- end
358
-
359
- it 'has one tax adjustment' do
360
- expect(line_item.adjustments.tax.count).to eq(1)
361
- end
362
-
363
- # This test fails intermittently - it's a matter of luck
364
- xit 'has 4.79 of included tax' do
365
- expect(line_item.included_tax_total).to eq(4.79)
366
- end
367
-
368
- it 'has a constant amount pre tax' do
369
- expect(line_item.pre_tax_amount).to eq(25.21)
370
- end
371
- end
372
-
373
- context 'an order with a download' do
374
- let(:variant) { download }
375
-
376
- it 'still has an adjusted price for romania' do
377
- pending "waiting for the MOSS refactoring"
378
- expect(line_item.price).to eq(10.42)
379
- end
380
-
381
- it 'has one tax adjustment' do
382
- expect(line_item.adjustments.tax.count).to eq(1)
383
- end
182
+ let(:adjustment_label) { item.adjustments.tax.first.label }
384
183
 
385
- # Fails intermittently - xit'ed for the time being
386
- xit 'has 2.02 of included tax' do
387
- expect(line_item.included_tax_total).to eq(2.02)
388
- end
389
-
390
- it 'has a constant amount pre tax' do
391
- pending 'but it changes to 8.06, because Spree thinks both VATs apply'
392
- expect(line_item.pre_tax_amount).to eq(8.40)
393
- end
394
- end
395
- end
184
+ context 'for included rates' do
185
+ let(:included_in_price) { true }
186
+ let(:default_tax) { true }
396
187
 
397
- # International delivery, no tax applies whatsoever
398
- context 'to anywhere else in the world' do
399
- let(:tax_zone) { world_zone }
188
+ context 'when they are not refunded' do
189
+ let(:order_address) { taxable_address }
400
190
 
401
- context 'an order with a book' do
402
- let(:variant) { book }
191
+ context 'with show rate in label' do
192
+ let(:show_rate_in_label) { true }
403
193
 
404
- it 'should sell at the net price' do
405
- pending "Prices have to be adjusted"
406
- expect(line_item.price).to eq(18.69)
407
- end
194
+ it 'shows the rate in the label' do
195
+ expect(adjustment_label).to include("12.500%")
196
+ end
408
197
 
409
- it 'is adjusted to the net price' do
410
- expect(line_item.total).to eq(18.69)
198
+ it 'adds a remark that the rate is included in the price' do
199
+ expect(adjustment_label).to include("Included in Price")
200
+ end
411
201
  end
412
202
 
413
- it 'has no tax adjustments' do
414
- pending "Right now it gets a refund"
415
- expect(line_item.adjustments.tax.count).to eq(0)
416
- end
203
+ context 'with show rate in label turned off' do
204
+ let(:show_rate_in_label) { false }
417
205
 
418
- it 'has no included tax' do
419
- expect(line_item.included_tax_total).to eq(0)
420
- end
206
+ it 'does not show the rate in the label' do
207
+ expect(adjustment_label).not_to include("12.500%")
208
+ end
421
209
 
422
- it 'has no additional tax' do
423
- pending 'but there is a refund, still'
424
- expect(line_item.additional_tax_total).to eq(0)
425
- end
210
+ it 'does not have two consecutive spaces' do
211
+ expect(adjustment_label).not_to include(" ")
212
+ end
426
213
 
427
- it 'has a constant amount pre tax' do
428
- expect(line_item.pre_tax_amount).to eq(18.69)
214
+ it 'adds a remark that the rate is included in the price' do
215
+ expect(adjustment_label).to include("Included in Price")
216
+ end
429
217
  end
430
218
  end
431
219
 
432
- context 'an order with a sweater' do
433
- let(:variant) { sweater }
434
-
435
- it 'should sell at the net price' do
436
- pending 'but prices are not adjusted according to the zone yet'
437
- expect(line_item.price).to eq(25.21)
438
- end
439
-
440
- it 'has no tax adjustments' do
441
- pending 'but it has a refund'
442
- expect(line_item.adjustments.tax.count).to eq(0)
443
- end
220
+ context 'when they are refunded' do
221
+ let(:order_address) { foreign_address }
444
222
 
445
- it 'has no included tax' do
446
- expect(line_item.included_tax_total).to eq(0)
447
- end
448
-
449
- it 'has no additional tax' do
450
- pending 'but it has a refund for included taxes wtf'
451
- expect(line_item.additional_tax_total).to eq(0)
452
- end
223
+ context 'with show rate in label' do
224
+ let(:show_rate_in_label) { true }
453
225
 
454
- it 'has a constant amount pre tax' do
455
- expect(line_item.pre_tax_amount).to eq(25.21)
456
- end
457
- end
226
+ it 'shows the word "refund" in the label' do
227
+ expect(adjustment_label).to include("Refund")
228
+ end
458
229
 
459
- context 'an order with a download' do
460
- let(:variant) { download }
230
+ it 'shows the rate in the label' do
231
+ expect(adjustment_label).to include("12.500%")
232
+ end
461
233
 
462
- it 'should sell at the net price' do
463
- pending 'but prices are not adjusted yet'
464
- expect(line_item.price).to eq(8.40)
234
+ it 'adds a remark that the rate is included in the price' do
235
+ expect(adjustment_label).to include("Included in Price")
236
+ end
465
237
  end
466
238
 
467
- it 'has no tax adjustments' do
468
- pending 'but a refund is created'
469
- expect(line_item.adjustments.tax.count).to eq(0)
470
- end
239
+ context 'with show rate in label turned off' do
240
+ let(:show_rate_in_label) { false }
471
241
 
472
- it 'has no included tax' do
473
- expect(line_item.included_tax_total).to eq(0)
474
- end
242
+ it 'shows the word "refund" in the label' do
243
+ expect(adjustment_label).to include("Refund")
244
+ end
475
245
 
476
- it 'has no additional tax' do
477
- pending 'but an tax refund that disguises as additional tax is created'
478
- expect(line_item.additional_tax_total).to eq(0)
479
- end
246
+ it 'does not show the rate in the label' do
247
+ expect(adjustment_label).not_to include("12.500%")
248
+ end
480
249
 
481
- it 'has a constant amount pre tax' do
482
- expect(line_item.pre_tax_amount).to eq(8.40)
250
+ it 'adds a remark that the rate is included in the price' do
251
+ expect(adjustment_label).to include("Included in Price")
252
+ end
483
253
  end
484
254
  end
485
255
  end
486
- end
487
-
488
- # Choosing New York here because in the US, states matter
489
- context 'selling from new york' do
490
- let(:new_york) { create(:state) }
491
- let(:united_states) { create(:country, states: [new_york]) }
492
- let(:new_york_zone) { create(:zone, states: [new_york]) }
493
- let(:unites_states_zone) { create(:zone, countries: [united_states])}
494
- # Creating two rates for books here to
495
- # mimick the existing specs
496
- let!(:new_york_books_tax) do
497
- create(
498
- :tax_rate,
499
- tax_category: books_category,
500
- zone: new_york_zone,
501
- included_in_price: false,
502
- amount: 0.05
503
- )
504
- end
505
-
506
- let!(:federal_books_tax) do
507
- create(
508
- :tax_rate,
509
- tax_category: books_category,
510
- zone: unites_states_zone,
511
- included_in_price: false,
512
- amount: 0.10
513
- )
514
- end
515
-
516
- let!(:federal_digital_tax) do
517
- create(
518
- :tax_rate,
519
- tax_category: digital_category,
520
- zone: unites_states_zone,
521
- included_in_price: false,
522
- amount: 0.20
523
- )
524
- end
525
-
526
- before do
527
- allow(order).to receive(:tax_zone) { tax_zone }
528
- order.contents.add(variant)
529
- Spree::TaxRate.adjust(order.tax_zone, order.line_items)
530
- end
531
-
532
- let(:line_item) { order.line_items.first }
533
-
534
- context 'to new york' do
535
- let(:tax_zone) { new_york_zone }
536
-
537
- # A fictional case for an item with two applicable rates
538
- context 'an order with a book' do
539
- let(:variant) { book }
540
-
541
- it 'still has the original price' do
542
- expect(line_item.price).to eq(20)
543
- end
544
-
545
- it 'sells for the line items amount plus additional tax' do
546
- expect(line_item.total).to eq(23)
547
- end
548
-
549
- it 'has two tax adjustments' do
550
- expect(line_item.adjustments.tax.count).to eq(2)
551
- end
552
-
553
- it 'has no included tax' do
554
- expect(line_item.included_tax_total).to eq(0)
555
- end
556
-
557
- it 'has 15% additional tax' do
558
- expect(line_item.additional_tax_total).to eq(3)
559
- end
560
256
 
561
- it "should delete adjustments for open order when taxrate is deleted" do
562
- new_york_books_tax.destroy!
563
- federal_books_tax.destroy!
564
- expect(line_item.adjustments.count).to eq(0)
565
- end
566
-
567
- it "should not delete adjustments for complete order when taxrate is deleted" do
568
- order.update_column :completed_at, Time.now
569
- new_york_books_tax.destroy!
570
- federal_books_tax.destroy!
571
- expect(line_item.adjustments.count).to eq(2)
572
- end
573
- end
574
-
575
- # This is a fictional case for when no taxes apply at all.
576
- context 'an order with a sweater' do
577
- let(:variant) { sweater }
578
-
579
- it 'still has the original price' do
580
- expect(line_item.price).to eq(30)
581
- end
582
-
583
- it 'sells for the line items amount plus additional tax' do
584
- expect(line_item.total).to eq(30)
585
- end
257
+ context 'for additional rates' do
258
+ let(:included_in_price) { false }
259
+ let(:order_address) { taxable_address }
260
+ let(:default_tax) { false }
586
261
 
587
- it 'has no tax adjustments' do
588
- expect(line_item.adjustments.tax.count).to eq(0)
589
- end
262
+ context 'with show rate in label' do
263
+ let(:show_rate_in_label) { true }
590
264
 
591
- it 'has no included tax' do
592
- expect(line_item.included_tax_total).to eq(0)
265
+ it 'shows the rate in the label' do
266
+ expect(adjustment_label).to include("12.500%")
593
267
  end
594
268
 
595
- it 'has no additional tax' do
596
- expect(line_item.additional_tax_total).to eq(0)
269
+ it 'does not add a remark that the rate is included in the price' do
270
+ expect(adjustment_label).not_to include("Included in Price")
597
271
  end
598
272
  end
599
273
 
600
- # A fictional case with one applicable rate
601
- context 'an order with a download' do
602
- let(:variant) { download }
274
+ context 'with show rate in label turned off' do
275
+ let(:show_rate_in_label) { false }
603
276
 
604
- it 'still has the original price' do
605
- expect(line_item.price).to eq(10)
277
+ it 'does not show the rate in the label' do
278
+ expect(adjustment_label).not_to include("12.500%")
606
279
  end
607
280
 
608
- it 'sells for the line items amount plus additional tax' do
609
- expect(line_item.total).to eq(12)
610
- end
611
-
612
- it 'has one tax adjustments' do
613
- expect(line_item.adjustments.tax.count).to eq(1)
614
- end
615
-
616
- it 'has no included tax' do
617
- expect(line_item.included_tax_total).to eq(0)
618
- end
619
-
620
- it 'has 15% additional tax' do
621
- expect(line_item.additional_tax_total).to eq(2)
622
- end
623
- end
624
- end
625
-
626
- context 'when no tax zone is given' do
627
- let(:tax_zone) { nil }
628
-
629
- context 'and we buy a book' do
630
- let(:variant) { book }
631
-
632
- it 'does not create adjustments' do
633
- expect(line_item.adjustments.count).to eq(0)
281
+ it 'does not add a remark that the rate is included in the price' do
282
+ expect(adjustment_label).not_to include("Included in Price")
634
283
  end
635
284
  end
636
285
  end