solidus_core_devise_token_auth 2.8.0.alpha.0

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 (815) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +1 -0
  3. data/LICENSE +26 -0
  4. data/README.md +69 -0
  5. data/Rakefile +37 -0
  6. data/app/assets/config/solidus_core_manifest.js +1 -0
  7. data/app/assets/images/logo/solidus_logo.png +0 -0
  8. data/app/assets/images/noimage/large.png +0 -0
  9. data/app/assets/images/noimage/mini.png +0 -0
  10. data/app/assets/images/noimage/product.png +0 -0
  11. data/app/assets/images/noimage/small.png +0 -0
  12. data/app/assets/javascripts/spree.js.erb +72 -0
  13. data/app/controllers/spree/base_controller.rb +15 -0
  14. data/app/helpers/spree/base_helper.rb +160 -0
  15. data/app/helpers/spree/checkout_helper.rb +33 -0
  16. data/app/helpers/spree/products_helper.rb +74 -0
  17. data/app/helpers/spree/store_helper.rb +23 -0
  18. data/app/helpers/spree/taxons_helper.rb +22 -0
  19. data/app/jobs/spree/promotion_code_batch_job.rb +26 -0
  20. data/app/mailers/spree/base_mailer.rb +18 -0
  21. data/app/mailers/spree/carton_mailer.rb +29 -0
  22. data/app/mailers/spree/order_mailer.rb +36 -0
  23. data/app/mailers/spree/promotion_code_batch_mailer.rb +15 -0
  24. data/app/mailers/spree/reimbursement_mailer.rb +13 -0
  25. data/app/mailers/spree/test_mailer.rb +11 -0
  26. data/app/models/concerns/spree/adjustment_source.rb +27 -0
  27. data/app/models/concerns/spree/calculated_adjustments.rb +40 -0
  28. data/app/models/concerns/spree/default_price.rb +27 -0
  29. data/app/models/concerns/spree/display_money.rb +34 -0
  30. data/app/models/concerns/spree/named_type.rb +14 -0
  31. data/app/models/concerns/spree/ordered_property_value_list.rb +28 -0
  32. data/app/models/concerns/spree/ransackable_attributes.rb +22 -0
  33. data/app/models/concerns/spree/user_address_book.rb +149 -0
  34. data/app/models/concerns/spree/user_methods.rb +77 -0
  35. data/app/models/concerns/spree/user_payment_source.rb +26 -0
  36. data/app/models/concerns/spree/user_reporting.rb +24 -0
  37. data/app/models/spree/ability.rb +64 -0
  38. data/app/models/spree/address.rb +222 -0
  39. data/app/models/spree/adjustment.rb +168 -0
  40. data/app/models/spree/adjustment_reason.rb +12 -0
  41. data/app/models/spree/asset.rb +8 -0
  42. data/app/models/spree/base.rb +46 -0
  43. data/app/models/spree/billing_integration.rb +23 -0
  44. data/app/models/spree/calculator/default_tax.rb +60 -0
  45. data/app/models/spree/calculator/distributed_amount.rb +33 -0
  46. data/app/models/spree/calculator/flat_percent_item_total.rb +20 -0
  47. data/app/models/spree/calculator/flat_rate.rb +18 -0
  48. data/app/models/spree/calculator/flexi_rate.rb +27 -0
  49. data/app/models/spree/calculator/free_shipping.rb +21 -0
  50. data/app/models/spree/calculator/percent_on_line_item.rb +13 -0
  51. data/app/models/spree/calculator/percent_per_item.rb +49 -0
  52. data/app/models/spree/calculator/price_sack.rb +27 -0
  53. data/app/models/spree/calculator/returns/default_refund_amount.rb +34 -0
  54. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +21 -0
  55. data/app/models/spree/calculator/shipping/flat_rate.rb +17 -0
  56. data/app/models/spree/calculator/shipping/flexi_rate.rb +34 -0
  57. data/app/models/spree/calculator/shipping/per_item.rb +21 -0
  58. data/app/models/spree/calculator/shipping/price_sack.rb +27 -0
  59. data/app/models/spree/calculator/tiered_flat_rate.rb +52 -0
  60. data/app/models/spree/calculator/tiered_percent.rb +61 -0
  61. data/app/models/spree/calculator.rb +49 -0
  62. data/app/models/spree/carton.rb +59 -0
  63. data/app/models/spree/classification.rb +13 -0
  64. data/app/models/spree/country.rb +28 -0
  65. data/app/models/spree/credit_card.rb +197 -0
  66. data/app/models/spree/customer_return.rb +78 -0
  67. data/app/models/spree/distributed_amounts_handler.rb +43 -0
  68. data/app/models/spree/exchange.rb +45 -0
  69. data/app/models/spree/fulfilment_changer.rb +135 -0
  70. data/app/models/spree/gallery/product_gallery.rb +18 -0
  71. data/app/models/spree/gallery/variant_gallery.rb +18 -0
  72. data/app/models/spree/gateway/bogus.rb +13 -0
  73. data/app/models/spree/gateway/bogus_simple.rb +13 -0
  74. data/app/models/spree/gateway.rb +14 -0
  75. data/app/models/spree/image.rb +56 -0
  76. data/app/models/spree/inventory_unit.rb +159 -0
  77. data/app/models/spree/legacy_user.rb +26 -0
  78. data/app/models/spree/line_item.rb +206 -0
  79. data/app/models/spree/line_item_action.rb +8 -0
  80. data/app/models/spree/log_entry.rb +11 -0
  81. data/app/models/spree/option_type.rb +32 -0
  82. data/app/models/spree/option_value.rb +33 -0
  83. data/app/models/spree/option_values_variant.rb +8 -0
  84. data/app/models/spree/order/checkout.rb +243 -0
  85. data/app/models/spree/order/number_generator.rb +45 -0
  86. data/app/models/spree/order/payments.rb +55 -0
  87. data/app/models/spree/order.rb +914 -0
  88. data/app/models/spree/order_cancellations.rb +125 -0
  89. data/app/models/spree/order_capturing.rb +50 -0
  90. data/app/models/spree/order_contents.rb +126 -0
  91. data/app/models/spree/order_inventory.rb +115 -0
  92. data/app/models/spree/order_merger.rb +143 -0
  93. data/app/models/spree/order_mutex.rb +35 -0
  94. data/app/models/spree/order_promotion.rb +27 -0
  95. data/app/models/spree/order_shipping.rb +89 -0
  96. data/app/models/spree/order_taxation.rb +81 -0
  97. data/app/models/spree/order_update_attributes.rb +41 -0
  98. data/app/models/spree/order_updater.rb +271 -0
  99. data/app/models/spree/payment/cancellation.rb +62 -0
  100. data/app/models/spree/payment/processing.rb +225 -0
  101. data/app/models/spree/payment.rb +284 -0
  102. data/app/models/spree/payment_capture_event.rb +11 -0
  103. data/app/models/spree/payment_create.rb +93 -0
  104. data/app/models/spree/payment_method/bogus_credit_card.rb +90 -0
  105. data/app/models/spree/payment_method/check.rb +40 -0
  106. data/app/models/spree/payment_method/credit_card.rb +43 -0
  107. data/app/models/spree/payment_method/simple_bogus_credit_card.rb +26 -0
  108. data/app/models/spree/payment_method/store_credit.rb +122 -0
  109. data/app/models/spree/payment_method.rb +281 -0
  110. data/app/models/spree/payment_source.rb +47 -0
  111. data/app/models/spree/preference.rb +7 -0
  112. data/app/models/spree/price.rb +89 -0
  113. data/app/models/spree/product/scopes.rb +259 -0
  114. data/app/models/spree/product.rb +400 -0
  115. data/app/models/spree/product_option_type.rb +9 -0
  116. data/app/models/spree/product_promotion_rule.rb +8 -0
  117. data/app/models/spree/product_property.rb +14 -0
  118. data/app/models/spree/promotion/actions/create_adjustment.rb +80 -0
  119. data/app/models/spree/promotion/actions/create_item_adjustments.rb +102 -0
  120. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +142 -0
  121. data/app/models/spree/promotion/actions/free_shipping.rb +57 -0
  122. data/app/models/spree/promotion/rules/first_order.rb +40 -0
  123. data/app/models/spree/promotion/rules/first_repeat_purchase_since.rb +36 -0
  124. data/app/models/spree/promotion/rules/item_total.rb +45 -0
  125. data/app/models/spree/promotion/rules/nth_order.rb +45 -0
  126. data/app/models/spree/promotion/rules/one_use_per_user.rb +25 -0
  127. data/app/models/spree/promotion/rules/option_value.rb +50 -0
  128. data/app/models/spree/promotion/rules/product.rb +74 -0
  129. data/app/models/spree/promotion/rules/store.rb +22 -0
  130. data/app/models/spree/promotion/rules/taxon.rb +103 -0
  131. data/app/models/spree/promotion/rules/user.rb +30 -0
  132. data/app/models/spree/promotion/rules/user_logged_in.rb +20 -0
  133. data/app/models/spree/promotion/rules/user_role.rb +45 -0
  134. data/app/models/spree/promotion.rb +260 -0
  135. data/app/models/spree/promotion_action.rb +53 -0
  136. data/app/models/spree/promotion_category.rb +8 -0
  137. data/app/models/spree/promotion_chooser.rb +34 -0
  138. data/app/models/spree/promotion_code/batch_builder.rb +78 -0
  139. data/app/models/spree/promotion_code.rb +44 -0
  140. data/app/models/spree/promotion_code_batch.rb +27 -0
  141. data/app/models/spree/promotion_handler/cart.rb +55 -0
  142. data/app/models/spree/promotion_handler/coupon.rb +92 -0
  143. data/app/models/spree/promotion_handler/free_shipping.rb +9 -0
  144. data/app/models/spree/promotion_handler/page.rb +26 -0
  145. data/app/models/spree/promotion_handler/shipping.rb +61 -0
  146. data/app/models/spree/promotion_rule.rb +51 -0
  147. data/app/models/spree/promotion_rule_role.rb +8 -0
  148. data/app/models/spree/promotion_rule_store.rb +10 -0
  149. data/app/models/spree/promotion_rule_taxon.rb +8 -0
  150. data/app/models/spree/promotion_rule_user.rb +10 -0
  151. data/app/models/spree/property.rb +20 -0
  152. data/app/models/spree/refund.rb +90 -0
  153. data/app/models/spree/refund_reason.rb +15 -0
  154. data/app/models/spree/reimbursement/credit.rb +29 -0
  155. data/app/models/spree/reimbursement/reimbursement_type_engine.rb +56 -0
  156. data/app/models/spree/reimbursement/reimbursement_type_validator.rb +17 -0
  157. data/app/models/spree/reimbursement.rb +186 -0
  158. data/app/models/spree/reimbursement_performer.rb +40 -0
  159. data/app/models/spree/reimbursement_tax_calculator.rb +35 -0
  160. data/app/models/spree/reimbursement_type/credit.rb +15 -0
  161. data/app/models/spree/reimbursement_type/exchange.rb +11 -0
  162. data/app/models/spree/reimbursement_type/original_payment.rb +15 -0
  163. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +72 -0
  164. data/app/models/spree/reimbursement_type/store_credit.rb +29 -0
  165. data/app/models/spree/reimbursement_type.rb +18 -0
  166. data/app/models/spree/return_authorization.rb +90 -0
  167. data/app/models/spree/return_item/eligibility_validator/base_validator.rb +30 -0
  168. data/app/models/spree/return_item/eligibility_validator/default.rb +36 -0
  169. data/app/models/spree/return_item/eligibility_validator/inventory_shipped.rb +22 -0
  170. data/app/models/spree/return_item/eligibility_validator/no_reimbursements.rb +22 -0
  171. data/app/models/spree/return_item/eligibility_validator/order_completed.rb +22 -0
  172. data/app/models/spree/return_item/eligibility_validator/rma_required.rb +22 -0
  173. data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +22 -0
  174. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +47 -0
  175. data/app/models/spree/return_item/exchange_variant_eligibility/same_product.rb +13 -0
  176. data/app/models/spree/return_item.rb +320 -0
  177. data/app/models/spree/return_reason.rb +14 -0
  178. data/app/models/spree/returns_calculator.rb +9 -0
  179. data/app/models/spree/role.rb +14 -0
  180. data/app/models/spree/role_user.rb +11 -0
  181. data/app/models/spree/shipment.rb +431 -0
  182. data/app/models/spree/shipping_calculator.rb +23 -0
  183. data/app/models/spree/shipping_category.rb +10 -0
  184. data/app/models/spree/shipping_manifest.rb +30 -0
  185. data/app/models/spree/shipping_method.rb +133 -0
  186. data/app/models/spree/shipping_method_category.rb +8 -0
  187. data/app/models/spree/shipping_method_stock_location.rb +6 -0
  188. data/app/models/spree/shipping_method_zone.rb +8 -0
  189. data/app/models/spree/shipping_rate.rb +48 -0
  190. data/app/models/spree/shipping_rate_tax.rb +39 -0
  191. data/app/models/spree/state.rb +40 -0
  192. data/app/models/spree/state_change.rb +17 -0
  193. data/app/models/spree/stock/availability.rb +72 -0
  194. data/app/models/spree/stock/availability_validator.rb +36 -0
  195. data/app/models/spree/stock/content_item.rb +50 -0
  196. data/app/models/spree/stock/differentiator.rb +47 -0
  197. data/app/models/spree/stock/estimator.rb +71 -0
  198. data/app/models/spree/stock/inventory_unit_builder.rb +23 -0
  199. data/app/models/spree/stock/inventory_validator.rb +16 -0
  200. data/app/models/spree/stock/location_sorter/base.rb +38 -0
  201. data/app/models/spree/stock/location_sorter/default_first.rb +15 -0
  202. data/app/models/spree/stock/location_sorter/unsorted.rb +14 -0
  203. data/app/models/spree/stock/package.rb +142 -0
  204. data/app/models/spree/stock/quantifier.rb +49 -0
  205. data/app/models/spree/stock/shipping_rate_selector.rb +17 -0
  206. data/app/models/spree/stock/shipping_rate_sorter.rb +17 -0
  207. data/app/models/spree/stock/simple_coordinator.rb +119 -0
  208. data/app/models/spree/stock/splitter/backordered.rb +23 -0
  209. data/app/models/spree/stock/splitter/base.rb +35 -0
  210. data/app/models/spree/stock/splitter/shipping_category.rb +35 -0
  211. data/app/models/spree/stock/splitter/weight.rb +32 -0
  212. data/app/models/spree/stock/splitter_chain.rb +34 -0
  213. data/app/models/spree/stock_item.rb +128 -0
  214. data/app/models/spree/stock_location.rb +127 -0
  215. data/app/models/spree/stock_movement.rb +28 -0
  216. data/app/models/spree/stock_quantities.rb +83 -0
  217. data/app/models/spree/store.rb +83 -0
  218. data/app/models/spree/store_credit.rb +293 -0
  219. data/app/models/spree/store_credit_category.rb +18 -0
  220. data/app/models/spree/store_credit_event.rb +66 -0
  221. data/app/models/spree/store_credit_type.rb +10 -0
  222. data/app/models/spree/store_credit_update_reason.rb +4 -0
  223. data/app/models/spree/store_payment_method.rb +8 -0
  224. data/app/models/spree/store_selector/by_server_name.rb +32 -0
  225. data/app/models/spree/store_selector/legacy.rb +50 -0
  226. data/app/models/spree/store_shipping_method.rb +8 -0
  227. data/app/models/spree/tax/item_tax.rb +22 -0
  228. data/app/models/spree/tax/order_adjuster.rb +22 -0
  229. data/app/models/spree/tax/order_tax.rb +20 -0
  230. data/app/models/spree/tax/shipping_rate_taxer.rb +24 -0
  231. data/app/models/spree/tax/tax_helpers.rb +17 -0
  232. data/app/models/spree/tax/tax_location.rb +39 -0
  233. data/app/models/spree/tax_calculator/default.rb +85 -0
  234. data/app/models/spree/tax_calculator/shipping_rate.rb +58 -0
  235. data/app/models/spree/tax_category.rb +30 -0
  236. data/app/models/spree/tax_rate.rb +147 -0
  237. data/app/models/spree/tax_rate_tax_category.rb +8 -0
  238. data/app/models/spree/taxon.rb +144 -0
  239. data/app/models/spree/taxonomy.rb +29 -0
  240. data/app/models/spree/unit_cancel.rb +36 -0
  241. data/app/models/spree/user_address.rb +23 -0
  242. data/app/models/spree/user_class_handle.rb +28 -0
  243. data/app/models/spree/user_stock_location.rb +8 -0
  244. data/app/models/spree/validations/db_maximum_length_validator.rb +23 -0
  245. data/app/models/spree/variant/price_selector.rb +37 -0
  246. data/app/models/spree/variant/pricing_options.rb +98 -0
  247. data/app/models/spree/variant/scopes.rb +42 -0
  248. data/app/models/spree/variant/vat_price_generator.rb +63 -0
  249. data/app/models/spree/variant.rb +465 -0
  250. data/app/models/spree/variant_property_rule.rb +44 -0
  251. data/app/models/spree/variant_property_rule_condition.rb +10 -0
  252. data/app/models/spree/variant_property_rule_value.rb +12 -0
  253. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +40 -0
  254. data/app/models/spree/wallet/default_payment_builder.rb +28 -0
  255. data/app/models/spree/wallet.rb +78 -0
  256. data/app/models/spree/wallet_payment_source.rb +19 -0
  257. data/app/models/spree/zone.rb +148 -0
  258. data/app/models/spree/zone_member.rb +10 -0
  259. data/app/views/layouts/spree/base_mailer.html.erb +784 -0
  260. data/app/views/spree/carton_mailer/shipped_email.html.erb +34 -0
  261. data/app/views/spree/carton_mailer/shipped_email.text.erb +16 -0
  262. data/app/views/spree/order_mailer/cancel_email.html.erb +45 -0
  263. data/app/views/spree/order_mailer/cancel_email.text.erb +16 -0
  264. data/app/views/spree/order_mailer/confirm_email.html.erb +84 -0
  265. data/app/views/spree/order_mailer/confirm_email.text.erb +38 -0
  266. data/app/views/spree/order_mailer/inventory_cancellation_email.html.erb +26 -0
  267. data/app/views/spree/order_mailer/inventory_cancellation_email.text.erb +10 -0
  268. data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_errored.text.erb +2 -0
  269. data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_finished.text.erb +2 -0
  270. data/app/views/spree/reimbursement_mailer/reimbursement_email.html.erb +39 -0
  271. data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +17 -0
  272. data/app/views/spree/shared/_base_mailer_footer.html.erb +1 -0
  273. data/app/views/spree/shared/_base_mailer_header.html.erb +1 -0
  274. data/app/views/spree/shared/_error_messages.html.erb +11 -0
  275. data/app/views/spree/test_mailer/test_email.html.erb +40 -0
  276. data/app/views/spree/test_mailer/test_email.text.erb +4 -0
  277. data/config/initializers/assets.rb +5 -0
  278. data/config/initializers/friendly_id.rb +90 -0
  279. data/config/locales/en.yml +2107 -0
  280. data/db/default/spree/countries.rb +45 -0
  281. data/db/default/spree/refund_reasons.rb +3 -0
  282. data/db/default/spree/return_reasons.rb +11 -0
  283. data/db/default/spree/roles.rb +3 -0
  284. data/db/default/spree/shipping_categories.rb +3 -0
  285. data/db/default/spree/states.rb +14 -0
  286. data/db/default/spree/stock_locations.rb +4 -0
  287. data/db/default/spree/store_credit.rb +22 -0
  288. data/db/default/spree/stores.rb +10 -0
  289. data/db/default/spree/zones.rb +13 -0
  290. data/db/migrate/20160101010000_solidus_one_four.rb +1102 -0
  291. data/db/migrate/20160420044191_create_spree_wallet_payment_sources.rb +27 -0
  292. data/db/migrate/20160420181916_migrate_credit_cards_to_wallet_payment_sources.rb +29 -0
  293. data/db/migrate/20160924135758_remove_is_default_from_prices.rb +7 -0
  294. data/db/migrate/20161009141333_remove_currency_from_line_items.rb +7 -0
  295. data/db/migrate/20161014221052_add_available_to_columns_and_remove_display_on_from_payment_methods.rb +30 -0
  296. data/db/migrate/20161017102621_create_spree_promotion_code_batch.rb +38 -0
  297. data/db/migrate/20161123154034_add_available_to_users_and_remove_display_on_from_shipping_methods.rb +22 -0
  298. data/db/migrate/20161129035810_add_index_to_spree_payments_number.rb +7 -0
  299. data/db/migrate/20170223235001_remove_spree_store_credits_column.rb +7 -0
  300. data/db/migrate/20170317035819_add_lft_and_rgt_indexes_to_taxons.rb +8 -0
  301. data/db/migrate/20170319191942_remove_order_id_from_inventory_units.rb +30 -0
  302. data/db/migrate/20170412103617_transform_tax_rate_category_relation.rb +50 -0
  303. data/db/migrate/20170422134804_add_roles_unique_constraints.rb +8 -0
  304. data/db/migrate/20170522143442_add_time_range_to_tax_rate.rb +8 -0
  305. data/db/migrate/20170608074534_rename_bogus_gateways.rb +17 -0
  306. data/db/migrate/20170831201542_remove_default_tax_from_spree_zones.rb +7 -0
  307. data/db/migrate/20180202190713_create_promotion_rule_stores.rb +12 -0
  308. data/db/migrate/20180202222641_create_store_shipping_methods.rb +12 -0
  309. data/db/migrate/20180313220213_add_available_locales_to_stores.rb +9 -0
  310. data/db/migrate/20180322142651_add_amount_remaining_to_store_credit_events.rb +61 -0
  311. data/db/migrate/20180328172631_add_join_characters_to_promotion_code_batch.rb +11 -0
  312. data/db/seeds.rb +17 -0
  313. data/lib/generators/spree/custom_user/custom_user_generator.rb +43 -0
  314. data/lib/generators/spree/custom_user/templates/authentication_helpers.rb.tt +40 -0
  315. data/lib/generators/spree/custom_user/templates/migration.rb.tt +30 -0
  316. data/lib/generators/spree/dummy/dummy_generator.rb +148 -0
  317. data/lib/generators/spree/dummy/templates/rails/application.rb.tt +10 -0
  318. data/lib/generators/spree/dummy/templates/rails/boot.rb +6 -0
  319. data/lib/generators/spree/dummy/templates/rails/database.yml +71 -0
  320. data/lib/generators/spree/dummy/templates/rails/routes.rb +2 -0
  321. data/lib/generators/spree/dummy/templates/rails/script/rails +6 -0
  322. data/lib/generators/spree/dummy/templates/rails/test.rb +33 -0
  323. data/lib/generators/spree/install/install_generator.rb +189 -0
  324. data/lib/generators/spree/install/templates/config/initializers/spree.rb.tt +67 -0
  325. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/backend/all.js +10 -0
  326. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/frontend/all.js +10 -0
  327. data/lib/generators/spree/install/templates/vendor/assets/stylesheets/spree/backend/all.css +9 -0
  328. data/lib/generators/spree/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +9 -0
  329. data/lib/solidus/migrations/rename_gateways.rb +39 -0
  330. data/lib/solidus_core.rb +3 -0
  331. data/lib/spree/app_configuration.rb +529 -0
  332. data/lib/spree/config.rb +5 -0
  333. data/lib/spree/core/active_merchant_dependencies.rb +13 -0
  334. data/lib/spree/core/class_constantizer.rb +33 -0
  335. data/lib/spree/core/controller_helpers/auth.rb +83 -0
  336. data/lib/spree/core/controller_helpers/common.rb +82 -0
  337. data/lib/spree/core/controller_helpers/order.rb +107 -0
  338. data/lib/spree/core/controller_helpers/payment_parameters.rb +221 -0
  339. data/lib/spree/core/controller_helpers/pricing.rb +30 -0
  340. data/lib/spree/core/controller_helpers/search.rb +16 -0
  341. data/lib/spree/core/controller_helpers/store.rb +19 -0
  342. data/lib/spree/core/controller_helpers/strong_parameters.rb +63 -0
  343. data/lib/spree/core/current_store.rb +24 -0
  344. data/lib/spree/core/engine.rb +61 -0
  345. data/lib/spree/core/environment/calculators.rb +18 -0
  346. data/lib/spree/core/environment.rb +22 -0
  347. data/lib/spree/core/environment_extension.rb +31 -0
  348. data/lib/spree/core/importer/order.rb +203 -0
  349. data/lib/spree/core/importer/product.rb +65 -0
  350. data/lib/spree/core/importer.rb +11 -0
  351. data/lib/spree/core/permalinks.rb +67 -0
  352. data/lib/spree/core/product_duplicator.rb +75 -0
  353. data/lib/spree/core/product_filters.rb +197 -0
  354. data/lib/spree/core/role_configuration.rb +88 -0
  355. data/lib/spree/core/search/base.rb +120 -0
  356. data/lib/spree/core/search/variant.rb +66 -0
  357. data/lib/spree/core/stock_configuration.rb +26 -0
  358. data/lib/spree/core/validators/email.rb +30 -0
  359. data/lib/spree/core/version.rb +11 -0
  360. data/lib/spree/core.rb +92 -0
  361. data/lib/spree/deprecation.rb +7 -0
  362. data/lib/spree/i18n.rb +35 -0
  363. data/lib/spree/localized_number.rb +30 -0
  364. data/lib/spree/mailer_previews/carton_preview.rb +13 -0
  365. data/lib/spree/mailer_previews/order_preview.rb +25 -0
  366. data/lib/spree/mailer_previews/reimbursement_preview.rb +13 -0
  367. data/lib/spree/migration_helpers.rb +21 -0
  368. data/lib/spree/migrations.rb +85 -0
  369. data/lib/spree/money.rb +133 -0
  370. data/lib/spree/paranoia_deprecations.rb +21 -0
  371. data/lib/spree/permission_sets/base.rb +32 -0
  372. data/lib/spree/permission_sets/configuration_display.rb +25 -0
  373. data/lib/spree/permission_sets/configuration_management.rb +25 -0
  374. data/lib/spree/permission_sets/dashboard_display.rb +11 -0
  375. data/lib/spree/permission_sets/default_customer.rb +37 -0
  376. data/lib/spree/permission_sets/order_display.rb +21 -0
  377. data/lib/spree/permission_sets/order_management.rb +22 -0
  378. data/lib/spree/permission_sets/product_display.rb +19 -0
  379. data/lib/spree/permission_sets/product_management.rb +21 -0
  380. data/lib/spree/permission_sets/promotion_display.rb +15 -0
  381. data/lib/spree/permission_sets/promotion_management.rb +14 -0
  382. data/lib/spree/permission_sets/restricted_stock_display.rb +18 -0
  383. data/lib/spree/permission_sets/restricted_stock_management.rb +18 -0
  384. data/lib/spree/permission_sets/stock_display.rb +12 -0
  385. data/lib/spree/permission_sets/stock_management.rb +12 -0
  386. data/lib/spree/permission_sets/super_user.rb +11 -0
  387. data/lib/spree/permission_sets/user_display.rb +13 -0
  388. data/lib/spree/permission_sets/user_management.rb +21 -0
  389. data/lib/spree/permission_sets.rb +20 -0
  390. data/lib/spree/permitted_attributes.rb +133 -0
  391. data/lib/spree/preferences/configuration.rb +107 -0
  392. data/lib/spree/preferences/preferable.rb +180 -0
  393. data/lib/spree/preferences/preferable_class_methods.rb +88 -0
  394. data/lib/spree/preferences/scoped_store.rb +36 -0
  395. data/lib/spree/preferences/static_model_preferences.rb +49 -0
  396. data/lib/spree/preferences/statically_configurable.rb +39 -0
  397. data/lib/spree/preferences/store.rb +91 -0
  398. data/lib/spree/promo/environment.rb +13 -0
  399. data/lib/spree/testing_support/ability_helpers.rb +107 -0
  400. data/lib/spree/testing_support/authorization_helpers.rb +69 -0
  401. data/lib/spree/testing_support/bar_ability.rb +19 -0
  402. data/lib/spree/testing_support/caching.rb +33 -0
  403. data/lib/spree/testing_support/capybara_ext.rb +147 -0
  404. data/lib/spree/testing_support/common_rake.rb +38 -0
  405. data/lib/spree/testing_support/controller_requests.rb +108 -0
  406. data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/backend/all.js +10 -0
  407. data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/frontend/all.js +10 -0
  408. data/lib/spree/testing_support/dummy_app/assets/stylesheets/spree/backend/all.css +9 -0
  409. data/lib/spree/testing_support/dummy_app/assets/stylesheets/spree/frontend/all.css +9 -0
  410. data/lib/spree/testing_support/dummy_app/database.yml +33 -0
  411. data/lib/spree/testing_support/dummy_app/migrations.rb +47 -0
  412. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +67 -0
  413. data/lib/spree/testing_support/dummy_app/routes.rb +5 -0
  414. data/lib/spree/testing_support/dummy_app/views/layouts/application.html.erb +1 -0
  415. data/lib/spree/testing_support/dummy_app.rb +120 -0
  416. data/lib/spree/testing_support/extension_rake.rb +11 -0
  417. data/lib/spree/testing_support/factories/address_factory.rb +45 -0
  418. data/lib/spree/testing_support/factories/adjustment_factory.rb +45 -0
  419. data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +8 -0
  420. data/lib/spree/testing_support/factories/calculator_factory.rb +26 -0
  421. data/lib/spree/testing_support/factories/carton_factory.rb +26 -0
  422. data/lib/spree/testing_support/factories/country_factory.rb +21 -0
  423. data/lib/spree/testing_support/factories/credit_card_factory.rb +17 -0
  424. data/lib/spree/testing_support/factories/customer_return_factory.rb +35 -0
  425. data/lib/spree/testing_support/factories/image_factory.rb +7 -0
  426. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +26 -0
  427. data/lib/spree/testing_support/factories/line_item_factory.rb +18 -0
  428. data/lib/spree/testing_support/factories/option_type_factory.rb +8 -0
  429. data/lib/spree/testing_support/factories/option_value_factory.rb +10 -0
  430. data/lib/spree/testing_support/factories/order_factory.rb +160 -0
  431. data/lib/spree/testing_support/factories/order_promotion_factory.rb +11 -0
  432. data/lib/spree/testing_support/factories/payment_factory.rb +51 -0
  433. data/lib/spree/testing_support/factories/payment_method_factory.rb +32 -0
  434. data/lib/spree/testing_support/factories/price_factory.rb +11 -0
  435. data/lib/spree/testing_support/factories/product_factory.rb +50 -0
  436. data/lib/spree/testing_support/factories/product_option_type_factory.rb +11 -0
  437. data/lib/spree/testing_support/factories/product_property_factory.rb +11 -0
  438. data/lib/spree/testing_support/factories/promotion_category_factory.rb +7 -0
  439. data/lib/spree/testing_support/factories/promotion_code_factory.rb +11 -0
  440. data/lib/spree/testing_support/factories/promotion_factory.rb +64 -0
  441. data/lib/spree/testing_support/factories/property_factory.rb +8 -0
  442. data/lib/spree/testing_support/factories/refund_factory.rb +21 -0
  443. data/lib/spree/testing_support/factories/refund_reason_factory.rb +7 -0
  444. data/lib/spree/testing_support/factories/reimbursement_factory.rb +21 -0
  445. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +9 -0
  446. data/lib/spree/testing_support/factories/return_authorization_factory.rb +20 -0
  447. data/lib/spree/testing_support/factories/return_item_factory.rb +23 -0
  448. data/lib/spree/testing_support/factories/return_reason_factory.rb +7 -0
  449. data/lib/spree/testing_support/factories/role_factory.rb +11 -0
  450. data/lib/spree/testing_support/factories/shipment_factory.rb +37 -0
  451. data/lib/spree/testing_support/factories/shipping_category_factory.rb +7 -0
  452. data/lib/spree/testing_support/factories/shipping_method_factory.rb +42 -0
  453. data/lib/spree/testing_support/factories/shipping_rate_factory.rb +11 -0
  454. data/lib/spree/testing_support/factories/state_factory.rb +28 -0
  455. data/lib/spree/testing_support/factories/stock_item_factory.rb +14 -0
  456. data/lib/spree/testing_support/factories/stock_location_factory.rb +41 -0
  457. data/lib/spree/testing_support/factories/stock_movement_factory.rb +15 -0
  458. data/lib/spree/testing_support/factories/stock_package_factory.rb +28 -0
  459. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +7 -0
  460. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +30 -0
  461. data/lib/spree/testing_support/factories/store_credit_factory.rb +16 -0
  462. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +13 -0
  463. data/lib/spree/testing_support/factories/store_credit_update_reason_factory.rb +7 -0
  464. data/lib/spree/testing_support/factories/store_factory.rb +10 -0
  465. data/lib/spree/testing_support/factories/tax_category_factory.rb +10 -0
  466. data/lib/spree/testing_support/factories/tax_rate_factory.rb +14 -0
  467. data/lib/spree/testing_support/factories/taxon_factory.rb +11 -0
  468. data/lib/spree/testing_support/factories/taxonomy_factory.rb +7 -0
  469. data/lib/spree/testing_support/factories/user_factory.rb +21 -0
  470. data/lib/spree/testing_support/factories/variant_factory.rb +43 -0
  471. data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +11 -0
  472. data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +22 -0
  473. data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +11 -0
  474. data/lib/spree/testing_support/factories/zone_factory.rb +24 -0
  475. data/lib/spree/testing_support/factories.rb +7 -0
  476. data/lib/spree/testing_support/flash.rb +29 -0
  477. data/lib/spree/testing_support/order_walkthrough.rb +87 -0
  478. data/lib/spree/testing_support/preferences.rb +34 -0
  479. data/lib/spree/testing_support/sequences.rb +8 -0
  480. data/lib/spree/testing_support/shared_examples/gallery.rb +18 -0
  481. data/lib/spree/testing_support/url_helpers.rb +11 -0
  482. data/lib/spree_core.rb +3 -0
  483. data/lib/tasks/core.rake +104 -0
  484. data/lib/tasks/email.rake +9 -0
  485. data/lib/tasks/migrations/copy_order_bill_address_to_credit_card.rake +115 -0
  486. data/lib/tasks/migrations/migrate_shipping_rate_taxes.rake +20 -0
  487. data/lib/tasks/migrations/migrate_user_addresses.rake +31 -0
  488. data/lib/tasks/migrations/rename_gateways.rake +21 -0
  489. data/lib/tasks/order_capturing.rake +25 -0
  490. data/script/rails +10 -0
  491. data/solidus_core.gemspec +48 -0
  492. data/spec/fixtures/thinking-cat.jpg +0 -0
  493. data/spec/helpers/base_helper_spec.rb +168 -0
  494. data/spec/helpers/products_helper_spec.rb +200 -0
  495. data/spec/helpers/taxons_helper_spec.rb +41 -0
  496. data/spec/jobs/promotion_code_batch_job_spec.rb +96 -0
  497. data/spec/lib/calculated_adjustments_spec.rb +133 -0
  498. data/spec/lib/i18n_spec.rb +92 -0
  499. data/spec/lib/search/base_spec.rb +87 -0
  500. data/spec/lib/search/variant_spec.rb +115 -0
  501. data/spec/lib/spree/core/class_constantizer_spec.rb +71 -0
  502. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +69 -0
  503. data/spec/lib/spree/core/controller_helpers/order_spec.rb +126 -0
  504. data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +195 -0
  505. data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +81 -0
  506. data/spec/lib/spree/core/controller_helpers/search_spec.rb +21 -0
  507. data/spec/lib/spree/core/controller_helpers/store_spec.rb +18 -0
  508. data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +41 -0
  509. data/spec/lib/spree/core/current_store_spec.rb +33 -0
  510. data/spec/lib/spree/core/environment_extension_spec.rb +36 -0
  511. data/spec/lib/spree/core/importer/order_spec.rb +484 -0
  512. data/spec/lib/spree/core/role_configuration_spec.rb +155 -0
  513. data/spec/lib/spree/core/stock_configuration_spec.rb +59 -0
  514. data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +61 -0
  515. data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +20 -0
  516. data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +14 -0
  517. data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +44 -0
  518. data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +14 -0
  519. data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +14 -0
  520. data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +14 -0
  521. data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +39 -0
  522. data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +14 -0
  523. data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +14 -0
  524. data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +14 -0
  525. data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +14 -0
  526. data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +14 -0
  527. data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +376 -0
  528. data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +14 -0
  529. data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +40 -0
  530. data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +32 -0
  531. data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +14 -0
  532. data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +32 -0
  533. data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +14 -0
  534. data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +14 -0
  535. data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +14 -0
  536. data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +14 -0
  537. data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +32 -0
  538. data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +14 -0
  539. data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +14 -0
  540. data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +14 -0
  541. data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +20 -0
  542. data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +14 -0
  543. data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +14 -0
  544. data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +20 -0
  545. data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +14 -0
  546. data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +20 -0
  547. data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +14 -0
  548. data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +14 -0
  549. data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +44 -0
  550. data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +14 -0
  551. data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +59 -0
  552. data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +14 -0
  553. data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +35 -0
  554. data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +14 -0
  555. data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +28 -0
  556. data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +14 -0
  557. data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +43 -0
  558. data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +14 -0
  559. data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +20 -0
  560. data/spec/lib/spree/core/testing_support/factories/store_credit_update_reason_factory_spec.rb +14 -0
  561. data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +14 -0
  562. data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +14 -0
  563. data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +14 -0
  564. data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +14 -0
  565. data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +14 -0
  566. data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +24 -0
  567. data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +56 -0
  568. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +14 -0
  569. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +14 -0
  570. data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +14 -0
  571. data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +20 -0
  572. data/spec/lib/spree/core/testing_support/preferences_spec.rb +28 -0
  573. data/spec/lib/spree/core/validators/email_spec.rb +53 -0
  574. data/spec/lib/spree/core/version_spec.rb +19 -0
  575. data/spec/lib/spree/localized_number_spec.rb +45 -0
  576. data/spec/lib/spree/migrations_spec.rb +32 -0
  577. data/spec/lib/spree/money_spec.rb +305 -0
  578. data/spec/lib/spree/permission_sets/default_customer_spec.rb +22 -0
  579. data/spec/lib/tasks/dummy_task.rake +12 -0
  580. data/spec/lib/tasks/dummy_task_spec.rb +30 -0
  581. data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +19 -0
  582. data/spec/mailers/carton_mailer_spec.rb +44 -0
  583. data/spec/mailers/order_mailer_spec.rb +117 -0
  584. data/spec/mailers/promotion_code_batch_mailer_spec.rb +47 -0
  585. data/spec/mailers/reimbursement_mailer_spec.rb +36 -0
  586. data/spec/mailers/test_mailer_spec.rb +11 -0
  587. data/spec/models/spree/ability_spec.rb +279 -0
  588. data/spec/models/spree/address_spec.rb +375 -0
  589. data/spec/models/spree/adjustment_reason_spec.rb +11 -0
  590. data/spec/models/spree/adjustment_spec.rb +339 -0
  591. data/spec/models/spree/app_configuration_spec.rb +55 -0
  592. data/spec/models/spree/asset_spec.rb +25 -0
  593. data/spec/models/spree/calculator/default_tax_spec.rb +260 -0
  594. data/spec/models/spree/calculator/distributed_amount_spec.rb +82 -0
  595. data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +30 -0
  596. data/spec/models/spree/calculator/flat_rate_spec.rb +52 -0
  597. data/spec/models/spree/calculator/flexi_rate_spec.rb +158 -0
  598. data/spec/models/spree/calculator/free_shipping_spec.rb +8 -0
  599. data/spec/models/spree/calculator/percent_on_line_item_spec.rb +20 -0
  600. data/spec/models/spree/calculator/percent_per_item_spec.rb +12 -0
  601. data/spec/models/spree/calculator/price_sack_spec.rb +35 -0
  602. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +70 -0
  603. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +39 -0
  604. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +18 -0
  605. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +56 -0
  606. data/spec/models/spree/calculator/shipping/per_item_spec.rb +25 -0
  607. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +35 -0
  608. data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +99 -0
  609. data/spec/models/spree/calculator/tiered_percent_spec.rb +191 -0
  610. data/spec/models/spree/calculator_spec.rb +43 -0
  611. data/spec/models/spree/carton_spec.rb +137 -0
  612. data/spec/models/spree/classification_spec.rb +114 -0
  613. data/spec/models/spree/concerns/display_money_spec.rb +44 -0
  614. data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +52 -0
  615. data/spec/models/spree/concerns/user_address_book_spec.rb +358 -0
  616. data/spec/models/spree/concerns/user_methods_spec.rb +121 -0
  617. data/spec/models/spree/country_spec.rb +78 -0
  618. data/spec/models/spree/credit_card_spec.rb +373 -0
  619. data/spec/models/spree/customer_return_spec.rb +293 -0
  620. data/spec/models/spree/distributed_amounts_handler_spec.rb +83 -0
  621. data/spec/models/spree/exchange_spec.rb +76 -0
  622. data/spec/models/spree/fulfilment_changer_spec.rb +307 -0
  623. data/spec/models/spree/gallery/product_gallery_spec.rb +21 -0
  624. data/spec/models/spree/gallery/variant_gallery_spec.rb +21 -0
  625. data/spec/models/spree/gateway/bogus_simple.rb +14 -0
  626. data/spec/models/spree/gateway/bogus_spec.rb +14 -0
  627. data/spec/models/spree/gateway_spec.rb +14 -0
  628. data/spec/models/spree/image_spec.rb +25 -0
  629. data/spec/models/spree/inventory_unit_spec.rb +312 -0
  630. data/spec/models/spree/line_item_spec.rb +240 -0
  631. data/spec/models/spree/option_type_spec.rb +16 -0
  632. data/spec/models/spree/option_value_spec.rb +52 -0
  633. data/spec/models/spree/order/address_spec.rb +52 -0
  634. data/spec/models/spree/order/adjustments_spec.rb +29 -0
  635. data/spec/models/spree/order/callbacks_spec.rb +44 -0
  636. data/spec/models/spree/order/checkout_spec.rb +744 -0
  637. data/spec/models/spree/order/finalizing_spec.rb +111 -0
  638. data/spec/models/spree/order/number_generator_spec.rb +47 -0
  639. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +137 -0
  640. data/spec/models/spree/order/payment_spec.rb +280 -0
  641. data/spec/models/spree/order/risk_assessment_spec.rb +70 -0
  642. data/spec/models/spree/order/state_machine_spec.rb +122 -0
  643. data/spec/models/spree/order/totals_spec.rb +26 -0
  644. data/spec/models/spree/order/updating_spec.rb +18 -0
  645. data/spec/models/spree/order/validations_spec.rb +17 -0
  646. data/spec/models/spree/order_cancellations_spec.rb +192 -0
  647. data/spec/models/spree/order_capturing_spec.rb +16 -0
  648. data/spec/models/spree/order_contents_spec.rb +362 -0
  649. data/spec/models/spree/order_inventory_spec.rb +278 -0
  650. data/spec/models/spree/order_merger_spec.rb +159 -0
  651. data/spec/models/spree/order_mutex_spec.rb +89 -0
  652. data/spec/models/spree/order_promotion_spec.rb +33 -0
  653. data/spec/models/spree/order_shipping_spec.rb +247 -0
  654. data/spec/models/spree/order_spec.rb +1633 -0
  655. data/spec/models/spree/order_taxation_spec.rb +128 -0
  656. data/spec/models/spree/order_update_attributes_spec.rb +49 -0
  657. data/spec/models/spree/order_updater_spec.rb +560 -0
  658. data/spec/models/spree/payment/cancellation_spec.rb +83 -0
  659. data/spec/models/spree/payment_create_spec.rb +205 -0
  660. data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +10 -0
  661. data/spec/models/spree/payment_method/check_spec.rb +80 -0
  662. data/spec/models/spree/payment_method/credit_card_spec.rb +68 -0
  663. data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +20 -0
  664. data/spec/models/spree/payment_method/store_credit_spec.rb +325 -0
  665. data/spec/models/spree/payment_method_spec.rb +408 -0
  666. data/spec/models/spree/payment_spec.rb +1274 -0
  667. data/spec/models/spree/permission_sets/base_spec.rb +14 -0
  668. data/spec/models/spree/permission_sets/configuration_display.rb +79 -0
  669. data/spec/models/spree/permission_sets/configuration_management_spec.rb +49 -0
  670. data/spec/models/spree/permission_sets/dashboard_display_spec.rb +23 -0
  671. data/spec/models/spree/permission_sets/order_display_spec.rb +56 -0
  672. data/spec/models/spree/permission_sets/order_management_spec.rb +43 -0
  673. data/spec/models/spree/permission_sets/product_display_spec.rb +57 -0
  674. data/spec/models/spree/permission_sets/product_management_spec.rb +39 -0
  675. data/spec/models/spree/permission_sets/promotion_display_spec.rb +41 -0
  676. data/spec/models/spree/permission_sets/promotion_management_spec.rb +27 -0
  677. data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +42 -0
  678. data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +42 -0
  679. data/spec/models/spree/permission_sets/stock_display_spec.rb +25 -0
  680. data/spec/models/spree/permission_sets/stock_management_spec.rb +23 -0
  681. data/spec/models/spree/permission_sets/user_display_spec.rb +39 -0
  682. data/spec/models/spree/permission_sets/user_management_spec.rb +56 -0
  683. data/spec/models/spree/preference_spec.rb +79 -0
  684. data/spec/models/spree/preferences/configuration_spec.rb +27 -0
  685. data/spec/models/spree/preferences/preferable_spec.rb +334 -0
  686. data/spec/models/spree/preferences/scoped_store_spec.rb +62 -0
  687. data/spec/models/spree/preferences/static_model_preferences_spec.rb +79 -0
  688. data/spec/models/spree/preferences/statically_configurable_spec.rb +67 -0
  689. data/spec/models/spree/preferences/store_spec.rb +40 -0
  690. data/spec/models/spree/price_spec.rb +150 -0
  691. data/spec/models/spree/product/scopes_spec.rb +164 -0
  692. data/spec/models/spree/product_duplicator_spec.rb +92 -0
  693. data/spec/models/spree/product_filter_spec.rb +28 -0
  694. data/spec/models/spree/product_property_spec.rb +20 -0
  695. data/spec/models/spree/product_spec.rb +584 -0
  696. data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +126 -0
  697. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +198 -0
  698. data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +298 -0
  699. data/spec/models/spree/promotion/actions/free_shipping_spec.rb +61 -0
  700. data/spec/models/spree/promotion/rules/first_order_spec.rb +77 -0
  701. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +71 -0
  702. data/spec/models/spree/promotion/rules/item_total_spec.rb +113 -0
  703. data/spec/models/spree/promotion/rules/nth_order_spec.rb +72 -0
  704. data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +44 -0
  705. data/spec/models/spree/promotion/rules/option_value_spec.rb +96 -0
  706. data/spec/models/spree/promotion/rules/product_spec.rb +178 -0
  707. data/spec/models/spree/promotion/rules/store_spec.rb +35 -0
  708. data/spec/models/spree/promotion/rules/taxon_spec.rb +174 -0
  709. data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +28 -0
  710. data/spec/models/spree/promotion/rules/user_role_spec.rb +88 -0
  711. data/spec/models/spree/promotion/rules/user_spec.rb +39 -0
  712. data/spec/models/spree/promotion_action_spec.rb +44 -0
  713. data/spec/models/spree/promotion_category_spec.rb +19 -0
  714. data/spec/models/spree/promotion_code/batch_builder_spec.rb +107 -0
  715. data/spec/models/spree/promotion_code_batch_spec.rb +54 -0
  716. data/spec/models/spree/promotion_code_spec.rb +206 -0
  717. data/spec/models/spree/promotion_handler/cart_spec.rb +132 -0
  718. data/spec/models/spree/promotion_handler/coupon_spec.rb +365 -0
  719. data/spec/models/spree/promotion_handler/page_spec.rb +45 -0
  720. data/spec/models/spree/promotion_handler/shipping_spec.rb +96 -0
  721. data/spec/models/spree/promotion_rule_spec.rb +34 -0
  722. data/spec/models/spree/promotion_spec.rb +834 -0
  723. data/spec/models/spree/refund_spec.rb +199 -0
  724. data/spec/models/spree/reimbursement/credit_spec.rb +38 -0
  725. data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +144 -0
  726. data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +85 -0
  727. data/spec/models/spree/reimbursement_performer_spec.rb +32 -0
  728. data/spec/models/spree/reimbursement_spec.rb +253 -0
  729. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +52 -0
  730. data/spec/models/spree/reimbursement_type/credit_spec.rb +55 -0
  731. data/spec/models/spree/reimbursement_type/exchange_spec.rb +47 -0
  732. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +109 -0
  733. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +99 -0
  734. data/spec/models/spree/return_authorization_spec.rb +226 -0
  735. data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +79 -0
  736. data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +59 -0
  737. data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +86 -0
  738. data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +35 -0
  739. data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +31 -0
  740. data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +42 -0
  741. data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +66 -0
  742. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +43 -0
  743. data/spec/models/spree/return_item_spec.rb +776 -0
  744. data/spec/models/spree/returns_calculator_spec.rb +16 -0
  745. data/spec/models/spree/shipment_spec.rb +907 -0
  746. data/spec/models/spree/shipping_calculator_spec.rb +57 -0
  747. data/spec/models/spree/shipping_manifest_spec.rb +110 -0
  748. data/spec/models/spree/shipping_method_spec.rb +260 -0
  749. data/spec/models/spree/shipping_rate_spec.rb +154 -0
  750. data/spec/models/spree/shipping_rate_tax_spec.rb +79 -0
  751. data/spec/models/spree/state_spec.rb +43 -0
  752. data/spec/models/spree/stock/availability_spec.rb +143 -0
  753. data/spec/models/spree/stock/availability_validator_spec.rb +140 -0
  754. data/spec/models/spree/stock/content_item_spec.rb +70 -0
  755. data/spec/models/spree/stock/differentiator_spec.rb +41 -0
  756. data/spec/models/spree/stock/estimator_spec.rb +240 -0
  757. data/spec/models/spree/stock/inventory_unit_builder_spec.rb +34 -0
  758. data/spec/models/spree/stock/location_sorter/default_first_spec.rb +20 -0
  759. data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +19 -0
  760. data/spec/models/spree/stock/package_spec.rb +182 -0
  761. data/spec/models/spree/stock/quantifier_spec.rb +113 -0
  762. data/spec/models/spree/stock/shipping_rate_selector_spec.rb +18 -0
  763. data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +18 -0
  764. data/spec/models/spree/stock/simple_coordinator_spec.rb +247 -0
  765. data/spec/models/spree/stock/splitter/backordered_spec.rb +31 -0
  766. data/spec/models/spree/stock/splitter/base_spec.rb +22 -0
  767. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +48 -0
  768. data/spec/models/spree/stock/splitter/weight_spec.rb +31 -0
  769. data/spec/models/spree/stock/splitter_chain_spec.rb +66 -0
  770. data/spec/models/spree/stock_item_spec.rb +347 -0
  771. data/spec/models/spree/stock_location_spec.rb +288 -0
  772. data/spec/models/spree/stock_movement_spec.rb +58 -0
  773. data/spec/models/spree/stock_quantities_spec.rb +249 -0
  774. data/spec/models/spree/store_credit_category_spec.rb +19 -0
  775. data/spec/models/spree/store_credit_event_spec.rb +328 -0
  776. data/spec/models/spree/store_credit_spec.rb +900 -0
  777. data/spec/models/spree/store_selector/by_server_name_spec.rb +28 -0
  778. data/spec/models/spree/store_selector/legacy_spec.rb +46 -0
  779. data/spec/models/spree/store_spec.rb +156 -0
  780. data/spec/models/spree/tax/order_adjuster_spec.rb +35 -0
  781. data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +59 -0
  782. data/spec/models/spree/tax/tax_location_spec.rb +79 -0
  783. data/spec/models/spree/tax/taxation_integration_spec.rb +815 -0
  784. data/spec/models/spree/tax_calculator/default_spec.rb +56 -0
  785. data/spec/models/spree/tax_category_spec.rb +29 -0
  786. data/spec/models/spree/tax_rate_spec.rb +316 -0
  787. data/spec/models/spree/taxon_spec.rb +169 -0
  788. data/spec/models/spree/taxonomy_spec.rb +15 -0
  789. data/spec/models/spree/unit_cancel_spec.rb +61 -0
  790. data/spec/models/spree/user_spec.rb +247 -0
  791. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +33 -0
  792. data/spec/models/spree/variant/price_selector_spec.rb +90 -0
  793. data/spec/models/spree/variant/pricing_options_spec.rb +181 -0
  794. data/spec/models/spree/variant/scopes_spec.rb +94 -0
  795. data/spec/models/spree/variant/vat_price_generator_spec.rb +77 -0
  796. data/spec/models/spree/variant_property_rule_condition_spec.rb +17 -0
  797. data/spec/models/spree/variant_property_rule_spec.rb +85 -0
  798. data/spec/models/spree/variant_property_rule_value_spec.rb +20 -0
  799. data/spec/models/spree/variant_spec.rb +822 -0
  800. data/spec/models/spree/wallet_payment_source_spec.rb +48 -0
  801. data/spec/models/spree/wallet_spec.rb +155 -0
  802. data/spec/models/spree/zone_spec.rb +248 -0
  803. data/spec/rails_helper.rb +45 -0
  804. data/spec/shared_examples/calculator_shared_examples.rb +10 -0
  805. data/spec/spec_helper.rb +39 -0
  806. data/spec/support/big_decimal.rb +7 -0
  807. data/spec/support/concerns/default_price.rb +36 -0
  808. data/spec/support/concerns/payment_source.rb +66 -0
  809. data/spec/support/concerns/working_factories.rb +15 -0
  810. data/spec/support/dummy_ability.rb +7 -0
  811. data/spec/support/shared_contexts/rake.rb +32 -0
  812. data/vendor/assets/javascripts/jquery.payment.js +648 -0
  813. data/vendor/assets/javascripts/jsuri.js +2 -0
  814. data/vendor/assets/stylesheets/normalize.css +375 -0
  815. metadata +1226 -0
@@ -0,0 +1,529 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This is the primary location for defining spree preferences
4
+ #
5
+ # The expectation is that this is created once and stored in
6
+ # the spree environment
7
+ #
8
+ # setters:
9
+ # a.color = :blue
10
+ # a[:color] = :blue
11
+ # a.set :color = :blue
12
+ # a.preferred_color = :blue
13
+ #
14
+ # getters:
15
+ # a.color
16
+ # a[:color]
17
+ # a.get :color
18
+ # a.preferred_color
19
+ #
20
+ require "spree/core/search/base"
21
+ require "spree/core/search/variant"
22
+ require 'spree/preferences/configuration'
23
+ require 'spree/core/environment'
24
+
25
+ module Spree
26
+ class AppConfiguration < Preferences::Configuration
27
+ # Alphabetized to more easily lookup particular preferences
28
+
29
+ # @!attribute [rw] address_requires_state
30
+ # @return [Boolean] should state/state_name be required (default: +true+)
31
+ preference :address_requires_state, :boolean, default: true
32
+
33
+ # @!attribute [rw] admin_interface_logo
34
+ # @return [String] URL of logo used in admin (default: +'logo/solidus_logo.png'+)
35
+ preference :admin_interface_logo, :string, default: 'logo/solidus_logo.png'
36
+
37
+ # @!attribute [rw] admin_products_per_page
38
+ # @return [Integer] Number of products to display in admin (default: +10+)
39
+ preference :admin_products_per_page, :integer, default: 10
40
+
41
+ # @!attribute [rw] admin_variants_per_page
42
+ # @return [Integer] Number of variants to display in admin (default: +20+)
43
+ preference :admin_variants_per_page, :integer, default: 20
44
+
45
+ # @!attribute [rw] allow_checkout_on_gateway_error
46
+ # @return [Boolean] Allow checkout to complete after a failed payment (default: +false+)
47
+ preference :allow_checkout_on_gateway_error, :boolean, default: false
48
+
49
+ # @!attribute [rw] allow_guest_checkout
50
+ # @return [Boolean] When false, customers must create an account to complete an order (default: +true+)
51
+ preference :allow_guest_checkout, :boolean, default: true
52
+
53
+ # @!attribute [rw] allow_return_item_amount_editing
54
+ # @return [Boolean] Determines whether an admin is allowed to change a return item's pre-calculated amount (default: +false+)
55
+ preference :allow_return_item_amount_editing, :boolean, default: false
56
+
57
+ # @!attribute [rw] alternative_billing_phone
58
+ # @return [Boolean] Request an extra phone number for bill address (default: +false+)
59
+ preference :alternative_billing_phone, :boolean, default: false
60
+
61
+ # @!attribute [rw] alternative_shipping_phone
62
+ # @return [Boolean] Request an extra phone number for shipping address (default: +false+)
63
+ preference :alternative_shipping_phone, :boolean, default: false
64
+
65
+ # @!attribute [rw] always_put_site_name_in_title
66
+ # @return [Boolean] When true, site name is always appended to titles on the frontend (default: +true+)
67
+ preference :always_put_site_name_in_title, :boolean, default: true
68
+
69
+ # @!attribute [rw] auto_capture
70
+ # @note Setting this to true is not recommended. Performing an authorize
71
+ # and later capture has far superior error handing. VISA and MasterCard
72
+ # also require that shipments are sent within a certain time of the card
73
+ # being charged.
74
+ # @return [Boolean] Automatically capture the credit card (as opposed to just authorize and capture later) (default: +false+)
75
+ preference :auto_capture, :boolean, default: false
76
+
77
+ # @!attribute [rw] auto_capture_exchanges
78
+ # @return [Boolean] Automatically capture the credit card (as opposed to just authorize and capture later) (default: +false+)
79
+ preference :auto_capture_exchanges, :boolean, default: false
80
+
81
+ # @!attribute [rw] binary_inventory_cache
82
+ # Only invalidate product caches when they change from in stock to out of
83
+ # stock. By default, caches are invalidated on any change of inventory
84
+ # quantity. Setting this to true should make operations on inventory
85
+ # faster.
86
+ # (default: +false+)
87
+ # @deprecated - use inventory_cache_threshold instead
88
+ # @return [Boolean]
89
+ preference :binary_inventory_cache, :boolean, default: false
90
+
91
+ # @!attribute [rw] completable_order_created_cutoff
92
+ # @return [Integer] the number of days to look back for created orders which get returned to the user as last completed
93
+ preference :completable_order_created_cutoff_days, :integer, default: nil
94
+
95
+ # @!attribute [rw] completable_order_created_cutoff
96
+ # @return [Integer] the number of days to look back for updated orders which get returned to the user as last completed
97
+ preference :completable_order_updated_cutoff_days, :integer, default: nil
98
+
99
+ # @!attribute [rw] inventory_cache_threshold
100
+ # Only invalidate product caches when the count on hand for a stock item
101
+ # falls below or rises about the inventory_cache_threshold. When undefined, the
102
+ # product caches will be invalidated anytime the count on hand is changed.
103
+ # @return [Integer]
104
+ preference :inventory_cache_threshold, :integer
105
+
106
+ # @!attribute [rw] checkout_zone
107
+ # @return [String] Name of a {Spree::Zone}, which limits available countries to those included in that zone. (default: +nil+)
108
+ preference :checkout_zone, :string, default: nil
109
+
110
+ # @!attribute [rw] company
111
+ # @return [Boolean] Request company field for billing and shipping addresses. (default: +false+)
112
+ preference :company, :boolean, default: false
113
+
114
+ # @!attribute [rw] currency
115
+ # Currency to use by default when not defined on the site (default: +"USD"+)
116
+ # @return [String] ISO 4217 Three letter currency code
117
+ preference :currency, :string, default: "USD"
118
+
119
+ # @!attribute [rw] default_country_id
120
+ # @deprecated Use the default country ISO preference instead
121
+ # @return [Integer,nil] id of {Spree::Country} to be selected by default in dropdowns (default: nil)
122
+ preference :default_country_id, :integer
123
+
124
+ # @!attribute [rw] default_country_iso
125
+ # Default customer country ISO code
126
+ # @return [String] Two-letter ISO code of a {Spree::Country} to assumed as the country of an unidentified customer (default: "US")
127
+ preference :default_country_iso, :string, default: 'US'
128
+
129
+ # @!attribute [rw] admin_vat_country_iso
130
+ # Set this if you want to enter prices in the backend including value added tax.
131
+ # @return [String, nil] Two-letter ISO code of that {Spree::Country} for which
132
+ # prices are entered in the backend (default: nil)
133
+ preference :admin_vat_country_iso, :string, default: nil
134
+
135
+ # @!attribute [rw] layout
136
+ # @return [String] template to use for layout on the frontend (default: +"spree/layouts/spree_application"+)
137
+ preference :layout, :string, default: 'spree/layouts/spree_application'
138
+
139
+ # @!attribute [rw] logo
140
+ # @return [String] URL of logo used on frontend (default: +'logo/solidus_logo.png'+)
141
+ preference :logo, :string, default: 'logo/solidus_logo.png'
142
+
143
+ # @!attribute [rw] order_bill_address_used
144
+ # @return [Boolean] Use the order's bill address, as opposed to storing
145
+ # bill addresses on payment sources. (default: +true+)
146
+ preference :order_bill_address_used, :boolean, default: true
147
+
148
+ # @!attribute [rw] order_capturing_time_window
149
+ # @return [Integer] the number of days to look back for fully-shipped/cancelled orders in order to charge for them
150
+ preference :order_capturing_time_window, :integer, default: 14
151
+
152
+ # @!attribute [rw] max_level_in_taxons_menu
153
+ # @return [Integer] maximum nesting level in taxons menu (default: +1+)
154
+ preference :max_level_in_taxons_menu, :integer, default: 1
155
+
156
+ # @!attribute [rw] order_mutex_max_age
157
+ # @return [Integer] Max age of {Spree::OrderMutex} in seconds (default: 2 minutes)
158
+ preference :order_mutex_max_age, :integer, default: 120
159
+
160
+ # @!attribute [rw] orders_per_page
161
+ # @return [Integer] Orders to show per-page in the admin (default: +15+)
162
+ preference :orders_per_page, :integer, default: 15
163
+
164
+ # @!attribute [rw] properties_per_page
165
+ # @return [Integer] Properties to show per-page in the admin (default: +15+)
166
+ preference :properties_per_page, :integer, default: 15
167
+
168
+ # @!attribute [rw] products_per_page
169
+ # @return [Integer] Products to show per-page in the frontend (default: +12+)
170
+ preference :products_per_page, :integer, default: 12
171
+
172
+ # @!attribute [rw] promotions_per_page
173
+ # @return [Integer] Promotions to show per-page in the admin (default: +15+)
174
+ preference :promotions_per_page, :integer, default: 15
175
+
176
+ # @!attribute [rw] customer_returns_per_page
177
+ # @return [Integer] Customer returns to show per-page in the admin (default: +15+)
178
+ preference :customer_returns_per_page, :integer, default: 15
179
+
180
+ # @!attribute [rw] require_master_price
181
+ # @return [Boolean] Require a price on the master variant of a product (default: +true+)
182
+ preference :require_master_price, :boolean, default: true
183
+
184
+ # @!attribute [rw] require_payment_to_ship
185
+ # @return [Boolean] Allows shipments to be ready to ship regardless of the order being paid if false (default: +true+)
186
+ preference :require_payment_to_ship, :boolean, default: true # Allows shipments to be ready to ship regardless of the order being paid if false
187
+
188
+ # @!attribute [rw] return_eligibility_number_of_days
189
+ # @return [Integer] default: 365
190
+ preference :return_eligibility_number_of_days, :integer, default: 365
191
+
192
+ # @!attribute [rw] shipping_instructions
193
+ # @return [Boolean] Request instructions/info for shipping (default: +false+)
194
+ preference :shipping_instructions, :boolean, default: false
195
+
196
+ # @!attribute [rw] show_only_complete_orders_by_default
197
+ # @return [Boolean] Only show completed orders by default in the admin (default: +true+)
198
+ preference :show_only_complete_orders_by_default, :boolean, default: true
199
+
200
+ # @!attribute [rw] show_variant_full_price
201
+ # @return [Boolean] Displays variant full price or difference with product price. (default: +false+)
202
+ preference :show_variant_full_price, :boolean, default: false
203
+
204
+ # @!attribute [rw] show_products_without_price
205
+ # @return [Boolean] Whether products without a price are visible in the frontend (default: +false+)
206
+ preference :show_products_without_price, :boolean, default: false
207
+
208
+ # @!attribute [rw] show_raw_product_description
209
+ # @return [Boolean] Don't escape HTML of product descriptions. (default: +false+)
210
+ preference :show_raw_product_description, :boolean, default: false
211
+
212
+ # @!attribute [rw] tax_using_ship_address
213
+ # @return [Boolean] Use the shipping address rather than the billing address to determine tax (default: +true+)
214
+ preference :tax_using_ship_address, :boolean, default: true
215
+
216
+ # @!attribute [rw] track_inventory_levels
217
+ # Determines whether to track on_hand values for variants / products. If
218
+ # you do not track inventory, or have effectively unlimited inventory for
219
+ # all products you can turn this on.
220
+ # @return [] Track on_hand values for variants / products. (default: true)
221
+ preference :track_inventory_levels, :boolean, default: true
222
+
223
+ # Default mail headers settings
224
+
225
+ # @!attribute [rw] send_core_emails
226
+ # @return [Boolean] Whether to send transactional emails (default: true)
227
+ preference :send_core_emails, :boolean, default: true
228
+
229
+ # @!attribute [rw] mails_from
230
+ # @return [String] Email address used as +From:+ field in transactional emails.
231
+ preference :mails_from, :string, default: 'spree@example.com'
232
+
233
+ # Store credits configurations
234
+
235
+ # @!attribute [rw] credit_to_new_allocation
236
+ # @return [Boolean] Creates a new allocation anytime {Spree::StoreCredit#credit} is called
237
+ preference :credit_to_new_allocation, :boolean, default: false
238
+
239
+ # @!attribute [rw] automatic_default_address
240
+ # The default value of true preserves existing backwards compatible feature of
241
+ # treating the most recently used address in checkout as the user's default address.
242
+ # Setting to false means that the user should manage their own default via some
243
+ # custom UI that uses AddressBookController.
244
+ # @return [Boolean] Whether use of an address in checkout marks it as user's default
245
+ preference :automatic_default_address, :boolean, default: true
246
+
247
+ # @!attribute [rw] can_restrict_stock_management
248
+ # @return [Boolean] Indicates if stock management can be restricted by location
249
+ preference :can_restrict_stock_management, :boolean, default: false
250
+
251
+ # Allows restricting what currencies will be available.
252
+ #
253
+ # @!attribute [r] available_currencies
254
+ # @return [Array] An array of available currencies from Money::Currency.all
255
+ attr_writer :available_currencies
256
+ def available_currencies
257
+ @available_currencies ||= ::Money::Currency.all
258
+ end
259
+
260
+ # searcher_class allows spree extension writers to provide their own Search class
261
+ class_name_attribute :searcher_class, default: 'Spree::Core::Search::Base'
262
+
263
+ # Allows implementing custom pricing for variants
264
+ # @!attribute [rw] variant_price_selector_class
265
+ # @see Spree::Variant::PriceSelector
266
+ # @return [Class] an object that conforms to the API of
267
+ # the standard variant price selector class Spree::Variant::PriceSelector.
268
+ class_name_attribute :variant_price_selector_class, default: 'Spree::Variant::PriceSelector'
269
+
270
+ # Shortcut for getting the variant price selector's pricing options class
271
+ #
272
+ # @return [Class] The pricing options class to be used
273
+ delegate :pricing_options_class, to: :variant_price_selector_class
274
+
275
+ # Shortcut for the default pricing options
276
+ # @return [variant_price_selector_class] An instance of the pricing options class with default desired
277
+ # attributes
278
+ def default_pricing_options
279
+ pricing_options_class.new
280
+ end
281
+
282
+ class_name_attribute :variant_search_class, default: 'Spree::Core::Search::Variant'
283
+
284
+ # promotion_chooser_class allows extensions to provide their own PromotionChooser
285
+ class_name_attribute :promotion_chooser_class, default: 'Spree::PromotionChooser'
286
+
287
+ class_name_attribute :shipping_rate_sorter_class, default: 'Spree::Stock::ShippingRateSorter'
288
+
289
+ class_name_attribute :shipping_rate_selector_class, default: 'Spree::Stock::ShippingRateSelector'
290
+
291
+ # Allows providing your own class for calculating taxes on a shipping rate.
292
+ #
293
+ # @!attribute [rw] shipping_rate_tax_calculator_class
294
+ # @return [Class] a class with the same public interfaces as
295
+ # Spree::TaxCalculator::ShippingRate
296
+ # @api experimental
297
+ class_name_attribute :shipping_rate_tax_calculator_class, default: 'Spree::TaxCalculator::ShippingRate'
298
+
299
+ # Allows providing your own Mailer for order mailer.
300
+ #
301
+ # @!attribute [rw] order_mailer_class
302
+ # @return [ActionMailer::Base] an object that responds to "confirm_email",
303
+ # "cancel_email" and "inventory_cancellation_email"
304
+ # (e.g. an ActionMailer with a "confirm_email" method) with the same
305
+ # signature as Spree::OrderMailer.confirm_email.
306
+ class_name_attribute :order_mailer_class, default: 'Spree::OrderMailer'
307
+
308
+ # Allows providing your own Mailer for promotion code batch mailer.
309
+ #
310
+ # @!attribute [rw] promotion_code_batch_mailer_class
311
+ # @return [ActionMailer::Base] an object that responds to "promotion_code_batch_finished",
312
+ # and "promotion_code_batch_errored"
313
+ # (e.g. an ActionMailer with a "promotion_code_batch_finished" method) with the same
314
+ # signature as Spree::PromotionCodeBatchMailer.promotion_code_batch_finished.
315
+ class_name_attribute :promotion_code_batch_mailer_class, default: 'Spree::PromotionCodeBatchMailer'
316
+
317
+ # Allows providing your own Mailer for reimbursement mailer.
318
+ #
319
+ # @!attribute [rw] reimbursement_mailer_class
320
+ # @return [ActionMailer::Base] an object that responds to "reimbursement_email"
321
+ # (e.g. an ActionMailer with a "reimbursement_email" method) with the same
322
+ # signature as Spree::ReimbursementMailer.reimbursement_email.
323
+ class_name_attribute :reimbursement_mailer_class, default: 'Spree::ReimbursementMailer'
324
+
325
+ # Allows providing your own Mailer for shipped cartons.
326
+ #
327
+ # @!attribute [rw] carton_shipped_email_class
328
+ # @return [ActionMailer::Base] an object that responds to "shipped_email"
329
+ # (e.g. an ActionMailer with a "shipped_email" method) with the same
330
+ # signature as Spree::CartonMailer.shipped_email.
331
+ class_name_attribute :carton_shipped_email_class, default: 'Spree::CartonMailer'
332
+
333
+ # Allows providing your own class for merging two orders.
334
+ #
335
+ # @!attribute [rw] order_merger_class
336
+ # @return [Class] a class with the same public interfaces
337
+ # as Spree::OrderMerger.
338
+ class_name_attribute :order_merger_class, default: 'Spree::OrderMerger'
339
+
340
+ # Allows providing your own class for adding default payments to a user's
341
+ # order from their "wallet".
342
+ #
343
+ # @!attribute [rw] default_payment_builder_class
344
+ # @return [Class] a class with the same public interfaces as
345
+ # Spree::Wallet::DefaultPaymentBuilder.
346
+ class_name_attribute :default_payment_builder_class, default: 'Spree::Wallet::DefaultPaymentBuilder'
347
+
348
+ # Allows providing your own class for canceling payments.
349
+ #
350
+ # @!attribute [rw] payment_canceller
351
+ # @return [Class] a class instance that responds to `cancel!(payment)`
352
+ attr_writer :payment_canceller
353
+ def payment_canceller
354
+ @payment_canceller ||= Spree::Payment::Cancellation.new(
355
+ reason: Spree::Payment::Cancellation::DEFAULT_REASON
356
+ )
357
+ end
358
+
359
+ # Allows providing your own class for adding payment sources to a user's
360
+ # "wallet" after an order moves to the complete state.
361
+ #
362
+ # @!attribute [rw] add_payment_sources_to_wallet_class
363
+ # @return [Class] a class with the same public interfaces
364
+ # as Spree::Wallet::AddPaymentSourcesToWallet.
365
+ class_name_attribute :add_payment_sources_to_wallet_class, default: 'Spree::Wallet::AddPaymentSourcesToWallet'
366
+
367
+ # Allows providing your own class for calculating taxes on an order.
368
+ #
369
+ # This extension point is under development and may change in a future minor release.
370
+ #
371
+ # @!attribute [rw] tax_adjuster_class
372
+ # @return [Class] a class with the same public interfaces as
373
+ # Spree::Tax::OrderAdjuster
374
+ # @api experimental
375
+ class_name_attribute :tax_adjuster_class, default: 'Spree::Tax::OrderAdjuster'
376
+
377
+ # Allows providing your own class for calculating taxes on an order.
378
+ #
379
+ # @!attribute [rw] tax_calculator_class
380
+ # @return [Class] a class with the same public interfaces as
381
+ # Spree::TaxCalculator::Default
382
+ # @api experimental
383
+ class_name_attribute :tax_calculator_class, default: 'Spree::TaxCalculator::Default'
384
+
385
+ # Allows providing your own class for choosing which store to use.
386
+ #
387
+ # @!attribute [rw] current_store_selector_class
388
+ # @return [Class] a class with the same public interfaces as
389
+ # Spree::CurrentStoreSelector
390
+ class_name_attribute :current_store_selector_class, default: 'Spree::StoreSelector::ByServerName'
391
+
392
+ # Allows providing your own class for creating urls on taxons
393
+ #
394
+ # @!attribute [rw] taxon_url_parametizer_class
395
+ # @return [Class] a class that provides a `#parameterize` method that
396
+ # returns a String
397
+ class_name_attribute :taxon_url_parametizer_class, default: 'ActiveSupport::Inflector'
398
+
399
+ # Allows providing your own class for image galleries on Variants
400
+ #
401
+ # @!attribute [rw] variant_gallery_class
402
+ # @return [Class] a class that implements an `images` method and returns an
403
+ # Enumerable of images adhering to the present_image_class interface
404
+ class_name_attribute :variant_gallery_class, default: 'Spree::Gallery::VariantGallery'
405
+
406
+ # Allows providing your own class for image galleries on Products
407
+ #
408
+ # @!attribute [rw] product_gallery_class
409
+ # @return [Class] a class that implements an `images` method and returns an
410
+ # Enumerable of images adhering to the present_image_class interface
411
+ class_name_attribute :product_gallery_class, default: 'Spree::Gallery::ProductGallery'
412
+
413
+ # Allows providing your own class instance for generating order numbers.
414
+ #
415
+ # @!attribute [rw] order_number_generator
416
+ # @return [Class] a class instance with the same public interfaces as
417
+ # Spree::Order::NumberGenerator
418
+ # @api experimental
419
+ attr_writer :order_number_generator
420
+ def order_number_generator
421
+ @order_number_generator ||= Spree::Order::NumberGenerator.new
422
+ end
423
+
424
+ def static_model_preferences
425
+ @static_model_preferences ||= Spree::Preferences::StaticModelPreferences.new
426
+ end
427
+
428
+ def stock
429
+ @stock_configuration ||= Spree::Core::StockConfiguration.new
430
+ end
431
+
432
+ def roles
433
+ @roles ||= Spree::RoleConfiguration.new.tap do |roles|
434
+ roles.assign_permissions :default, ['Spree::PermissionSets::DefaultCustomer']
435
+ roles.assign_permissions :admin, ['Spree::PermissionSets::SuperUser']
436
+ end
437
+ end
438
+
439
+ def environment
440
+ @environment ||= Spree::Core::Environment.new(self).tap do |env|
441
+ env.calculators.shipping_methods = %w[
442
+ Spree::Calculator::Shipping::FlatPercentItemTotal
443
+ Spree::Calculator::Shipping::FlatRate
444
+ Spree::Calculator::Shipping::FlexiRate
445
+ Spree::Calculator::Shipping::PerItem
446
+ Spree::Calculator::Shipping::PriceSack
447
+ ]
448
+
449
+ env.calculators.tax_rates = %w[
450
+ Spree::Calculator::DefaultTax
451
+ ]
452
+
453
+ env.stock_splitters = %w[
454
+ Spree::Stock::Splitter::ShippingCategory
455
+ Spree::Stock::Splitter::Backordered
456
+ ]
457
+
458
+ env.payment_methods = %w[
459
+ Spree::PaymentMethod::BogusCreditCard
460
+ Spree::PaymentMethod::SimpleBogusCreditCard
461
+ Spree::PaymentMethod::StoreCredit
462
+ Spree::PaymentMethod::Check
463
+ ]
464
+
465
+ env.promotions = Spree::Promo::Environment.new.tap do |promos|
466
+ promos.rules = %w[
467
+ Spree::Promotion::Rules::ItemTotal
468
+ Spree::Promotion::Rules::Product
469
+ Spree::Promotion::Rules::User
470
+ Spree::Promotion::Rules::FirstOrder
471
+ Spree::Promotion::Rules::UserLoggedIn
472
+ Spree::Promotion::Rules::OneUsePerUser
473
+ Spree::Promotion::Rules::Taxon
474
+ Spree::Promotion::Rules::NthOrder
475
+ Spree::Promotion::Rules::OptionValue
476
+ Spree::Promotion::Rules::FirstRepeatPurchaseSince
477
+ Spree::Promotion::Rules::UserRole
478
+ Spree::Promotion::Rules::Store
479
+ ]
480
+
481
+ promos.actions = %w[
482
+ Spree::Promotion::Actions::CreateAdjustment
483
+ Spree::Promotion::Actions::CreateItemAdjustments
484
+ Spree::Promotion::Actions::CreateQuantityAdjustments
485
+ Spree::Promotion::Actions::FreeShipping
486
+ ]
487
+
488
+ promos.shipping_actions = %w[
489
+ Spree::Promotion::Actions::FreeShipping
490
+ ]
491
+ end
492
+
493
+ env.calculators.promotion_actions_create_adjustments = %w[
494
+ Spree::Calculator::FlatPercentItemTotal
495
+ Spree::Calculator::FlatRate
496
+ Spree::Calculator::FlexiRate
497
+ Spree::Calculator::TieredPercent
498
+ Spree::Calculator::TieredFlatRate
499
+ ]
500
+
501
+ env.calculators.promotion_actions_create_item_adjustments = %w[
502
+ Spree::Calculator::DistributedAmount
503
+ Spree::Calculator::FlatRate
504
+ Spree::Calculator::FlexiRate
505
+ Spree::Calculator::PercentOnLineItem
506
+ Spree::Calculator::TieredPercent
507
+ ]
508
+
509
+ env.calculators.promotion_actions_create_quantity_adjustments = %w[
510
+ Spree::Calculator::PercentOnLineItem
511
+ Spree::Calculator::FlatRate
512
+ ]
513
+ end
514
+ end
515
+
516
+ # Default admin VAT location
517
+ #
518
+ # An object that responds to :state_id and :country_id so it can double as a Spree::Address in
519
+ # Spree::Zone.for_address. Takes the `admin_vat_country_iso` as input.
520
+ #
521
+ # @see admin_vat_country_iso The admin VAT country
522
+ # @return [Spree::Tax::TaxLocation] default tax location
523
+ def admin_vat_location
524
+ @default_tax_location ||= Spree::Tax::TaxLocation.new(
525
+ country: Spree::Country.find_by(iso: admin_vat_country_iso)
526
+ )
527
+ end
528
+ end
529
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spree/app_configuration'
4
+
5
+ Spree::Config = Spree::AppConfiguration.new
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_merchant/errors'
4
+
5
+ require 'active_merchant/billing/base'
6
+
7
+ require 'active_merchant/billing/avs_result'
8
+ require 'active_merchant/billing/cvv_result'
9
+ require 'active_merchant/billing/response'
10
+
11
+ require 'active_merchant/billing/credit_card_methods'
12
+ require 'active_merchant/billing/credit_card_formatting'
13
+ require 'active_merchant/billing/credit_card'
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Core
5
+ module ClassConstantizer
6
+ class Set
7
+ include Enumerable
8
+
9
+ def initialize
10
+ @collection = ::Set.new
11
+ end
12
+
13
+ def <<(klass)
14
+ @collection << klass.to_s
15
+ end
16
+
17
+ def concat(klasses)
18
+ klasses.each do |klass|
19
+ self << klass
20
+ end
21
+ end
22
+
23
+ delegate :clear, :empty?, to: :@collection
24
+
25
+ def each
26
+ @collection.each do |klass|
27
+ yield klass.constantize
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'cancan'
4
+
5
+ module Spree
6
+ module Core
7
+ module ControllerHelpers
8
+ module Auth
9
+ extend ActiveSupport::Concern
10
+
11
+ # @!attribute [rw] unauthorized_redirect
12
+ # @!scope class
13
+ # Extension point for overriding behaviour of access denied errors.
14
+ # Default behaviour is to redirect to "/unauthorized" with a flash
15
+ # message.
16
+ # @return [Proc] action to take when access denied error is raised.
17
+
18
+ included do
19
+ before_action :set_guest_token
20
+ helper_method :try_spree_current_user
21
+
22
+ class_attribute :unauthorized_redirect
23
+ self.unauthorized_redirect = -> do
24
+ flash[:error] = I18n.t('spree.authorization_failure')
25
+ redirect_to "/unauthorized"
26
+ end
27
+
28
+ rescue_from CanCan::AccessDenied do
29
+ instance_exec(&unauthorized_redirect)
30
+ end
31
+ end
32
+
33
+ # Needs to be overriden so that we use Spree's Ability rather than anyone else's.
34
+ def current_ability
35
+ @current_ability ||= Spree::Ability.new(try_spree_current_user)
36
+ end
37
+
38
+ def redirect_back_or_default(default)
39
+ redirect_to(session["spree_user_return_to"] || default)
40
+ session["spree_user_return_to"] = nil
41
+ end
42
+
43
+ def set_guest_token
44
+ unless cookies.signed[:guest_token].present?
45
+ cookies.permanent.signed[:guest_token] = {
46
+ value: SecureRandom.urlsafe_base64(nil, false),
47
+ httponly: true
48
+ }
49
+ end
50
+ end
51
+
52
+ def store_location
53
+ # disallow return to login, logout, signup pages
54
+ authentication_routes = [:spree_signup_path, :spree_login_path, :spree_logout_path]
55
+ disallowed_urls = []
56
+ authentication_routes.each do |route|
57
+ if respond_to?(route)
58
+ disallowed_urls << send(route)
59
+ end
60
+ end
61
+
62
+ disallowed_urls.map!{ |url| url[/\/\w+$/] }
63
+ unless disallowed_urls.include?(request.fullpath)
64
+ session['spree_user_return_to'] = request.fullpath.gsub('//', '/')
65
+ end
66
+ end
67
+
68
+ # proxy method to *possible* spree_current_user method
69
+ # Authentication extensions (such as spree_auth_devise) are meant to provide spree_current_user
70
+ def try_spree_current_user
71
+ # This one will be defined by apps looking to hook into Spree
72
+ # As per authentication_helpers.rb
73
+ if respond_to?(:spree_current_user, true)
74
+ spree_current_user
75
+ # This one will be defined by Devise
76
+ elsif respond_to?(:current_spree_user, true)
77
+ current_spree_user
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end