goca-spree-core 3.1.14.rails.5.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 (594) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +3 -0
  3. data/LICENSE +26 -0
  4. data/Rakefile +15 -0
  5. data/app/assets/images/logo/spree_50.png +0 -0
  6. data/app/assets/images/noimage/large.png +0 -0
  7. data/app/assets/images/noimage/mini.png +0 -0
  8. data/app/assets/images/noimage/product.png +0 -0
  9. data/app/assets/images/noimage/small.png +0 -0
  10. data/app/assets/javascripts/spree.js.coffee.erb +59 -0
  11. data/app/controllers/spree/base_controller.rb +15 -0
  12. data/app/helpers/spree/base_helper.rb +123 -0
  13. data/app/helpers/spree/products_helper.rb +91 -0
  14. data/app/mailers/spree/base_mailer.rb +27 -0
  15. data/app/mailers/spree/order_mailer.rb +17 -0
  16. data/app/mailers/spree/reimbursement_mailer.rb +10 -0
  17. data/app/mailers/spree/shipment_mailer.rb +10 -0
  18. data/app/mailers/spree/test_mailer.rb +8 -0
  19. data/app/models/concerns/spree/adjustment_source.rb +53 -0
  20. data/app/models/concerns/spree/calculated_adjustments.rb +34 -0
  21. data/app/models/concerns/spree/default_price.rb +40 -0
  22. data/app/models/concerns/spree/display_money.rb +32 -0
  23. data/app/models/concerns/spree/named_type.rb +12 -0
  24. data/app/models/concerns/spree/ransackable_attributes.rb +24 -0
  25. data/app/models/concerns/spree/user_address.rb +30 -0
  26. data/app/models/concerns/spree/user_api_authentication.rb +19 -0
  27. data/app/models/concerns/spree/user_methods.rb +57 -0
  28. data/app/models/concerns/spree/user_payment_source.rb +19 -0
  29. data/app/models/concerns/spree/user_reporting.rb +22 -0
  30. data/app/models/concerns/spree/vat_price_calculation.rb +47 -0
  31. data/app/models/friendly_id/slug_decorator.rb +3 -0
  32. data/app/models/spree/ability.rb +80 -0
  33. data/app/models/spree/address.rb +145 -0
  34. data/app/models/spree/adjustable/adjuster/base.rb +25 -0
  35. data/app/models/spree/adjustable/adjuster/promotion.rb +41 -0
  36. data/app/models/spree/adjustable/adjuster/tax.rb +26 -0
  37. data/app/models/spree/adjustable/adjustments_updater.rb +47 -0
  38. data/app/models/spree/adjustable/promotion_accumulator.rb +75 -0
  39. data/app/models/spree/adjustment.rb +104 -0
  40. data/app/models/spree/app_configuration.rb +74 -0
  41. data/app/models/spree/asset.rb +6 -0
  42. data/app/models/spree/base.rb +24 -0
  43. data/app/models/spree/calculator/default_tax.rb +59 -0
  44. data/app/models/spree/calculator/flat_percent_item_total.rb +22 -0
  45. data/app/models/spree/calculator/flat_rate.rb +20 -0
  46. data/app/models/spree/calculator/flexi_rate.rb +33 -0
  47. data/app/models/spree/calculator/free_shipping.rb +22 -0
  48. data/app/models/spree/calculator/percent_on_line_item.rb +15 -0
  49. data/app/models/spree/calculator/percent_per_item.rb +50 -0
  50. data/app/models/spree/calculator/price_sack.rb +29 -0
  51. data/app/models/spree/calculator/returns/default_refund_amount.rb +36 -0
  52. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +22 -0
  53. data/app/models/spree/calculator/shipping/flat_rate.rb +18 -0
  54. data/app/models/spree/calculator/shipping/flexi_rate.rb +35 -0
  55. data/app/models/spree/calculator/shipping/per_item.rb +22 -0
  56. data/app/models/spree/calculator/shipping/price_sack.rb +28 -0
  57. data/app/models/spree/calculator/tiered_flat_rate.rb +37 -0
  58. data/app/models/spree/calculator/tiered_percent.rb +44 -0
  59. data/app/models/spree/calculator.rb +47 -0
  60. data/app/models/spree/classification.rb +15 -0
  61. data/app/models/spree/country.rb +40 -0
  62. data/app/models/spree/credit_card.rb +166 -0
  63. data/app/models/spree/customer_return.rb +67 -0
  64. data/app/models/spree/exchange.rb +46 -0
  65. data/app/models/spree/gateway/bogus.rb +91 -0
  66. data/app/models/spree/gateway/bogus_simple.rb +26 -0
  67. data/app/models/spree/gateway.rb +80 -0
  68. data/app/models/spree/image.rb +43 -0
  69. data/app/models/spree/inventory_unit.rb +105 -0
  70. data/app/models/spree/legacy_user.rb +13 -0
  71. data/app/models/spree/line_item.rb +158 -0
  72. data/app/models/spree/log_entry.rb +17 -0
  73. data/app/models/spree/option_type.rb +32 -0
  74. data/app/models/spree/option_type_prototype.rb +9 -0
  75. data/app/models/spree/option_value.rb +26 -0
  76. data/app/models/spree/option_value_variant.rb +6 -0
  77. data/app/models/spree/order/checkout.rb +336 -0
  78. data/app/models/spree/order/currency_updater.rb +40 -0
  79. data/app/models/spree/order/payments.rb +66 -0
  80. data/app/models/spree/order/store_credit.rb +96 -0
  81. data/app/models/spree/order.rb +685 -0
  82. data/app/models/spree/order_contents.rb +120 -0
  83. data/app/models/spree/order_inventory.rb +103 -0
  84. data/app/models/spree/order_merger.rb +65 -0
  85. data/app/models/spree/order_promotion.rb +6 -0
  86. data/app/models/spree/order_updater.rb +177 -0
  87. data/app/models/spree/payment/gateway_options.rb +90 -0
  88. data/app/models/spree/payment/processing.rb +175 -0
  89. data/app/models/spree/payment.rb +276 -0
  90. data/app/models/spree/payment_capture_event.rb +9 -0
  91. data/app/models/spree/payment_method/check.rb +43 -0
  92. data/app/models/spree/payment_method/store_credit.rb +130 -0
  93. data/app/models/spree/payment_method.rb +71 -0
  94. data/app/models/spree/preference.rb +5 -0
  95. data/app/models/spree/preferences/configuration.rb +71 -0
  96. data/app/models/spree/preferences/preferable.rb +133 -0
  97. data/app/models/spree/preferences/preferable_class_methods.rb +51 -0
  98. data/app/models/spree/preferences/scoped_store.rb +33 -0
  99. data/app/models/spree/preferences/store.rb +98 -0
  100. data/app/models/spree/price.rb +53 -0
  101. data/app/models/spree/product/scopes.rb +271 -0
  102. data/app/models/spree/product.rb +384 -0
  103. data/app/models/spree/product_option_type.rb +12 -0
  104. data/app/models/spree/product_promotion_rule.rb +9 -0
  105. data/app/models/spree/product_property.rb +28 -0
  106. data/app/models/spree/promotion/actions/create_adjustment.rb +21 -0
  107. data/app/models/spree/promotion/actions/create_item_adjustments.rb +24 -0
  108. data/app/models/spree/promotion/actions/create_line_items.rb +62 -0
  109. data/app/models/spree/promotion/actions/free_shipping.rb +18 -0
  110. data/app/models/spree/promotion/rules/first_order.rb +37 -0
  111. data/app/models/spree/promotion/rules/item_total.rb +61 -0
  112. data/app/models/spree/promotion/rules/one_use_per_user.rb +24 -0
  113. data/app/models/spree/promotion/rules/option_value.rb +50 -0
  114. data/app/models/spree/promotion/rules/product.rb +65 -0
  115. data/app/models/spree/promotion/rules/taxon.rb +70 -0
  116. data/app/models/spree/promotion/rules/user.rb +30 -0
  117. data/app/models/spree/promotion/rules/user_logged_in.rb +18 -0
  118. data/app/models/spree/promotion.rb +198 -0
  119. data/app/models/spree/promotion_action.rb +25 -0
  120. data/app/models/spree/promotion_action_line_item.rb +6 -0
  121. data/app/models/spree/promotion_category.rb +6 -0
  122. data/app/models/spree/promotion_handler/cart.rb +51 -0
  123. data/app/models/spree/promotion_handler/coupon.rb +107 -0
  124. data/app/models/spree/promotion_handler/free_shipping.rb +33 -0
  125. data/app/models/spree/promotion_handler/page.rb +24 -0
  126. data/app/models/spree/promotion_rule.rb +43 -0
  127. data/app/models/spree/promotion_rule_taxon.rb +9 -0
  128. data/app/models/spree/promotion_rule_user.rb +9 -0
  129. data/app/models/spree/property.rb +23 -0
  130. data/app/models/spree/property_prototype.rb +9 -0
  131. data/app/models/spree/prototype.rb +14 -0
  132. data/app/models/spree/prototype_taxon.rb +9 -0
  133. data/app/models/spree/refund.rb +89 -0
  134. data/app/models/spree/refund_reason.rb +13 -0
  135. data/app/models/spree/reimbursement/credit.rb +25 -0
  136. data/app/models/spree/reimbursement/reimbursement_type_engine.rb +56 -0
  137. data/app/models/spree/reimbursement/reimbursement_type_validator.rb +15 -0
  138. data/app/models/spree/reimbursement.rb +164 -0
  139. data/app/models/spree/reimbursement_performer.rb +43 -0
  140. data/app/models/spree/reimbursement_tax_calculator.rb +44 -0
  141. data/app/models/spree/reimbursement_type/credit.rb +13 -0
  142. data/app/models/spree/reimbursement_type/exchange.rb +9 -0
  143. data/app/models/spree/reimbursement_type/original_payment.rb +13 -0
  144. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +67 -0
  145. data/app/models/spree/reimbursement_type/store_credit.rb +28 -0
  146. data/app/models/spree/reimbursement_type.rb +16 -0
  147. data/app/models/spree/return_authorization.rb +98 -0
  148. data/app/models/spree/return_authorization_reason.rb +7 -0
  149. data/app/models/spree/return_item/eligibility_validator/base_validator.rb +24 -0
  150. data/app/models/spree/return_item/eligibility_validator/default.rb +30 -0
  151. data/app/models/spree/return_item/eligibility_validator/inventory_shipped.rb +16 -0
  152. data/app/models/spree/return_item/eligibility_validator/no_reimbursements.rb +16 -0
  153. data/app/models/spree/return_item/eligibility_validator/order_completed.rb +16 -0
  154. data/app/models/spree/return_item/eligibility_validator/rma_required.rb +17 -0
  155. data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +16 -0
  156. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +34 -0
  157. data/app/models/spree/return_item/exchange_variant_eligibility/same_product.rb +9 -0
  158. data/app/models/spree/return_item.rb +236 -0
  159. data/app/models/spree/returns_calculator.rb +8 -0
  160. data/app/models/spree/role.rb +8 -0
  161. data/app/models/spree/role_user.rb +6 -0
  162. data/app/models/spree/shipment.rb +419 -0
  163. data/app/models/spree/shipment_handler.rb +43 -0
  164. data/app/models/spree/shipping_calculator.rb +22 -0
  165. data/app/models/spree/shipping_category.rb +11 -0
  166. data/app/models/spree/shipping_method.rb +69 -0
  167. data/app/models/spree/shipping_method_category.rb +6 -0
  168. data/app/models/spree/shipping_method_zone.rb +6 -0
  169. data/app/models/spree/shipping_rate.rb +44 -0
  170. data/app/models/spree/state.rb +41 -0
  171. data/app/models/spree/state_change.rb +10 -0
  172. data/app/models/spree/stock/adjuster.rb +27 -0
  173. data/app/models/spree/stock/availability_validator.rb +30 -0
  174. data/app/models/spree/stock/content_item.rb +54 -0
  175. data/app/models/spree/stock/coordinator.rb +65 -0
  176. data/app/models/spree/stock/differentiator.rb +44 -0
  177. data/app/models/spree/stock/estimator.rb +70 -0
  178. data/app/models/spree/stock/inventory_unit_builder.rb +22 -0
  179. data/app/models/spree/stock/package.rb +104 -0
  180. data/app/models/spree/stock/packer.rb +48 -0
  181. data/app/models/spree/stock/prioritizer.rb +47 -0
  182. data/app/models/spree/stock/quantifier.rb +29 -0
  183. data/app/models/spree/stock/splitter/backordered.rb +23 -0
  184. data/app/models/spree/stock/splitter/base.rb +28 -0
  185. data/app/models/spree/stock/splitter/shipping_category.rb +32 -0
  186. data/app/models/spree/stock/splitter/weight.rb +34 -0
  187. data/app/models/spree/stock_item.rb +90 -0
  188. data/app/models/spree/stock_location.rb +115 -0
  189. data/app/models/spree/stock_movement.rb +35 -0
  190. data/app/models/spree/stock_transfer.rb +50 -0
  191. data/app/models/spree/store.rb +48 -0
  192. data/app/models/spree/store_credit.rb +252 -0
  193. data/app/models/spree/store_credit_category.rb +22 -0
  194. data/app/models/spree/store_credit_event.rb +38 -0
  195. data/app/models/spree/store_credit_type.rb +6 -0
  196. data/app/models/spree/tax_category.rb +18 -0
  197. data/app/models/spree/tax_rate.rb +110 -0
  198. data/app/models/spree/taxon.rb +102 -0
  199. data/app/models/spree/taxonomy.rb +24 -0
  200. data/app/models/spree/tracker.rb +19 -0
  201. data/app/models/spree/validations/db_maximum_length_validator.rb +23 -0
  202. data/app/models/spree/variant.rb +312 -0
  203. data/app/models/spree/zone.rb +190 -0
  204. data/app/models/spree/zone_member.rb +12 -0
  205. data/app/validators/db_maximum_length_validator.rb +11 -0
  206. data/app/views/layouts/spree/base_mailer.html.erb +41 -0
  207. data/app/views/spree/admin/orders/customer_details/_autocomplete.js.erb +19 -0
  208. data/app/views/spree/order_mailer/_adjustment.html.erb +8 -0
  209. data/app/views/spree/order_mailer/_subtotal.html.erb +8 -0
  210. data/app/views/spree/order_mailer/_total.html.erb +8 -0
  211. data/app/views/spree/order_mailer/cancel_email.html.erb +30 -0
  212. data/app/views/spree/order_mailer/cancel_email.text.erb +16 -0
  213. data/app/views/spree/order_mailer/confirm_email.html.erb +70 -0
  214. data/app/views/spree/order_mailer/confirm_email.text.erb +38 -0
  215. data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +22 -0
  216. data/app/views/spree/shared/_base_mailer_footer.html.erb +20 -0
  217. data/app/views/spree/shared/_base_mailer_header.html.erb +29 -0
  218. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +777 -0
  219. data/app/views/spree/shared/_error_messages.html.erb +11 -0
  220. data/app/views/spree/shared/_mailer_line_item.html.erb +12 -0
  221. data/app/views/spree/shipment_mailer/shipped_email.html.erb +41 -0
  222. data/app/views/spree/shipment_mailer/shipped_email.text.erb +16 -0
  223. data/app/views/spree/test_mailer/test_email.html.erb +40 -0
  224. data/app/views/spree/test_mailer/test_email.text.erb +4 -0
  225. data/config/initializers/assets.rb +1 -0
  226. data/config/initializers/friendly_id.rb +88 -0
  227. data/config/initializers/premailer_assets.rb +1 -0
  228. data/config/initializers/premailer_rails.rb +3 -0
  229. data/config/initializers/user_class_extensions.rb +10 -0
  230. data/config/locales/en.yml +1499 -0
  231. data/config/routes.rb +8 -0
  232. data/db/default/spree/countries.rb +29 -0
  233. data/db/default/spree/default_reimbursement_type.rb +1 -0
  234. data/db/default/spree/roles.rb +2 -0
  235. data/db/default/spree/states.rb +28 -0
  236. data/db/default/spree/stores.rb +9 -0
  237. data/db/default/spree/zones.rb +11 -0
  238. data/db/migrate/20120831092320_spree_one_two.rb +481 -0
  239. data/db/migrate/20120831092359_spree_promo_one_two.rb +45 -0
  240. data/db/migrate/20120905145253_add_tax_rate_label.rb +5 -0
  241. data/db/migrate/20120905151823_add_toggle_tax_rate_display.rb +5 -0
  242. data/db/migrate/20120929093553_remove_unused_preference_columns.rb +8 -0
  243. data/db/migrate/20121009142519_add_lock_version_to_variant.rb +5 -0
  244. data/db/migrate/20121010142909_add_states_required_to_countries.rb +5 -0
  245. data/db/migrate/20121012071449_add_on_demand_to_product_and_variant.rb +6 -0
  246. data/db/migrate/20121017010007_remove_not_null_constraint_from_products_on_hand.rb +11 -0
  247. data/db/migrate/20121031162139_split_prices_from_variants.rb +31 -0
  248. data/db/migrate/20121107003422_remove_not_null_from_spree_prices_amount.rb +9 -0
  249. data/db/migrate/20121107184631_add_currency_to_line_items.rb +5 -0
  250. data/db/migrate/20121107194006_add_currency_to_orders.rb +5 -0
  251. data/db/migrate/20121109173623_add_cost_currency_to_variants.rb +5 -0
  252. data/db/migrate/20121111231553_remove_display_on_from_payment_methods.rb +5 -0
  253. data/db/migrate/20121124203911_add_position_to_taxonomies.rb +5 -0
  254. data/db/migrate/20121126040517_add_last_ip_to_spree_orders.rb +5 -0
  255. data/db/migrate/20121213162028_add_state_to_spree_adjustments.rb +6 -0
  256. data/db/migrate/20130114053446_add_display_on_to_spree_payment_methods.rb +9 -0
  257. data/db/migrate/20130120201805_add_position_to_product_properties.spree.rb +6 -0
  258. data/db/migrate/20130203232234_add_identifier_to_spree_payments.rb +5 -0
  259. data/db/migrate/20130207155350_add_order_id_index_to_payments.rb +9 -0
  260. data/db/migrate/20130208032954_add_primary_to_spree_products_taxons.rb +5 -0
  261. data/db/migrate/20130211190146_create_spree_stock_items.rb +14 -0
  262. data/db/migrate/20130211191120_create_spree_stock_locations.rb +11 -0
  263. data/db/migrate/20130213191427_create_default_stock.rb +33 -0
  264. data/db/migrate/20130222032153_add_order_id_index_to_shipments.rb +5 -0
  265. data/db/migrate/20130226032817_change_meta_description_on_spree_products_to_text.rb +5 -0
  266. data/db/migrate/20130226191231_add_stock_location_id_to_spree_shipments.rb +5 -0
  267. data/db/migrate/20130227143905_add_pending_to_inventory_unit.rb +6 -0
  268. data/db/migrate/20130228164411_remove_on_demand_from_product_and_variant.rb +6 -0
  269. data/db/migrate/20130228210442_create_shipping_method_zone.rb +21 -0
  270. data/db/migrate/20130301162745_remove_shipping_category_id_from_shipping_method.rb +5 -0
  271. data/db/migrate/20130301162924_create_shipping_method_categories.rb +13 -0
  272. data/db/migrate/20130301205200_add_tracking_url_to_spree_shipping_methods.rb +5 -0
  273. data/db/migrate/20130304162240_create_spree_shipping_rates.rb +24 -0
  274. data/db/migrate/20130304192936_remove_category_match_attributes_from_shipping_method.rb +7 -0
  275. data/db/migrate/20130305143310_create_stock_movements.rb +12 -0
  276. data/db/migrate/20130306181701_add_address_fields_to_stock_location.rb +22 -0
  277. data/db/migrate/20130306191917_add_active_field_to_stock_locations.rb +5 -0
  278. data/db/migrate/20130306195650_add_backorderable_to_stock_item.rb +5 -0
  279. data/db/migrate/20130307161754_add_default_quantity_to_stock_movement.rb +5 -0
  280. data/db/migrate/20130318151756_add_source_and_destination_to_stock_movements.rb +8 -0
  281. data/db/migrate/20130319062004_change_orders_total_precision.rb +8 -0
  282. data/db/migrate/20130319063911_change_spree_payments_amount_precision.rb +7 -0
  283. data/db/migrate/20130319064308_change_spree_return_authorization_amount_precision.rb +7 -0
  284. data/db/migrate/20130319082943_change_adjustments_amount_precision.rb +7 -0
  285. data/db/migrate/20130319183250_add_originator_to_stock_movement.rb +7 -0
  286. data/db/migrate/20130319190507_drop_source_and_destination_from_stock_movement.rb +15 -0
  287. data/db/migrate/20130325163316_migrate_inventory_unit_sold_to_on_hand.rb +9 -0
  288. data/db/migrate/20130326175857_add_stock_location_to_rma.rb +5 -0
  289. data/db/migrate/20130328130308_update_shipment_state_for_canceled_orders.rb +15 -0
  290. data/db/migrate/20130328195253_add_seo_metas_to_taxons.rb +9 -0
  291. data/db/migrate/20130329134939_remove_stock_item_and_variant_lock.rb +14 -0
  292. data/db/migrate/20130413230529_add_name_to_spree_credit_cards.rb +5 -0
  293. data/db/migrate/20130414000512_update_name_fields_on_spree_credit_cards.rb +13 -0
  294. data/db/migrate/20130417120034_add_index_to_source_columns_on_adjustments.rb +5 -0
  295. data/db/migrate/20130417120035_update_adjustment_states.rb +16 -0
  296. data/db/migrate/20130417123427_add_shipping_rates_to_shipments.rb +15 -0
  297. data/db/migrate/20130418125341_create_spree_stock_transfers.rb +14 -0
  298. data/db/migrate/20130423110707_drop_products_count_on_hand.rb +5 -0
  299. data/db/migrate/20130423223847_set_default_shipping_rate_cost.rb +5 -0
  300. data/db/migrate/20130509115210_add_number_to_stock_transfer.rb +23 -0
  301. data/db/migrate/20130514151929_add_sku_index_to_spree_variants.rb +5 -0
  302. data/db/migrate/20130515180736_add_backorderable_default_to_spree_stock_location.rb +5 -0
  303. data/db/migrate/20130516151222_add_propage_all_variants_to_spree_stock_location.rb +5 -0
  304. data/db/migrate/20130611054351_rename_shipping_methods_zones_to_spree_shipping_methods_zones.rb +5 -0
  305. data/db/migrate/20130611185927_add_user_id_index_to_spree_orders.rb +5 -0
  306. data/db/migrate/20130618041418_add_updated_at_to_spree_countries.rb +9 -0
  307. data/db/migrate/20130619012236_add_updated_at_to_spree_states.rb +9 -0
  308. data/db/migrate/20130626232741_add_cvv_result_code_and_cvv_result_message_to_spree_payments.rb +6 -0
  309. data/db/migrate/20130628021056_add_unique_index_to_permalink_on_spree_products.rb +5 -0
  310. data/db/migrate/20130628022817_add_unique_index_to_orders_shipments_and_stock_transfers.rb +7 -0
  311. data/db/migrate/20130708052307_add_deleted_at_to_spree_tax_rates.rb +5 -0
  312. data/db/migrate/20130711200933_remove_lock_version_from_inventory_units.rb +6 -0
  313. data/db/migrate/20130718042445_add_cost_price_to_line_item.rb +5 -0
  314. data/db/migrate/20130718233855_set_backorderable_to_default_to_false.rb +6 -0
  315. data/db/migrate/20130725031716_add_created_by_id_to_spree_orders.rb +5 -0
  316. data/db/migrate/20130729214043_index_completed_at_on_spree_orders.rb +5 -0
  317. data/db/migrate/20130802014537_add_tax_category_id_to_spree_line_items.rb +5 -0
  318. data/db/migrate/20130802022321_migrate_tax_categories_to_line_items.rb +10 -0
  319. data/db/migrate/20130806022521_drop_spree_mail_methods.rb +12 -0
  320. data/db/migrate/20130806145853_set_default_stock_location_on_shipments.rb +8 -0
  321. data/db/migrate/20130807024301_upgrade_adjustments.rb +40 -0
  322. data/db/migrate/20130807024302_rename_adjustment_fields.rb +14 -0
  323. data/db/migrate/20130809164245_add_admin_name_column_to_spree_shipping_methods.rb +5 -0
  324. data/db/migrate/20130809164330_add_admin_name_column_to_spree_stock_locations.rb +5 -0
  325. data/db/migrate/20130813004002_add_shipment_total_to_spree_orders.rb +5 -0
  326. data/db/migrate/20130813140619_expand_order_number_size.rb +9 -0
  327. data/db/migrate/20130813232134_rename_activators_to_promotions.rb +5 -0
  328. data/db/migrate/20130815000406_add_adjustment_total_to_line_items.rb +5 -0
  329. data/db/migrate/20130815024413_add_adjustment_total_to_shipments.rb +5 -0
  330. data/db/migrate/20130826062534_add_depth_to_spree_taxons.rb +16 -0
  331. data/db/migrate/20130828234942_add_tax_total_to_line_items_shipments_and_orders.rb +8 -0
  332. data/db/migrate/20130830001033_add_shipping_category_to_shipping_methods_and_products.rb +15 -0
  333. data/db/migrate/20130830001159_migrate_old_shipping_calculators.rb +19 -0
  334. data/db/migrate/20130903183026_add_code_to_spree_promotion_rules.rb +5 -0
  335. data/db/migrate/20130909115621_change_states_required_for_countries.rb +9 -0
  336. data/db/migrate/20130915032339_add_deleted_at_to_spree_stock_items.rb +5 -0
  337. data/db/migrate/20130917024658_remove_promotions_event_name_field.rb +5 -0
  338. data/db/migrate/20130924040529_add_promo_total_to_line_items_and_shipments_and_orders.rb +7 -0
  339. data/db/migrate/20131001013410_remove_unused_credit_card_fields.rb +16 -0
  340. data/db/migrate/20131026154747_add_track_inventory_to_variant.rb +5 -0
  341. data/db/migrate/20131107132123_add_tax_category_to_variants.rb +6 -0
  342. data/db/migrate/20131113035136_add_channel_to_spree_orders.rb +5 -0
  343. data/db/migrate/20131118043959_add_included_to_adjustments.rb +5 -0
  344. data/db/migrate/20131118050234_rename_tax_total_fields.rb +11 -0
  345. data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +21 -0
  346. data/db/migrate/20131120234456_add_updated_at_to_variants.rb +5 -0
  347. data/db/migrate/20131127001002_add_position_to_classifications.rb +5 -0
  348. data/db/migrate/20131211112807_create_spree_orders_promotions.rb +8 -0
  349. data/db/migrate/20131211192741_unique_shipping_method_categories.rb +24 -0
  350. data/db/migrate/20131218054603_add_item_count_to_spree_orders.rb +5 -0
  351. data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +8 -0
  352. data/db/migrate/20140106224208_rename_permalink_to_slug_for_products.rb +5 -0
  353. data/db/migrate/20140120160805_add_index_to_variant_id_and_currency_on_prices.rb +5 -0
  354. data/db/migrate/20140124023232_rename_activator_id_in_rules_and_actions_to_promotion_id.rb +6 -0
  355. data/db/migrate/20140129024326_add_deleted_at_to_spree_prices.rb +5 -0
  356. data/db/migrate/20140203161722_add_approver_id_and_approved_at_to_orders.rb +6 -0
  357. data/db/migrate/20140204115338_add_confirmation_delivered_to_spree_orders.rb +5 -0
  358. data/db/migrate/20140204192230_add_auto_capture_to_payment_methods.rb +5 -0
  359. data/db/migrate/20140205120320_create_spree_payment_capture_events.rb +12 -0
  360. data/db/migrate/20140205144710_add_uncaptured_amount_to_payments.rb +5 -0
  361. data/db/migrate/20140205181631_default_variant_weight_to_zero.rb +11 -0
  362. data/db/migrate/20140207085910_add_tax_category_id_to_shipping_methods.rb +5 -0
  363. data/db/migrate/20140207093021_add_tax_rate_id_to_shipping_rates.rb +5 -0
  364. data/db/migrate/20140211040159_add_pre_tax_amount_to_line_items_and_shipments.rb +6 -0
  365. data/db/migrate/20140213184916_add_more_indexes.rb +13 -0
  366. data/db/migrate/20140219060952_add_considered_risky_to_orders.rb +5 -0
  367. data/db/migrate/20140227112348_add_preference_store_to_everything.rb +8 -0
  368. data/db/migrate/20140307235515_add_user_id_to_spree_credit_cards.rb +13 -0
  369. data/db/migrate/20140309023735_migrate_old_preferences.rb +23 -0
  370. data/db/migrate/20140309024355_create_spree_stores.rb +25 -0
  371. data/db/migrate/20140309033438_create_store_from_preferences.rb +37 -0
  372. data/db/migrate/20140315053743_add_timestamps_to_spree_assets.rb +6 -0
  373. data/db/migrate/20140318191500_create_spree_taxons_promotion_rules.rb +8 -0
  374. data/db/migrate/20140331100557_add_additional_store_fields.rb +8 -0
  375. data/db/migrate/20140410141842_add_many_missing_indexes.rb +18 -0
  376. data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +66 -0
  377. data/db/migrate/20140415041315_add_user_id_created_by_id_index_to_order.rb +5 -0
  378. data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +8 -0
  379. data/db/migrate/20140518174634_add_token_to_spree_orders.rb +5 -0
  380. data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +29 -0
  381. data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +10 -0
  382. data/db/migrate/20140604135309_drop_credit_card_first_name_and_last_name.rb +6 -0
  383. data/db/migrate/20140609201656_add_deleted_at_to_spree_promotion_actions.rb +6 -0
  384. data/db/migrate/20140616202624_remove_uncaptured_amount_from_spree_payments.rb +5 -0
  385. data/db/migrate/20140625214618_create_spree_refunds.rb +12 -0
  386. data/db/migrate/20140702140656_create_spree_return_authorization_inventory_unit.rb +12 -0
  387. data/db/migrate/20140707125621_rename_return_authorization_inventory_unit_to_return_items.rb +5 -0
  388. data/db/migrate/20140709160534_backfill_line_item_pre_tax_amount.rb +10 -0
  389. data/db/migrate/20140710041921_recreate_spree_return_authorizations.rb +55 -0
  390. data/db/migrate/20140710181204_add_amount_fields_to_return_items.rb +7 -0
  391. data/db/migrate/20140710190048_drop_return_authorization_amount.rb +5 -0
  392. data/db/migrate/20140713140455_create_spree_return_authorization_reasons.rb +28 -0
  393. data/db/migrate/20140713140527_create_spree_refund_reasons.rb +14 -0
  394. data/db/migrate/20140713142214_rename_return_authorization_reason.rb +5 -0
  395. data/db/migrate/20140715182625_create_spree_promotion_categories.rb +11 -0
  396. data/db/migrate/20140716204111_drop_received_at_on_return_items.rb +9 -0
  397. data/db/migrate/20140716212330_add_reception_and_acceptance_status_to_return_items.rb +6 -0
  398. data/db/migrate/20140717155155_create_default_refund_reason.rb +9 -0
  399. data/db/migrate/20140717185932_add_default_to_spree_stock_locations.rb +7 -0
  400. data/db/migrate/20140718133010_create_spree_customer_returns.rb +9 -0
  401. data/db/migrate/20140718133349_add_customer_return_id_to_return_item.rb +6 -0
  402. data/db/migrate/20140718195325_create_friendly_id_slugs.rb +15 -0
  403. data/db/migrate/20140723004419_rename_spree_refund_return_authorization_id.rb +5 -0
  404. data/db/migrate/20140723152808_increase_return_item_pre_tax_amount_precision.rb +13 -0
  405. data/db/migrate/20140723214541_copy_product_slugs_to_slug_history.rb +15 -0
  406. data/db/migrate/20140725131539_create_spree_reimbursements.rb +21 -0
  407. data/db/migrate/20140728225422_add_promotionable_to_spree_products.rb +5 -0
  408. data/db/migrate/20140729133613_add_exchange_inventory_unit_foreign_keys.rb +7 -0
  409. data/db/migrate/20140730155938_add_acceptance_status_errors_to_return_item.rb +5 -0
  410. data/db/migrate/20140731150017_create_spree_reimbursement_types.rb +20 -0
  411. data/db/migrate/20140804185157_add_default_to_shipment_cost.rb +10 -0
  412. data/db/migrate/20140805171035_add_default_to_spree_credit_cards.rb +5 -0
  413. data/db/migrate/20140805171219_make_existing_credit_cards_default.rb +10 -0
  414. data/db/migrate/20140806144901_add_type_to_reimbursement_type.rb +9 -0
  415. data/db/migrate/20140808184039_create_spree_reimbursement_credits.rb +10 -0
  416. data/db/migrate/20140827170513_add_meta_title_to_spree_products.rb +7 -0
  417. data/db/migrate/20140911173301_add_kind_to_zone.rb +11 -0
  418. data/db/migrate/20140924164824_add_code_to_spree_tax_categories.rb +5 -0
  419. data/db/migrate/20140927193717_default_pre_tax_amount_should_be_zero.rb +6 -0
  420. data/db/migrate/20141002191113_add_code_to_spree_shipping_methods.rb +5 -0
  421. data/db/migrate/20141007230328_add_cancel_audit_fields_to_spree_orders.rb +6 -0
  422. data/db/migrate/20141009204607_add_store_id_to_orders.rb +8 -0
  423. data/db/migrate/20141012083513_create_spree_taxons_prototypes.rb +8 -0
  424. data/db/migrate/20141021194502_add_state_lock_version_to_order.rb +5 -0
  425. data/db/migrate/20141023005240_add_counter_cache_from_spree_variants_to_spree_stock_items.rb +13 -0
  426. data/db/migrate/20141101231208_fix_adjustment_order_presence.rb +13 -0
  427. data/db/migrate/20141105213646_update_classifications_positions.rb +9 -0
  428. data/db/migrate/20141120135441_add_guest_token_index_to_spree_orders.rb +5 -0
  429. data/db/migrate/20141215232040_remove_token_permissions_table.rb +6 -0
  430. data/db/migrate/20141215235502_remove_extra_products_slug_index.rb +5 -0
  431. data/db/migrate/20141217215630_update_product_slug_index.rb +6 -0
  432. data/db/migrate/20141218025915_rename_identifier_to_number_for_payment.rb +5 -0
  433. data/db/migrate/20150118210639_create_spree_store_credits.rb +24 -0
  434. data/db/migrate/20150118211500_create_spree_store_credit_categories.rb +8 -0
  435. data/db/migrate/20150118212051_create_spree_store_credit_events.rb +17 -0
  436. data/db/migrate/20150118212101_create_spree_store_credit_types.rb +10 -0
  437. data/db/migrate/20150121022521_remove_environment_from_payment_method.rb +6 -0
  438. data/db/migrate/20150122145607_add_resellable_to_return_items.rb +5 -0
  439. data/db/migrate/20150122202432_add_code_to_spree_promotion_categories.rb +5 -0
  440. data/db/migrate/20150128032538_remove_environment_from_tracker.rb +6 -0
  441. data/db/migrate/20150128060325_remove_spree_configurations.rb +16 -0
  442. data/db/migrate/20150216173445_add_index_to_spree_stock_items_variant_id.rb +13 -0
  443. data/db/migrate/20150309161154_ensure_payments_have_numbers.rb +9 -0
  444. data/db/migrate/20150314013438_add_missing_indexes_on_spree_tables.rb +67 -0
  445. data/db/migrate/20150317174308_remove_duplicated_indexes_from_multi_columns.rb +18 -0
  446. data/db/migrate/20150324104002_remove_user_index_from_spree_state_changes.rb +14 -0
  447. data/db/migrate/20150515211137_fix_adjustment_order_id.rb +70 -0
  448. data/db/migrate/20150522071831_add_position_to_spree_payment_methods.rb +5 -0
  449. data/db/migrate/20150522181728_add_deleted_at_to_friendly_id_slugs.rb +6 -0
  450. data/db/migrate/20150609093816_increase_scale_on_pre_tax_amounts.rb +16 -0
  451. data/db/migrate/20150626181949_add_taxable_adjustment_total_to_line_item.rb +19 -0
  452. data/db/migrate/20150627090949_migrate_payment_methods_display.rb +12 -0
  453. data/db/migrate/20150707204155_enable_acts_as_paranoid_on_calculators.rb +6 -0
  454. data/db/migrate/20150714154102_spree_payment_method_store_credits.rb +12 -0
  455. data/db/migrate/20150726141425_rename_has_and_belongs_to_associations_to_model_names.rb +18 -0
  456. data/db/migrate/20150727191614_spree_store_credit_types.rb +11 -0
  457. data/db/migrate/20150819154308_add_discontinued_to_products_and_variants.rb +68 -0
  458. data/db/migrate/20151220072838_remove_shipping_method_id_from_spree_orders.rb +13 -0
  459. data/db/migrate/20160207191757_add_id_column_to_earlier_habtm_tables.rb +16 -0
  460. data/db/migrate/20160219165458_add_indexes.rb +14 -0
  461. data/db/seeds.rb +5 -0
  462. data/lib/generators/spree/custom_user/custom_user_generator.rb +56 -0
  463. data/lib/generators/spree/custom_user/templates/authentication_helpers.rb.tt +36 -0
  464. data/lib/generators/spree/custom_user/templates/initializer.rb.tt +1 -0
  465. data/lib/generators/spree/custom_user/templates/migration.rb.tt +7 -0
  466. data/lib/generators/spree/dummy/dummy_generator.rb +140 -0
  467. data/lib/generators/spree/dummy/templates/initializers/custom_user.rb +1 -0
  468. data/lib/generators/spree/dummy/templates/initializers/devise.rb +3 -0
  469. data/lib/generators/spree/dummy/templates/rails/application.rb +10 -0
  470. data/lib/generators/spree/dummy/templates/rails/boot.rb +6 -0
  471. data/lib/generators/spree/dummy/templates/rails/database.yml +72 -0
  472. data/lib/generators/spree/dummy/templates/rails/routes.rb +2 -0
  473. data/lib/generators/spree/dummy/templates/rails/script/rails +6 -0
  474. data/lib/generators/spree/dummy/templates/rails/test.rb +35 -0
  475. data/lib/generators/spree/install/install_generator.rb +233 -0
  476. data/lib/generators/spree/install/templates/config/initializers/spree.rb +18 -0
  477. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/backend/all.js +17 -0
  478. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/frontend/all.js +17 -0
  479. data/lib/generators/spree/install/templates/vendor/assets/stylesheets/spree/backend/all.css +16 -0
  480. data/lib/generators/spree/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +16 -0
  481. data/lib/spree/core/controller_helpers/auth.rb +84 -0
  482. data/lib/spree/core/controller_helpers/common.rb +74 -0
  483. data/lib/spree/core/controller_helpers/order.rb +103 -0
  484. data/lib/spree/core/controller_helpers/respond_with.rb +65 -0
  485. data/lib/spree/core/controller_helpers/search.rb +14 -0
  486. data/lib/spree/core/controller_helpers/store.rb +51 -0
  487. data/lib/spree/core/controller_helpers/strong_parameters.rb +42 -0
  488. data/lib/spree/core/delegate_belongs_to.rb +95 -0
  489. data/lib/spree/core/engine.rb +134 -0
  490. data/lib/spree/core/environment/calculators.rb +12 -0
  491. data/lib/spree/core/environment.rb +15 -0
  492. data/lib/spree/core/environment_extension.rb +25 -0
  493. data/lib/spree/core/importer/order.rb +284 -0
  494. data/lib/spree/core/importer/product.rb +62 -0
  495. data/lib/spree/core/importer.rb +9 -0
  496. data/lib/spree/core/number_generator.rb +52 -0
  497. data/lib/spree/core/product_duplicator.rb +74 -0
  498. data/lib/spree/core/product_filters.rb +194 -0
  499. data/lib/spree/core/routes.rb +46 -0
  500. data/lib/spree/core/search/base.rb +102 -0
  501. data/lib/spree/core/token_generator.rb +22 -0
  502. data/lib/spree/core/validators/email.rb +11 -0
  503. data/lib/spree/core/version.rb +5 -0
  504. data/lib/spree/core.rb +96 -0
  505. data/lib/spree/i18n/base.rb +17 -0
  506. data/lib/spree/i18n/initializer.rb +1 -0
  507. data/lib/spree/i18n.rb +37 -0
  508. data/lib/spree/localized_number.rb +22 -0
  509. data/lib/spree/migrations.rb +77 -0
  510. data/lib/spree/money.rb +61 -0
  511. data/lib/spree/permitted_attributes.rb +115 -0
  512. data/lib/spree/promo/environment.rb +9 -0
  513. data/lib/spree/responder.rb +45 -0
  514. data/lib/spree/testing_support/ability_helpers.rb +105 -0
  515. data/lib/spree/testing_support/authorization_helpers.rb +63 -0
  516. data/lib/spree/testing_support/bar_ability.rb +14 -0
  517. data/lib/spree/testing_support/caching.rb +47 -0
  518. data/lib/spree/testing_support/capybara_ext.rb +179 -0
  519. data/lib/spree/testing_support/common_rake.rb +39 -0
  520. data/lib/spree/testing_support/controller_requests.rb +93 -0
  521. data/lib/spree/testing_support/extension_rake.rb +10 -0
  522. data/lib/spree/testing_support/factories/address_factory.rb +22 -0
  523. data/lib/spree/testing_support/factories/adjustment_factory.rb +26 -0
  524. data/lib/spree/testing_support/factories/calculator_factory.rb +20 -0
  525. data/lib/spree/testing_support/factories/country_factory.rb +9 -0
  526. data/lib/spree/testing_support/factories/credit_card_factory.rb +10 -0
  527. data/lib/spree/testing_support/factories/customer_return_factory.rb +31 -0
  528. data/lib/spree/testing_support/factories/image_factory.rb +5 -0
  529. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +10 -0
  530. data/lib/spree/testing_support/factories/line_item_factory.rb +12 -0
  531. data/lib/spree/testing_support/factories/options_factory.rb +13 -0
  532. data/lib/spree/testing_support/factories/order_factory.rb +91 -0
  533. data/lib/spree/testing_support/factories/payment_factory.rb +28 -0
  534. data/lib/spree/testing_support/factories/payment_method_factory.rb +23 -0
  535. data/lib/spree/testing_support/factories/price_factory.rb +7 -0
  536. data/lib/spree/testing_support/factories/product_factory.rb +36 -0
  537. data/lib/spree/testing_support/factories/product_option_type_factory.rb +6 -0
  538. data/lib/spree/testing_support/factories/product_property_factory.rb +6 -0
  539. data/lib/spree/testing_support/factories/promotion_category_factory.rb +6 -0
  540. data/lib/spree/testing_support/factories/promotion_factory.rb +52 -0
  541. data/lib/spree/testing_support/factories/promotion_rule_factory.rb +5 -0
  542. data/lib/spree/testing_support/factories/property_factory.rb +6 -0
  543. data/lib/spree/testing_support/factories/prototype_factory.rb +11 -0
  544. data/lib/spree/testing_support/factories/refund_factory.rb +22 -0
  545. data/lib/spree/testing_support/factories/reimbursement_factory.rb +16 -0
  546. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +7 -0
  547. data/lib/spree/testing_support/factories/return_authorization_factory.rb +20 -0
  548. data/lib/spree/testing_support/factories/return_item_factory.rb +14 -0
  549. data/lib/spree/testing_support/factories/role_factory.rb +9 -0
  550. data/lib/spree/testing_support/factories/shipment_factory.rb +23 -0
  551. data/lib/spree/testing_support/factories/shipping_category_factory.rb +5 -0
  552. data/lib/spree/testing_support/factories/shipping_method_factory.rb +21 -0
  553. data/lib/spree/testing_support/factories/state_factory.rb +13 -0
  554. data/lib/spree/testing_support/factories/stock_factory.rb +31 -0
  555. data/lib/spree/testing_support/factories/stock_item_factory.rb +9 -0
  556. data/lib/spree/testing_support/factories/stock_location_factory.rb +28 -0
  557. data/lib/spree/testing_support/factories/stock_movement_factory.rb +11 -0
  558. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +9 -0
  559. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +8 -0
  560. data/lib/spree/testing_support/factories/store_credit_factory.rb +17 -0
  561. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +11 -0
  562. data/lib/spree/testing_support/factories/store_factory.rb +8 -0
  563. data/lib/spree/testing_support/factories/tax_category_factory.rb +6 -0
  564. data/lib/spree/testing_support/factories/tax_rate_factory.rb +8 -0
  565. data/lib/spree/testing_support/factories/taxon_factory.rb +7 -0
  566. data/lib/spree/testing_support/factories/taxonomy_factory.rb +5 -0
  567. data/lib/spree/testing_support/factories/tracker_factory.rb +6 -0
  568. data/lib/spree/testing_support/factories/user_factory.rb +22 -0
  569. data/lib/spree/testing_support/factories/variant_factory.rb +39 -0
  570. data/lib/spree/testing_support/factories/zone_factory.rb +25 -0
  571. data/lib/spree/testing_support/factories/zone_member_factory.rb +6 -0
  572. data/lib/spree/testing_support/factories.rb +19 -0
  573. data/lib/spree/testing_support/flash.rb +27 -0
  574. data/lib/spree/testing_support/i18n.rb +97 -0
  575. data/lib/spree/testing_support/microdata.rb +189 -0
  576. data/lib/spree/testing_support/order_walkthrough.rb +72 -0
  577. data/lib/spree/testing_support/preferences.rb +31 -0
  578. data/lib/spree/testing_support/url_helpers.rb +9 -0
  579. data/lib/spree_core.rb +1 -0
  580. data/lib/tasks/core.rake +169 -0
  581. data/lib/tasks/email.rake +10 -0
  582. data/lib/tasks/exchanges.rake +70 -0
  583. data/script/rails +9 -0
  584. data/spec/fixtures/microdata.html +22 -0
  585. data/spec/fixtures/microdata_itemref.html +15 -0
  586. data/spec/fixtures/microdata_no_itemscope.html +20 -0
  587. data/spec/fixtures/thinking-cat.jpg +0 -0
  588. data/spree_core.gemspec +47 -0
  589. data/vendor/assets/javascripts/jquery-migrate-1.0.0.js +498 -0
  590. data/vendor/assets/javascripts/jquery.payment.js +652 -0
  591. data/vendor/assets/javascripts/jsuri.js +2 -0
  592. data/vendor/assets/stylesheets/normalize.css +375 -0
  593. data/vendor/assets/stylesheets/skeleton.css +242 -0
  594. metadata +971 -0
@@ -0,0 +1,97 @@
1
+ # This file exists solely to test whether or not there are missing translations
2
+ # within the code that Spree's test suite covers.
3
+ #
4
+ # If there is a translation referenced which has no corresponding key within the
5
+ # .yml file, then there will be a message output at the end of the suite showing
6
+ # that.
7
+ #
8
+ # If there is a translation within the locale file which *isn't* used in the
9
+ # test, this will also be shown at the end of the suite run.
10
+ module Spree
11
+ class << self
12
+ attr_accessor :used_translations, :missing_translation_messages,
13
+ :unused_translations, :unused_translation_messages
14
+ alias_method :normal_t, :t
15
+ end
16
+
17
+ def self.t(*args)
18
+ original_args = args.dup
19
+ options = args.extract_options!
20
+ self.used_translations ||= []
21
+ [*args.first].each do |translation_key|
22
+ key = ([*options[:scope]] << translation_key).join('.')
23
+ self.used_translations << key
24
+ end
25
+ normal_t(*original_args)
26
+ end
27
+
28
+ def self.check_missing_translations
29
+ self.missing_translation_messages = []
30
+ self.used_translations ||= []
31
+ used_translations.map { |a| a.split('.') }.each do |translation_keys|
32
+ root = translations
33
+ processed_keys = []
34
+ translation_keys.each do |key|
35
+ begin
36
+ root = root.fetch(key.to_sym)
37
+ processed_keys << key.to_sym
38
+ rescue KeyError
39
+ error = "#{(processed_keys << key).join('.')} (#{I18n.locale})"
40
+ unless Spree.missing_translation_messages.include?(error)
41
+ Spree.missing_translation_messages << error
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+
48
+ def self.check_unused_translations
49
+ self.used_translations ||= []
50
+ self.unused_translation_messages = []
51
+ self.unused_translations = []
52
+ self.load_translations(translations)
53
+ translation_diff = unused_translations - used_translations
54
+ translation_diff.each do |translation|
55
+ Spree.unused_translation_messages << "#{translation} (#{I18n.locale})"
56
+ end
57
+ end
58
+
59
+ private
60
+
61
+ def self.load_translations(hash, root=[])
62
+ hash.each do |k,v|
63
+ if v.is_a?(Hash)
64
+ load_translations(v, root.dup << k)
65
+ else
66
+ key = (root + [k]).join('.')
67
+ self.unused_translations << key
68
+ end
69
+ end
70
+ end
71
+
72
+ def self.translations
73
+ @translations ||= I18n.backend.send(:translations)[I18n.locale][:spree]
74
+ end
75
+ end
76
+
77
+ RSpec.configure do |config|
78
+ # Need to check here again because this is used in i18n_spec too.
79
+ if ENV['CHECK_TRANSLATIONS']
80
+ config.after :suite do
81
+ Spree.check_missing_translations
82
+ if Spree.missing_translation_messages.any?
83
+ puts "\nThere are missing translations within Spree:"
84
+ puts Spree.missing_translation_messages.sort
85
+ exit(1)
86
+ end
87
+
88
+ Spree.check_unused_translations
89
+ if false && Spree.unused_translation_messages.any?
90
+ puts "\nThere are unused translations within Spree:"
91
+ puts Spree.unused_translation_messages.sort
92
+ exit(1)
93
+ end
94
+ end
95
+ end
96
+ end
97
+
@@ -0,0 +1,189 @@
1
+ module Spree
2
+ module TestingSupport
3
+ module Microdata
4
+ # code extracted and modified from 'microdata' gem
5
+ class Document
6
+ attr_reader :items, :doc
7
+
8
+ def initialize(content)
9
+ @doc = Nokogiri::HTML(content)
10
+ @items = extract_items
11
+ end
12
+
13
+ def extract_items
14
+ itemscopes = @doc.search('//*[@itemscope and not(@itemprop)]')
15
+ return nil unless itemscopes
16
+
17
+ itemscopes.map do |itemscope|
18
+ Item.new(itemscope)
19
+ end
20
+ end
21
+ end
22
+
23
+ class Item
24
+ attr_reader :type, :properties, :id
25
+
26
+ def initialize(top_node)
27
+ @top_node = top_node
28
+ @type = extract_item_type
29
+ @id = extract_item_id
30
+ @properties = {}
31
+ add_item_ref_properties(@top_node)
32
+ parse_elements(extract_elements(@top_node))
33
+ end
34
+
35
+ def to_hash
36
+ hash = {}
37
+ hash[:id] = id if id
38
+ hash[:type] = type if type
39
+ hash[:properties] = {}
40
+ properties.each do |name, values|
41
+ final_values = values.map do |value|
42
+ if value.reponds_to?(:to_hash)
43
+ value.to_hash
44
+ else
45
+ value
46
+ end
47
+ end
48
+ hash[:properties][name] = final_values
49
+ end
50
+ hash
51
+ end
52
+
53
+ private
54
+
55
+ def extract_elements(node)
56
+ node.search('./*')
57
+ end
58
+
59
+ def extract_item_id
60
+ (value = @top_node.attribute('itemid')) ? value.value : nil
61
+ end
62
+
63
+ def extract_item_type
64
+ (value = @top_node.attribute('itemtype')) ? value.value.split(' ') : nil
65
+ end
66
+
67
+ def parse_elements(elements)
68
+ elements.each { |element| parse_element(element) }
69
+ end
70
+
71
+ def parse_element(element)
72
+ item_scope = element.attribute('itemscope')
73
+ item_prop = element.attribute('itemprop')
74
+ internal_elements = extract_elements(element)
75
+ add_item_prop(element) if item_scope || item_prop
76
+ parse_elements(internal_elements) if internal_elements && !item_scope
77
+ end
78
+
79
+ # Add an 'itemprop' to the properties
80
+ def add_item_prop(item_prop)
81
+ properties = Itemprop.parse(item_prop, @page_url)
82
+ properties.each { |name, value| (@properties[name] ||= []) << value }
83
+ end
84
+
85
+ # Add any properties referred to by 'itemref'
86
+ def add_item_ref_properties(element)
87
+ item_ref = element.attribute('itemref')
88
+ if item_ref
89
+ item_ref.value.split(' ').each { |id| parse_elements(find_with_id(id)) }
90
+ end
91
+ end
92
+
93
+ # Find an element with a matching id
94
+ def find_with_id(id)
95
+ @top_node.search("//*[@id='#{id}']")
96
+ end
97
+ end
98
+
99
+ class Itemprop
100
+ NON_TEXTCONTENT_ELEMENTS = {
101
+ 'a' => 'href', 'area' => 'href',
102
+ 'audio' => 'src', 'embed' => 'src',
103
+ 'iframe' => 'src', 'img' => 'src',
104
+ 'link' => 'href', 'meta' => 'content',
105
+ 'object' => 'data', 'source' => 'src',
106
+ 'time' => 'datetime', 'track' => 'src',
107
+ 'video' => 'src'
108
+ }.freeze
109
+ URL_ATTRIBUTES = ['data', 'href', 'src'].freeze
110
+
111
+ # A Hash representing the properties.
112
+ # Hash is of the form {'property name' => 'value'}
113
+ attr_reader :properties
114
+
115
+ # Create a new Itemprop object
116
+ # [element] The itemprop element to be parsed
117
+ # [page_url] The url of the page, including filename, used to form
118
+ # absolute urls
119
+ def initialize(element, page_url = nil)
120
+ @element = element
121
+ @page_url = page_url
122
+ @properties = extract_properties
123
+ end
124
+
125
+ # Parse the element and return a hash representing the properties.
126
+ # Hash is of the form {'property name' => 'value'}
127
+ # [element] The itemprop element to be parsed
128
+ # [page_url] The url of the page, including filename, used to form
129
+ # absolute urls
130
+ def self.parse(element, page_url = nil)
131
+ new(element, page_url).properties
132
+ end
133
+
134
+ private
135
+
136
+ def extract_properties
137
+ prop_names = extract_property_names
138
+ prop_names.each_with_object({}) do |name, memo|
139
+ memo[name] = extract_property
140
+ end
141
+ end
142
+
143
+ # This returns an empty string if can't form a valid
144
+ # absolute url as per the Microdata spec.
145
+
146
+ def make_absolute_url(url)
147
+ return url unless URI.parse(url).relative?
148
+ begin
149
+ URI.parse(@page_url).merge(url).to_s
150
+ rescue URI::Error
151
+ url
152
+ end
153
+ end
154
+
155
+ def non_textcontent_element?(element)
156
+ NON_TEXTCONTENT_ELEMENTS.has_key?(element)
157
+ end
158
+
159
+ def url_attribute?(attribute)
160
+ URL_ATTRIBUTES.include?(attribute)
161
+ end
162
+
163
+ def extract_property_names
164
+ itemprop_attr = @element.attribute('itemprop')
165
+ itemprop_attr ? itemprop_attr.value.split : []
166
+ end
167
+
168
+ def extract_property_value
169
+ element = @element.name
170
+ if non_textcontent_element?(element)
171
+ attribute = NON_TEXTCONTENT_ELEMENTS[element]
172
+ value = @element.attribute(attribute).value
173
+ url_attribute?(attribute) ? make_absolute_url(value) : value
174
+ else
175
+ @element.inner_text.strip
176
+ end
177
+ end
178
+
179
+ def extract_property
180
+ if @element.attribute('itemscope')
181
+ Item.new(@element)
182
+ else
183
+ extract_property_value
184
+ end
185
+ end
186
+ end
187
+ end
188
+ end
189
+ end
@@ -0,0 +1,72 @@
1
+ class OrderWalkthrough
2
+ def self.up_to(state)
3
+ # A default store must exist to provide store settings
4
+ unless Spree::Store.exists?
5
+ FactoryBot.create(:store)
6
+ end
7
+
8
+ # A payment method must exist for an order to proceed through the Address state
9
+ unless Spree::PaymentMethod.exists?
10
+ FactoryBot.create(:check_payment_method)
11
+ end
12
+
13
+ # Need to create a valid zone too...
14
+ zone = FactoryBot.create(:zone)
15
+ country = FactoryBot.create(:country)
16
+ zone.members << Spree::ZoneMember.create(:zoneable => country)
17
+ country.states << FactoryBot.create(:state, :country => country)
18
+
19
+ # A shipping method must exist for rates to be displayed on checkout page
20
+ unless Spree::ShippingMethod.exists?
21
+ FactoryBot.create(:shipping_method).tap do |sm|
22
+ sm.calculator.preferred_amount = 10
23
+ sm.calculator.preferred_currency = Spree::Config[:currency]
24
+ sm.calculator.save
25
+ end
26
+ end
27
+
28
+ order = Spree::Order.create!(email: "spree@example.com")
29
+ add_line_item!(order)
30
+ order.next!
31
+
32
+ end_state_position = states.index(state.to_sym)
33
+ states[0...end_state_position].each do |state|
34
+ send(state, order)
35
+ end
36
+
37
+ order
38
+ end
39
+
40
+ private
41
+
42
+ def self.add_line_item!(order)
43
+ FactoryBot.create(:line_item, order: order)
44
+ order.reload
45
+ end
46
+
47
+ def self.address(order)
48
+ order.bill_address = FactoryBot.create(:address, :country_id => Spree::Zone.global.members.first.zoneable.id)
49
+ order.ship_address = FactoryBot.create(:address, :country_id => Spree::Zone.global.members.first.zoneable.id)
50
+ order.next!
51
+ end
52
+
53
+ def self.delivery(order)
54
+ order.next!
55
+ end
56
+
57
+ def self.payment(order)
58
+ order.payments.create!(payment_method: Spree::PaymentMethod.first, amount: order.total)
59
+ # TODO: maybe look at some way of making this payment_state change automatic
60
+ order.payment_state = 'paid'
61
+ order.next!
62
+ end
63
+
64
+ def self.complete(order)
65
+ #noop?
66
+ end
67
+
68
+ def self.states
69
+ [:address, :delivery, :payment, :complete]
70
+ end
71
+
72
+ end
@@ -0,0 +1,31 @@
1
+ module Spree
2
+ module TestingSupport
3
+ module Preferences
4
+ # Resets all preferences to default values, you can
5
+ # pass a block to override the defaults with a block
6
+ #
7
+ # reset_spree_preferences do |config|
8
+ # config.track_inventory_levels = false
9
+ # end
10
+ #
11
+ def reset_spree_preferences(&config_block)
12
+ Spree::Preferences::Store.instance.persistence = false
13
+ Spree::Preferences::Store.instance.clear_cache
14
+
15
+ config = Rails.application.config.spree.preferences
16
+ configure_spree_preferences &config_block if block_given?
17
+ end
18
+
19
+ def configure_spree_preferences
20
+ config = Rails.application.config.spree.preferences
21
+ yield(config) if block_given?
22
+ end
23
+
24
+ def assert_preference_unset(preference)
25
+ find("#preferences_#{preference}")['checked'].should be false
26
+ Spree::Config[preference].should be false
27
+ end
28
+ end
29
+ end
30
+ end
31
+
@@ -0,0 +1,9 @@
1
+ module Spree
2
+ module TestingSupport
3
+ module UrlHelpers
4
+ def spree
5
+ Spree::Core::Engine.routes.url_helpers
6
+ end
7
+ end
8
+ end
9
+ end
data/lib/spree_core.rb ADDED
@@ -0,0 +1 @@
1
+ require 'spree/core'
@@ -0,0 +1,169 @@
1
+ require 'active_record'
2
+
3
+ namespace :db do
4
+ desc %q{Loads a specified fixture file:
5
+ use rake db:load_file[/absolute/path/to/sample/filename.rb]}
6
+
7
+ task :load_file , [:file, :dir] => :environment do |t, args|
8
+ file = Pathname.new(args.file)
9
+
10
+ puts "loading ruby #{file}"
11
+ require file
12
+ end
13
+
14
+ desc "Loads fixtures from the the dir you specify using rake db:load_dir[loadfrom]"
15
+ task :load_dir , [:dir] => :environment do |t, args|
16
+ dir = args.dir
17
+ dir = File.join(Rails.root, "db", dir) if Pathname.new(dir).relative?
18
+
19
+ ruby_files = {}
20
+ Dir.glob(File.join(dir , '**/*.{rb}')).each do |fixture_file|
21
+ ext = File.extname fixture_file
22
+ ruby_files[File.basename(fixture_file, '.*')] = fixture_file
23
+ end
24
+ ruby_files.sort.each do |fixture , ruby_file|
25
+ # If file exists within application it takes precendence.
26
+ if File.exists?(File.join(Rails.root, "db/default/spree", "#{fixture}.rb"))
27
+ ruby_file = File.expand_path(File.join(Rails.root, "db/default/spree", "#{fixture}.rb"))
28
+ end
29
+ # an invoke will only execute the task once
30
+ Rake::Task["db:load_file"].execute( Rake::TaskArguments.new([:file], [ruby_file]) )
31
+ end
32
+ end
33
+
34
+ desc "Migrate schema to version 0 and back up again. WARNING: Destroys all data in tables!!"
35
+ task :remigrate => :environment do
36
+ require 'highline/import'
37
+
38
+ if ENV['SKIP_NAG'] or ENV['OVERWRITE'].to_s.downcase == 'true' or agree("This task will destroy any data in the database. Are you sure you want to \ncontinue? [y/n] ")
39
+
40
+ # Drop all tables
41
+ ActiveRecord::Base.connection.tables.each { |t| ActiveRecord::Base.connection.drop_table t }
42
+
43
+ # Migrate upward
44
+ Rake::Task["db:migrate"].invoke
45
+
46
+ # Dump the schema
47
+ Rake::Task["db:schema:dump"].invoke
48
+ else
49
+ say "Task cancelled."
50
+ exit
51
+ end
52
+ end
53
+
54
+ desc "Bootstrap is: migrating, loading defaults, sample data and seeding (for all extensions) and load_products tasks"
55
+ task :bootstrap do
56
+ require 'highline/import'
57
+
58
+ # remigrate unless production mode (as saftey check)
59
+ if %w[demo development test].include? Rails.env
60
+ if ENV['AUTO_ACCEPT'] or agree("This task will destroy any data in the database. Are you sure you want to \ncontinue? [y/n] ")
61
+ ENV['SKIP_NAG'] = 'yes'
62
+ Rake::Task["db:create"].invoke
63
+ Rake::Task["db:remigrate"].invoke
64
+ else
65
+ say "Task cancelled, exiting."
66
+ exit
67
+ end
68
+ else
69
+ say "NOTE: Bootstrap in production mode will not drop database before migration"
70
+ Rake::Task["db:migrate"].invoke
71
+ end
72
+
73
+ ActiveRecord::Base.send(:subclasses).each do |model|
74
+ model.reset_column_information
75
+ end
76
+
77
+ load_defaults = Spree::Country.count == 0
78
+ unless load_defaults # ask if there are already Countries => default data hass been loaded
79
+ load_defaults = agree('Countries present, load sample data anyways? [y/n]: ')
80
+ end
81
+ if load_defaults
82
+ Rake::Task["db:seed"].invoke
83
+ end
84
+
85
+ if Rails.env.production? and Spree::Product.count > 0
86
+ load_sample = agree("WARNING: In Production and products exist in database, load sample data anyways? [y/n]:" )
87
+ else
88
+ load_sample = true if ENV['AUTO_ACCEPT']
89
+ load_sample = agree('Load Sample Data? [y/n]: ') unless load_sample
90
+ end
91
+
92
+ if load_sample
93
+ # Reload models' attributes in case they were loaded in old migrations with wrong attributes
94
+ ActiveRecord::Base.descendants.each(&:reset_column_information)
95
+ Rake::Task["spree_sample:load"].invoke
96
+ end
97
+
98
+ puts "Bootstrap Complete.\n\n"
99
+ end
100
+
101
+
102
+
103
+ desc "Fix orphan line items after upgrading to Spree 3.1: only needed if you have line items attached to deleted records with Slug (product) and SKU (variant) duplicates of non-deleted records."
104
+ task :fix_orphan_line_items => :environment do |t, args|
105
+ def get_input
106
+ STDOUT.flush
107
+ input = STDIN.gets.chomp
108
+ case input.upcase
109
+ when "Y"
110
+ return true
111
+
112
+ when "N"
113
+ puts "aborting ....."
114
+ return false
115
+ else
116
+ return true
117
+ end
118
+ end
119
+
120
+ puts "WARNING: This task will re-associate any line_items associated with deleted variants to non-deleted variants with matching SKUs. Because other attributes and product associations may switch during the re-association, this may have unintended side-effects. If this task finishes successfully, line items for old order should no longer be orphaned from their varaints. You should run this task after you have already run the db migratoin AddDiscontinuedToProductsAndVariants. If the db migration did not warn you that it was leaving deleted records in place because of duplicate SKUs, then you do not need to run this rake task."
121
+ puts "Are you sure you want to continue? (Y/n):"
122
+
123
+ if get_input
124
+ puts "looping through all your deleted variants ..."
125
+
126
+ # first verify that I can really fix all of your line items
127
+
128
+ no_live_variants_found = []
129
+ variants_to_fix = []
130
+
131
+ Spree::Variant.deleted.each do |variant|
132
+ # check if this variant has any line items at all
133
+ if !variant.line_items.any?
134
+ next
135
+ end
136
+
137
+ variants_to_fix << variant
138
+ dup_variant = Spree::Variant.find_by(sku: variant.sku)
139
+ if dup_variant
140
+ # this variant is OK
141
+ else
142
+ no_live_variants_found << variant
143
+ end
144
+ end
145
+
146
+ if !variants_to_fix.any?
147
+ abort( "ABORT: You have no deleted variants that are associated to line items. You do not need to run this raks task.")
148
+ end
149
+
150
+ if no_live_variants_found.any?
151
+ puts "ABORT: Unfortunately, I found some deleted variants in your database that do not have matching non-deleted variants to replace them with. This script can only be used to cleanup deleted variants that have SKUs that match non-deleted variants. To continue, you must either (1) un-delete these variants (hint: mark them 'discontinued' instead) or (2) create new variants with a matching SKU for each variant in the list below."
152
+ no_live_variants_found.each do |deleted_variant|
153
+ puts "variant id #{deleted_variant.id} (sku is '#{deleted_variant.sku}') ... no match found"
154
+ end
155
+ abort()
156
+ end
157
+
158
+
159
+ puts "Ready to fix..."
160
+ variants_to_fix.each do |variant|
161
+ dup_variant = Spree::Variant.find_by(sku: variant.sku)
162
+ puts "Changing all line items for #{variant.sku} variant id #{variant.id} (deleted) to variant id #{dup_variant.id} (not deleted) ..."
163
+ Spree::LineItem.unscoped.where(variant_id: variant.id).update_all(variant_id: dup_variant.id)
164
+ end
165
+
166
+ puts "DONE ! Your database should no longer have line items that are associated with deleted variants."
167
+ end
168
+ end
169
+ end
@@ -0,0 +1,10 @@
1
+ namespace :email do
2
+ desc 'Sends test email to specified address - Example: EMAIL=spree@example.com bundle exec rake email:test'
3
+ task test: :environment do
4
+ unless ENV['EMAIL'].present?
5
+ raise ArgumentError, "Must pass EMAIL environment variable. " \
6
+ "Example: EMAIL=spree@example.com bundle exec rake email:test"
7
+ end
8
+ Spree::TestMailer.test_email(ENV['EMAIL']).deliver_now
9
+ end
10
+ end
@@ -0,0 +1,70 @@
1
+ namespace :exchanges do
2
+ desc %q{Takes unreturned exchanged items and creates a new order to charge
3
+ the customer for not returning them}
4
+ task charge_unreturned_items: :environment do
5
+
6
+ unreturned_return_items = Spree::ReturnItem.awaiting_return.exchange_processed.joins(:exchange_inventory_unit).where([
7
+ "spree_inventory_units.created_at < :days_ago AND spree_inventory_units.state = :iu_state",
8
+ days_ago: Spree::Config[:expedited_exchanges_days_window].days.ago, iu_state: "shipped"
9
+ ]).to_a
10
+
11
+ # Determine that a return item has already been deemed unreturned and therefore charged
12
+ # by the fact that its exchange inventory unit has popped off to a different order
13
+ unreturned_return_items.select! { |ri| ri.inventory_unit.order_id == ri.exchange_inventory_unit.order_id }
14
+
15
+ failed_orders = []
16
+
17
+ unreturned_return_items.group_by(&:exchange_shipment).each do |shipment, return_items|
18
+ begin
19
+ inventory_units = return_items.map(&:exchange_inventory_unit)
20
+
21
+ original_order = shipment.order
22
+ order_attributes = {
23
+ bill_address: original_order.bill_address,
24
+ ship_address: original_order.ship_address,
25
+ email: original_order.email
26
+ }
27
+ order_attributes[:store_id] = original_order.store_id
28
+ order = Spree::Order.create!(order_attributes)
29
+
30
+ order.associate_user!(original_order.user) if original_order.user
31
+
32
+ return_items.group_by(&:exchange_variant).map do |variant, variant_return_items|
33
+ variant_inventory_units = variant_return_items.map(&:exchange_inventory_unit)
34
+ line_item = Spree::LineItem.create!(variant: variant, quantity: variant_return_items.count, order: order)
35
+ variant_inventory_units.each { |i| i.update_attributes!(line_item_id: line_item.id, order_id: order.id) }
36
+ end
37
+
38
+ order.reload.update_with_updater!
39
+ while order.state != order.checkout_steps[-2] && order.next; end
40
+
41
+ unless order.payments.present?
42
+ card_to_reuse = original_order.valid_credit_cards.first
43
+ card_to_reuse = original_order.user.credit_cards.default.first if !card_to_reuse && original_order.user
44
+ Spree::Payment.create!(order: order,
45
+ payment_method_id: card_to_reuse.try(:payment_method_id),
46
+ source: card_to_reuse,
47
+ amount: order.total)
48
+ end
49
+
50
+ # the order builds a shipment on its own on transition to delivery, but we want
51
+ # the original exchange shipment, not the built one
52
+ order.shipments.destroy_all
53
+ shipment.update_attributes!(order_id: order.id)
54
+ order.update_attributes!(state: "confirm")
55
+
56
+ order.reload.next!
57
+ order.update_with_updater!
58
+ order.finalize!
59
+
60
+ failed_orders << order unless order.completed? && order.valid?
61
+ rescue
62
+ failed_orders << order
63
+ end
64
+ end
65
+ failure_message = failed_orders.map { |o| "#{o.number} - #{o.errors.full_messages}" }.join(", ")
66
+ raise UnableToChargeForUnreturnedItems.new(failure_message) if failed_orders.present?
67
+ end
68
+ end
69
+
70
+ class UnableToChargeForUnreturnedItems < StandardError; end
data/script/rails ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
5
+ ENGINE_PATH = File.expand_path('../../lib/spree/core/engine', __FILE__)
6
+
7
+ require 'rails/all'
8
+ require 'rails/engine/commands'
9
+
@@ -0,0 +1,22 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <!-- shameless -->
4
+ <head>
5
+ <title>Jason Ronallo</title>
6
+ </head>
7
+
8
+ <body>
9
+ <span itemscope itemtype="http://schema.org/Person"
10
+ itemid="http://ronallo.com#me">
11
+ <a itemprop="url" href="http://twitter.com/ronallo">
12
+ <span itemprop="name">Jason Ronallo</span>
13
+ </a> is the
14
+ <span itemprop="jobTitle">Associate Head of Digital Library Initiatives</span> at
15
+ <span itemprop="affiliation" itemscope itemtype="http://schema.org/Library" itemid="http://lib.ncsu.edu">
16
+ <span itemprop="name">
17
+ <a itemprop="url" href="http://www.lib.ncsu.edu">NCSU Libraries</a>
18
+ </span>
19
+ </span>
20
+ </span>
21
+ </body>
22
+ </html>