spree_core 4.2.7 → 4.3.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (249) hide show
  1. checksums.yaml +4 -4
  2. data/app/finders/concerns/spree/product_filterable.rb +9 -0
  3. data/app/finders/spree/cms_pages/find.rb +41 -0
  4. data/app/finders/spree/menus/find.rb +11 -0
  5. data/app/finders/spree/option_values/find_available.rb +20 -0
  6. data/app/finders/spree/orders/find_complete.rb +14 -2
  7. data/app/finders/spree/orders/find_current.rb +1 -13
  8. data/app/finders/spree/product_properties/find_available.rb +20 -0
  9. data/app/finders/spree/products/find.rb +55 -20
  10. data/app/finders/spree/stores/find_current.rb +24 -0
  11. data/app/helpers/spree/base_helper.rb +62 -2
  12. data/app/helpers/spree/locale_helper.rb +5 -1
  13. data/app/helpers/spree/products_helper.rb +7 -3
  14. data/app/models/concerns/spree/display_link.rb +42 -0
  15. data/app/models/concerns/spree/filter_param.rb +21 -0
  16. data/app/models/concerns/spree/memoized_data.rb +24 -0
  17. data/app/models/concerns/spree/multi_store_resource.rb +24 -0
  18. data/app/models/concerns/spree/product_scopes.rb +59 -8
  19. data/app/models/concerns/spree/single_store_resource.rb +9 -0
  20. data/app/models/concerns/spree/user_address.rb +19 -0
  21. data/app/models/concerns/spree/user_methods.rb +5 -4
  22. data/app/models/concerns/spree/user_payment_source.rb +1 -1
  23. data/app/models/spree/ability.rb +3 -1
  24. data/app/models/spree/address.rb +27 -6
  25. data/app/models/spree/app_configuration.rb +8 -0
  26. data/app/models/spree/app_dependencies.rb +18 -6
  27. data/app/models/spree/base.rb +18 -0
  28. data/app/models/spree/classification.rb +3 -0
  29. data/app/models/spree/cms/pages/feature_page.rb +7 -0
  30. data/app/models/spree/cms/pages/homepage.rb +20 -0
  31. data/app/models/spree/cms/pages/standard_page.rb +4 -0
  32. data/app/models/spree/cms/sections/featured_article.rb +29 -0
  33. data/app/models/spree/cms/sections/hero_image.rb +47 -0
  34. data/app/models/spree/cms/sections/image_gallery.rb +103 -0
  35. data/app/models/spree/cms/sections/product_carousel.rb +14 -0
  36. data/app/models/spree/cms/sections/rich_text_content.rb +13 -0
  37. data/app/models/spree/cms/sections/side_by_side_images.rb +74 -0
  38. data/app/models/spree/cms_page.rb +66 -0
  39. data/app/models/spree/cms_section.rb +57 -0
  40. data/app/models/spree/country.rb +14 -6
  41. data/app/models/spree/credit_card.rb +2 -8
  42. data/app/models/spree/customer_return.rb +8 -2
  43. data/app/models/spree/icon.rb +9 -0
  44. data/app/models/spree/image/configuration/active_storage.rb +2 -0
  45. data/app/models/spree/inventory_unit.rb +1 -1
  46. data/app/models/spree/line_item.rb +1 -1
  47. data/app/models/spree/menu.rb +63 -0
  48. data/app/models/spree/menu_item.rb +76 -0
  49. data/app/models/spree/option_type.rb +1 -1
  50. data/app/models/spree/option_value.rb +11 -0
  51. data/app/models/spree/option_value_variant.rb +1 -1
  52. data/app/models/spree/order/address_book.rb +3 -5
  53. data/app/models/spree/order/currency_updater.rb +1 -1
  54. data/app/models/spree/order/emails.rb +32 -0
  55. data/app/models/spree/order/payments.rb +1 -1
  56. data/app/models/spree/order/store_credit.rb +1 -9
  57. data/app/models/spree/order.rb +46 -45
  58. data/app/models/spree/payment.rb +7 -0
  59. data/app/models/spree/payment_method.rb +4 -0
  60. data/app/models/spree/preferences/preferable.rb +12 -0
  61. data/app/models/spree/preferences/preferable_class_methods.rb +10 -1
  62. data/app/models/spree/product.rb +27 -22
  63. data/app/models/spree/product_property.rb +19 -4
  64. data/app/models/spree/promotion/rules/country.rb +1 -1
  65. data/app/models/spree/promotion/rules/first_order.rb +4 -3
  66. data/app/models/spree/promotion/rules/taxon.rb +10 -7
  67. data/app/models/spree/promotion.rb +6 -15
  68. data/app/models/spree/promotion_handler/cart.rb +7 -2
  69. data/app/models/spree/promotion_handler/coupon.rb +5 -4
  70. data/app/models/spree/promotion_handler/free_shipping.rb +5 -6
  71. data/app/models/spree/promotion_handler/page.rb +3 -2
  72. data/app/models/spree/promotion_handler/promotion_duplicator.rb +1 -0
  73. data/app/models/spree/promotion_rule.rb +2 -0
  74. data/app/models/spree/property.rb +27 -0
  75. data/app/models/spree/reimbursement.rb +3 -1
  76. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +2 -1
  77. data/app/models/spree/shipment_handler.rb +4 -2
  78. data/app/models/spree/stock/quantifier.rb +6 -6
  79. data/app/models/spree/store.rb +90 -7
  80. data/app/models/spree/store_credit.rb +7 -3
  81. data/app/models/spree/store_credit_event.rb +2 -2
  82. data/app/models/spree/store_payment_method.rb +11 -0
  83. data/app/models/spree/store_product.rb +11 -0
  84. data/app/models/spree/store_promotion.rb +11 -0
  85. data/app/models/spree/taxon.rb +21 -1
  86. data/app/models/spree/taxon_image/configuration/active_storage.rb +2 -0
  87. data/app/models/spree/taxonomy.rb +3 -1
  88. data/app/models/spree/variant.rb +13 -4
  89. data/app/presenters/spree/filters/options_presenter.rb +27 -0
  90. data/app/presenters/spree/filters/price_presenter.rb +22 -0
  91. data/app/presenters/spree/filters/price_range_presenter.rb +29 -0
  92. data/app/presenters/spree/filters/properties_presenter.rb +23 -0
  93. data/app/presenters/spree/filters/property_presenter.rb +22 -0
  94. data/app/presenters/spree/filters/quantified_price_range_presenter.rb +44 -0
  95. data/app/services/spree/account/addresses/create.rb +1 -0
  96. data/app/services/spree/account/addresses/helper.rb +6 -0
  97. data/app/services/spree/account/addresses/update.rb +9 -3
  98. data/app/services/spree/account/create.rb +17 -0
  99. data/app/services/spree/account/update.rb +15 -0
  100. data/app/services/spree/build_localized_redirect_url.rb +1 -1
  101. data/app/services/spree/cart/create.rb +5 -3
  102. data/app/services/spree/cart/destroy.rb +40 -0
  103. data/app/services/spree/cart/empty.rb +36 -0
  104. data/app/services/spree/cart/estimate_shipping_rates.rb +3 -3
  105. data/app/services/spree/checkout/add_store_credit.rb +1 -1
  106. data/app/services/spree/classifications/reposition.rb +18 -0
  107. data/app/services/spree/credit_cards/destroy.rb +41 -0
  108. data/app/validators/db_maximum_length_validator.rb +5 -0
  109. data/app/validators/email_validator.rb +3 -1
  110. data/app/views/spree/shared/_purchased_items_table.text.erb +25 -0
  111. data/config/initializers/active_storage.rb +2 -0
  112. data/config/locales/en.yml +166 -2
  113. data/config/routes.rb +0 -5
  114. data/db/migrate/20201023152810_add_filterable_to_spree_properties.rb +8 -0
  115. data/db/migrate/20210407200948_create_spree_menus.rb +16 -0
  116. data/db/migrate/20210408092939_create_spree_menu_items.rb +31 -0
  117. data/db/migrate/20210504163720_add_filter_param_to_spree_product_properties.rb +8 -0
  118. data/db/migrate/20210505114659_add_filter_param_to_spree_properties.rb +8 -0
  119. data/db/migrate/20210512191732_create_spree_cms_pages.rb +24 -0
  120. data/db/migrate/20210514204251_create_spree_cms_sections.rb +22 -0
  121. data/db/migrate/20210527094055_create_spree_products_stores.rb +29 -0
  122. data/db/migrate/20210608045519_ensure_store_default_country_is_set.rb +5 -0
  123. data/db/migrate/20210702112334_add_missing_timestamp_columns.rb +46 -0
  124. data/db/migrate/20210713131614_add_unique_index_on_property_id_and_product_id_to_product_properties.rb +29 -0
  125. data/db/migrate/20210715091956_add_store_id_to_spree_store_credits.rb +10 -0
  126. data/db/migrate/20210716093151_add_store_id_to_spree_taxonomies.rb +11 -0
  127. data/db/migrate/20210716104141_add_index_on_name_parent_id_and_taxonomy_id_on_spree_taxons.rb +31 -0
  128. data/db/migrate/20210721120857_add_index_on_permalink_parent_id_and_taxonomy_id_on_spree_taxons.rb +31 -0
  129. data/db/migrate/20210721125657_create_spree_promotions_stores.rb +29 -0
  130. data/db/migrate/20210722090705_add_store_id_to_spree_customer_returns.rb +11 -0
  131. data/db/migrate/20210726065456_change_integer_id_columns_into_bigint.rb +305 -0
  132. data/db/migrate/20210730154425_fix_promotion_code_and_path_unique_indexes.rb +9 -0
  133. data/lib/generators/spree/dummy/dummy_generator.rb +11 -6
  134. data/lib/generators/spree/dummy_model/templates/model.rb.tt +1 -1
  135. data/lib/generators/spree/install/install_generator.rb +12 -24
  136. data/lib/spree/core/components.rb +8 -0
  137. data/lib/spree/core/controller_helpers/auth.rb +7 -1
  138. data/lib/spree/core/controller_helpers/common.rb +1 -1
  139. data/lib/spree/core/controller_helpers/order.rb +4 -4
  140. data/lib/spree/core/controller_helpers/search.rb +1 -0
  141. data/lib/spree/core/controller_helpers/store.rb +10 -1
  142. data/lib/spree/core/engine.rb +6 -0
  143. data/lib/spree/core/importer/product.rb +3 -1
  144. data/lib/spree/core/product_duplicator.rb +1 -0
  145. data/lib/spree/core/search/base.rb +17 -22
  146. data/lib/spree/core/version.rb +1 -1
  147. data/lib/spree/core.rb +8 -4
  148. data/lib/spree/i18n.rb +1 -1
  149. data/lib/spree/money.rb +2 -1
  150. data/lib/spree/permitted_attributes.rb +14 -3
  151. data/lib/spree/testing_support/authorization_helpers.rb +6 -3
  152. data/lib/spree/testing_support/capybara_config.rb +3 -1
  153. data/lib/spree/testing_support/common_rake.rb +17 -4
  154. data/lib/spree/testing_support/extension_rake.rb +2 -2
  155. data/lib/spree/testing_support/factories/address_factory.rb +1 -1
  156. data/lib/spree/testing_support/factories/classification_factory.rb +8 -0
  157. data/lib/spree/testing_support/factories/cms_page_factory.rb +20 -0
  158. data/lib/spree/testing_support/factories/cms_section_factory.rb +31 -0
  159. data/lib/spree/testing_support/factories/customer_return_factory.rb +24 -17
  160. data/lib/spree/testing_support/factories/icon_factory.rb +7 -0
  161. data/lib/spree/testing_support/factories/line_item_factory.rb +6 -2
  162. data/lib/spree/testing_support/factories/menu_factory.rb +16 -0
  163. data/lib/spree/testing_support/factories/menu_item_factory.rb +10 -0
  164. data/lib/spree/testing_support/factories/options_factory.rb +5 -0
  165. data/lib/spree/testing_support/factories/order_factory.rb +11 -2
  166. data/lib/spree/testing_support/factories/payment_method_factory.rb +6 -2
  167. data/lib/spree/testing_support/factories/product_factory.rb +11 -1
  168. data/lib/spree/testing_support/factories/product_property_factory.rb +1 -1
  169. data/lib/spree/testing_support/factories/promotion_factory.rb +18 -9
  170. data/lib/spree/testing_support/factories/property_factory.rb +22 -0
  171. data/lib/spree/testing_support/factories/stock_location_factory.rb +5 -4
  172. data/lib/spree/testing_support/factories/store_credit_factory.rb +1 -0
  173. data/lib/spree/testing_support/factories/store_factory.rb +11 -0
  174. data/lib/spree/testing_support/factories/taxon_factory.rb +3 -1
  175. data/lib/spree/testing_support/factories/taxon_image_factory.rb +7 -0
  176. data/lib/spree/testing_support/factories/taxonomy_factory.rb +1 -0
  177. data/lib/spree/testing_support/factories/user_factory.rb +7 -2
  178. data/lib/spree/testing_support/factories/variant_factory.rb +2 -2
  179. data/lib/spree/testing_support/flatpickr_capybara.rb +58 -35
  180. data/lib/spree/testing_support/order_walkthrough.rb +9 -9
  181. data/lib/tasks/core.rake +1 -1
  182. data/spec/fixtures/favicon.ico +0 -0
  183. data/spec/fixtures/files/icon_256x256.gif +0 -0
  184. data/spec/fixtures/files/icon_256x256.png +0 -0
  185. data/spec/fixtures/files/icon_512x512.png +0 -0
  186. data/spec/fixtures/files/img_256x128.png +0 -0
  187. data/spree_core.gemspec +11 -10
  188. metadata +207 -159
  189. data/app/assets/images/logo/spree_50.png +0 -0
  190. data/app/assets/images/noimage/large.png +0 -0
  191. data/app/assets/images/noimage/mini.png +0 -0
  192. data/app/assets/images/noimage/product.png +0 -0
  193. data/app/assets/images/noimage/small.png +0 -0
  194. data/app/assets/javascripts/spree.js +0 -78
  195. data/app/controllers/spree/errors_controller.rb +0 -11
  196. data/app/helpers/spree/mail_helper.rb +0 -29
  197. data/app/mailers/spree/base_mailer.rb +0 -46
  198. data/app/mailers/spree/order_mailer.rb +0 -26
  199. data/app/mailers/spree/reimbursement_mailer.rb +0 -12
  200. data/app/mailers/spree/shipment_mailer.rb +0 -12
  201. data/app/mailers/spree/test_mailer.rb +0 -8
  202. data/app/models/spree/order_contents.rb +0 -31
  203. data/app/models/spree/validations/db_maximum_length_validator.rb +0 -22
  204. data/app/views/layouts/spree/base_mailer.html.erb +0 -46
  205. data/app/views/spree/errors/forbidden.html.erb +0 -0
  206. data/app/views/spree/errors/unauthorized.html.erb +0 -0
  207. data/app/views/spree/order_mailer/cancel_email.html.erb +0 -24
  208. data/app/views/spree/order_mailer/cancel_email.text.erb +0 -38
  209. data/app/views/spree/order_mailer/confirm_email.html.erb +0 -23
  210. data/app/views/spree/order_mailer/confirm_email.text.erb +0 -39
  211. data/app/views/spree/order_mailer/store_owner_notification_email.html.erb +0 -23
  212. data/app/views/spree/order_mailer/store_owner_notification_email.text.erb +0 -38
  213. data/app/views/spree/reimbursement_mailer/reimbursement_email.html.erb +0 -56
  214. data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +0 -24
  215. data/app/views/spree/shared/_base_mailer_footer.html.erb +0 -12
  216. data/app/views/spree/shared/_base_mailer_header.html.erb +0 -13
  217. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +0 -456
  218. data/app/views/spree/shared/_error_messages.html.erb +0 -11
  219. data/app/views/spree/shared/_mailer_line_item.html.erb +0 -16
  220. data/app/views/spree/shared/_paths.html.erb +0 -8
  221. data/app/views/spree/shared/_purchased_items_table.html.erb +0 -69
  222. data/app/views/spree/shared/purchased_items_table/_adjustment.html.erb +0 -13
  223. data/app/views/spree/shared/purchased_items_table/_line_item.html.erb +0 -27
  224. data/app/views/spree/shared/purchased_items_table/_subtotal.html.erb +0 -13
  225. data/app/views/spree/shared/purchased_items_table/_total.html.erb +0 -13
  226. data/app/views/spree/shipment_mailer/shipped_email.html.erb +0 -36
  227. data/app/views/spree/shipment_mailer/shipped_email.text.erb +0 -17
  228. data/app/views/spree/test_mailer/test_email.html.erb +0 -40
  229. data/app/views/spree/test_mailer/test_email.text.erb +0 -4
  230. data/config/initializers/assets.rb +0 -2
  231. data/config/initializers/premailer_assets.rb +0 -1
  232. data/config/initializers/premailer_rails.rb +0 -3
  233. data/db/migrate/20140805171219_make_existing_credit_cards_default.rb +0 -10
  234. data/lib/generators/spree/dummy/templates/initializers/bullet.rb +0 -5
  235. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -15
  236. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -16
  237. data/lib/generators/spree/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -16
  238. data/lib/generators/spree/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -16
  239. data/lib/generators/spree/mailers_preview/mailers_preview_generator.rb +0 -23
  240. data/lib/generators/spree/mailers_preview/templates/mailers/previews/order_preview.rb +0 -13
  241. data/lib/generators/spree/mailers_preview/templates/mailers/previews/reimbursement_preview.rb +0 -5
  242. data/lib/generators/spree/mailers_preview/templates/mailers/previews/shipment_preview.rb +0 -5
  243. data/lib/generators/spree/mailers_preview/templates/mailers/previews/user_preview.rb +0 -11
  244. data/lib/tasks/email.rake +0 -10
  245. data/vendor/assets/javascripts/cleave.js +0 -1669
  246. data/vendor/assets/javascripts/fetch.umd.js +0 -531
  247. data/vendor/assets/javascripts/jquery.payment.js +0 -652
  248. data/vendor/assets/javascripts/jsuri.js +0 -458
  249. data/vendor/assets/javascripts/polyfill.min.js +0 -1
@@ -17,11 +17,12 @@ FactoryBot.define do
17
17
  after(:create) do |stock_location, _evaluator|
18
18
  # variant will add itself to all stock_locations in an after_create
19
19
  # creating a product will automatically create a master variant
20
- product_1 = create(:product)
21
- product_2 = create(:product)
20
+ store = create(:store)
21
+ product_1 = create(:product, stores: [store])
22
+ product_2 = create(:product, stores: [store])
22
23
 
23
- stock_location.stock_items.where(variant_id: product_1.master_id).first.adjust_count_on_hand(10)
24
- stock_location.stock_items.where(variant_id: product_2.master_id).first.adjust_count_on_hand(20)
24
+ stock_location.stock_items.where(variant_id: product_1.master.id).first.adjust_count_on_hand(10)
25
+ stock_location.stock_items.where(variant_id: product_2.master.id).first.adjust_count_on_hand(20)
25
26
  end
26
27
  end
27
28
  end
@@ -8,6 +8,7 @@ FactoryBot.define do
8
8
  amount { 150.00 }
9
9
  currency { 'USD' }
10
10
  credit_type { create(:primary_credit_type) }
11
+ store { create(:store) }
11
12
  end
12
13
 
13
14
  factory :store_credits_order_without_user, class: Spree::Order do
@@ -12,5 +12,16 @@ FactoryBot.define do
12
12
  facebook { 'spreecommerce' }
13
13
  twitter { 'spreecommerce' }
14
14
  instagram { 'spreecommerce' }
15
+
16
+ trait :with_favicon do
17
+ transient do
18
+ filepath { Spree::Core::Engine.root.join('spec', 'fixtures', 'favicon.ico') }
19
+ image_type { 'image/x-icon' }
20
+ end
21
+
22
+ favicon_image do
23
+ Rack::Test::UploadedFile.new(filepath, image_type)
24
+ end
25
+ end
15
26
  end
16
27
  end
@@ -1,7 +1,9 @@
1
1
  FactoryBot.define do
2
2
  factory :taxon, class: Spree::Taxon do
3
3
  sequence(:name) { |n| "taxon_#{n}" }
4
- association(:taxonomy, strategy: :create)
4
+
5
+ association :taxonomy, strategy: :create
6
+ association :icon, factory: :taxon_image
5
7
  parent_id { taxonomy.root.id }
6
8
  end
7
9
  end
@@ -0,0 +1,7 @@
1
+ FactoryBot.define do
2
+ factory :taxon_image, class: Spree::TaxonImage do
3
+ before(:create) do |taxon_image|
4
+ taxon_image.attachment.attach(io: File.new(Spree::Core::Engine.root + 'spec/fixtures/thinking-cat.jpg'), filename: 'thinking-cat.jpg')
5
+ end
6
+ end
7
+ end
@@ -1,5 +1,6 @@
1
1
  FactoryBot.define do
2
2
  factory :taxonomy, class: Spree::Taxonomy do
3
3
  sequence(:name) { |n| "taxonomy_#{n}" }
4
+ store { Spree::Store.default }
4
5
  end
5
6
  end
@@ -15,8 +15,13 @@ FactoryBot.define do
15
15
  end
16
16
 
17
17
  factory :user_with_addresses, aliases: [:user_with_addreses] do
18
- ship_address
19
- bill_address
18
+ after(:create) do |user|
19
+ user.ship_address = create(:address, user: user)
20
+ user.bill_address = create(:address, user: user)
21
+ user.addresses << user.ship_address
22
+ user.addresses << user.bill_address
23
+ user.save
24
+ end
20
25
  end
21
26
  end
22
27
  end
@@ -12,7 +12,7 @@ FactoryBot.define do
12
12
  is_master { 0 }
13
13
  track_inventory { true }
14
14
 
15
- product { |p| p.association(:base_product) }
15
+ product { |p| p.association(:base_product, stores: [create(:store)]) }
16
16
  option_values { [create(:option_value)] }
17
17
 
18
18
  # ensure stock item will be created for this variant
@@ -20,7 +20,7 @@ FactoryBot.define do
20
20
 
21
21
  factory :variant do
22
22
  # on_hand 5
23
- product { |p| p.association(:product) }
23
+ product { |p| p.association(:product, stores: [create(:store)]) }
24
24
  end
25
25
 
26
26
  factory :master_variant do
@@ -1,78 +1,93 @@
1
1
  module Spree
2
2
  module TestingSupport
3
3
  module FlatpickrCapybara
4
- def fill_in_date_manually(label_text, with:)
4
+ def fill_in_date_manually(label_text, options = {})
5
5
  with_open_flatpickr(label_text) do |field|
6
- fill_in field[:id], with: with
6
+ fill_in field[:id], with: string_date(options)
7
7
  end
8
8
  end
9
9
 
10
- def fill_in_date_picker(label_text, with:)
10
+ def fill_in_date_picker(label_text, options = {})
11
+ if options[:hour].blank? && options[:minute].blank?
12
+ flatpickr_date_only(label_text, options)
13
+ else
14
+ flatpickr_date_time(label_text, options)
15
+ end
16
+ end
17
+
18
+ def fill_in_date_with_js(label_text, options = {})
19
+ date_field = find("input[id='#{label_text}']")
20
+ script = "document.querySelector('#{date_field}').flatpickr().setDate('#{string_date(options)}');"
21
+
22
+ page.execute_script(script)
23
+ end
24
+
25
+ private
26
+
27
+ def flatpickr_date_only(label_text, options = {})
11
28
  within_open_flatpickr(label_text) do
12
29
  within_flatpickr_months do
13
- fill_in_flatpickr_year(with.split('-')[0])
30
+ fill_in_flatpickr_year(options[:year].to_i)
31
+ sleep(0.25) # Pause to let JavaScript adjust the month selector in the flatpickr cal in relation to any related FROM...TO cal.
14
32
 
15
- select_flatpickr_month(with.split('-')[1])
33
+ select_flatpickr_month(options[:month].to_i)
34
+ sleep(0.25) # Pause to let JavaScript adjust the day selection area in the flatpickr cal in relation to any related FROM...TO cal.
16
35
 
17
- click_on_flatpickr_day(with.split('-')[2])
36
+ click_on_flatpickr_day(options[:day].to_i)
18
37
  end
19
38
  end
20
39
  end
21
40
 
22
- def fill_in_date_time_picker(label_text, with:)
41
+ def flatpickr_date_time(label_text, options = {})
23
42
  within_open_flatpickr(label_text) do
24
43
  within_flatpickr_months do
25
- fill_in_flatpickr_year(with.split('-')[0])
44
+ fill_in_flatpickr_year(options[:year].to_i)
45
+ sleep(0.25) # Pause to let JavaScript adjust the month selector in the flatpickr cal in relation to any related FROM...TO cal.
26
46
 
27
- select_flatpickr_month(with.split('-')[1])
47
+ select_flatpickr_month(options[:month].to_i)
48
+ sleep(0.25) # Pause to let JavaScript adjust the day selection area in the flatpickr cal in relation to any related FROM...TO cal.
28
49
 
29
- click_on_flatpickr_day(with.split('-')[2])
50
+ click_on_flatpickr_day(options[:day].to_i)
30
51
  end
31
52
 
32
53
  within_flatpickr_time do
33
- select_flatpickr_hour(with.split('-')[3])
34
-
35
- select_flatpickr_min(with.split('-')[4])
54
+ select_flatpickr_hour(options[:hour].to_i)
55
+ select_flatpickr_min(options[:minute].to_i)
36
56
  end
37
57
  end
38
58
  end
39
59
 
40
- def fill_in_date_with_js(label_text, with:)
41
- date_field = find("input[id='#{label_text}']")
42
- script = "document.querySelector('#{date_field}').flatpickr().setDate('#{with}');"
43
-
44
- page.execute_script(script)
45
- end
46
-
47
- private
48
-
49
60
  def with_open_flatpickr(label_text)
50
61
  field_label = find_field(id: label_text, type: :hidden)
51
62
 
52
63
  date_field = field_label.sibling('.flatpickr-alt-input')
53
- date_field.click # Open the widget
64
+ date_field.click # Open the flatpickr cal.
65
+ sleep(0.25) # Pause to let JavaScript populate DOM with an open flatpickr cal.
54
66
 
55
- yield(date_field)
67
+ yield(date_field) # Complete required action within the open flatpickr cal.
56
68
 
57
- date_field.send_keys :tab # Close the date picker widget
69
+ date_field.send_keys :tab # Close the date flatpickr cal.
70
+ sleep(0.25) # Pause to let JavaScript adjust any DOM values in relation to any related FROM...TO cal.
58
71
  end
59
72
 
60
- def within_open_flatpickr(label_text)
73
+ def within_open_flatpickr(label_text, &block)
61
74
  with_open_flatpickr(label_text) do
62
- within find(:xpath, "/html/body/div[contains(@class, 'flatpickr-calendar')]") { yield }
75
+ within find('.flatpickr-calendar.open', &block)
63
76
  end
64
77
  end
65
78
 
66
- def within_flatpickr_months
67
- within find('.flatpickr-months .flatpickr-month .flatpickr-current-month') { yield }
79
+ def within_flatpickr_months(&block)
80
+ within find('.flatpickr-months > .flatpickr-month > .flatpickr-current-month', &block)
68
81
  end
69
82
 
70
- def within_flatpickr_time
71
- within find('.flatpickr-time') { yield }
83
+ def within_flatpickr_time(&block)
84
+ within find('.flatpickr-time', &block)
72
85
  end
73
86
 
74
87
  def select_flatpickr_month(month)
75
- find("select.flatpickr-monthDropdown-months > option:nth-child(#{month.to_i})").select_option
88
+ accurate_month = (month.to_i - 1)
89
+
90
+ find("select.flatpickr-monthDropdown-months > option[value='#{accurate_month}']").select_option
76
91
  end
77
92
 
78
93
  def fill_in_flatpickr_year(year)
@@ -81,12 +96,12 @@ module Spree
81
96
 
82
97
  def click_on_flatpickr_day(day)
83
98
  within_flatpickr_days do
84
- find('span', text: day).click
99
+ find('.flatpickr-day:not(.prevMonthDay):not(.nextMonthDay)', text: day, exact_text: true).click
85
100
  end
86
101
  end
87
102
 
88
- def within_flatpickr_days
89
- within find('.flatpickr-innerContainer > .flatpickr-rContainer > .flatpickr-days') { yield }
103
+ def within_flatpickr_days(&block)
104
+ within find('.flatpickr-innerContainer > .flatpickr-rContainer > .flatpickr-days > .dayContainer', &block)
90
105
  end
91
106
 
92
107
  def select_flatpickr_hour(hour)
@@ -96,6 +111,14 @@ module Spree
96
111
  def select_flatpickr_min(min)
97
112
  find('input.flatpickr-minute').set(min)
98
113
  end
114
+
115
+ def string_date(options)
116
+ if options[:hour].present? && options[:minute].present?
117
+ "#{options[:year]}-#{options[:month]}-#{options[:day]}-#{options[:hour]}-#{options[:minute]}"
118
+ else
119
+ "#{options[:year]}-#{options[:month]}-#{options[:day]}"
120
+ end
121
+ end
99
122
  end
100
123
  end
101
124
  end
@@ -1,12 +1,12 @@
1
1
  class OrderWalkthrough
2
- def self.up_to(state)
3
- store = if Spree::Store.exists?
4
- # Ensure the default store is used
5
- Spree::Store.default || FactoryBot.create(:store, default: true)
6
- else
7
- # Create a default store
8
- FactoryBot.create(:store, default: true)
9
- end
2
+ def self.up_to(state, store = nil)
3
+ store ||= if Spree::Store.exists?
4
+ # Ensure the default store is used
5
+ Spree::Store.default || FactoryBot.create(:store, default: true)
6
+ else
7
+ # Create a default store
8
+ FactoryBot.create(:store, default: true)
9
+ end
10
10
 
11
11
  # A payment method must exist for an order to proceed through the Address state
12
12
  unless Spree::PaymentMethod.exists?
@@ -28,7 +28,7 @@ class OrderWalkthrough
28
28
  end
29
29
  end
30
30
 
31
- order = Spree::Order.create!(email: 'spree@example.com')
31
+ order = store.orders.create!(email: 'spree@example.com')
32
32
  add_line_item!(order)
33
33
  order.next!
34
34
 
data/lib/tasks/core.rake CHANGED
@@ -8,7 +8,7 @@ use rake db:load_file[/absolute/path/to/sample/filename.rb]}
8
8
  file = Pathname.new(args.file)
9
9
 
10
10
  puts "loading ruby #{file}"
11
- require file
11
+ load file
12
12
  end
13
13
 
14
14
  desc 'Loads fixtures from the the dir you specify using rake db:load_dir[loadfrom]'
Binary file
Binary file
data/spree_core.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |s|
8
8
  s.version = Spree.version
9
9
  s.authors = ['Sean Schofield', 'Spark Solutions']
10
10
  s.email = 'hello@spreecommerce.org'
11
- s.summary = 'The bare bones necessary for Spree.'
12
- s.description = 'The bare bones necessary for Spree.'
11
+ s.summary = 'The bare bones necessary for Spree'
12
+ s.description = 'Spree Models, Helpers, Services and core libraries'
13
13
  s.homepage = 'https://spreecommerce.org'
14
14
  s.license = 'BSD-3-Clause'
15
15
 
@@ -26,8 +26,16 @@ Gem::Specification.new do |s|
26
26
  s.files = `git ls-files`.split("\n").reject { |f| f.match(/^spec/) && !f.match(/^spec\/fixtures/) }
27
27
  s.require_path = 'lib'
28
28
 
29
+ %w[
30
+ actionpack actionview activejob activemodel activerecord
31
+ activestorage activesupport railties
32
+ ].each do |rails_gem|
33
+ s.add_dependency rails_gem, '>= 5.2'
34
+ end
35
+
29
36
  s.add_dependency 'activemerchant', '~> 1.67'
30
37
  s.add_dependency 'acts_as_list', '>= 0.8'
38
+ s.add_dependency 'auto_strip_attributes', '~> 2.6'
31
39
  s.add_dependency 'awesome_nested_set', '~> 3.3', '>= 3.3.1'
32
40
  s.add_dependency 'carmen', '>= 1.0'
33
41
  s.add_dependency 'cancancan', '~> 3.2'
@@ -37,20 +45,13 @@ Gem::Specification.new do |s|
37
45
  s.add_dependency 'money', '~> 6.13'
38
46
  s.add_dependency 'monetize', '~> 1.9'
39
47
  s.add_dependency 'paranoia', '~> 2.4'
40
- s.add_dependency 'premailer-rails'
41
- s.add_dependency 'rails', '>= 5.2', '< 6.2'
42
48
  s.add_dependency 'ransack', '~> 2.3'
43
- s.add_dependency 'responders'
44
49
  s.add_dependency 'rexml'
45
50
  s.add_dependency 'state_machines-activerecord', '~> 0.6'
46
51
  s.add_dependency 'state_machines-activemodel', '~> 0.7'
47
52
  s.add_dependency 'stringex'
48
- s.add_dependency 'twitter_cldr', '>= 4.3'
49
- s.add_dependency 'sprockets', '~> 3.7'
50
- s.add_dependency 'sprockets-rails'
53
+ s.add_dependency 'validates_zipcode'
51
54
  s.add_dependency 'mini_magick', '~> 4.9', '>= 4.9.4'
52
55
  s.add_dependency 'image_processing', '~> 1.2'
53
56
  s.add_dependency 'active_storage_validations', '~> 0.9'
54
-
55
- s.add_development_dependency 'email_spec', '~> 2.2'
56
57
  end