workarea-storefront 3.5.8 → 3.5.13

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 75e176db80d296deee6c9b3c137b7c8bf7b00789131342322ab319c5cec058f6
4
- data.tar.gz: 97179fefcf0cb1f9ade197effaf012e36a9ef0dee1e92b54ea85ef13a29c5368
3
+ metadata.gz: 4ea6133352eedf9e8f948a185e5d1b989edc0c9664b21d2de8e5b496429a9938
4
+ data.tar.gz: 79c3922dc065c153aa2c0d3027d9a224b2a0a12795de5336e7a2083078719930
5
5
  SHA512:
6
- metadata.gz: 49b621fc2a3cadaed09ff4b73e507b92f5d953e62e573627b1a860c394c528edadbf4cd7814a0dfbe3ccaed49d78fe06ad4bd4a551aba7a8fa8bdf45c9403c81
7
- data.tar.gz: afb750b921e132d81e39e8a4f13c46e2ca486260afbe99e6c0da810d1cee8dcf4217eab8b23399fd42fb3fd003ce4676a7cdf626e358b93eb5475f2c45d9eceb
6
+ metadata.gz: 0dfcb3326e1fd5f3d70644c6eb5d340495d370f72a380730c9c6775c47c1eed96782e284e7229efbda6b453be1149056e65138339d33bd04091946894f3db088
7
+ data.tar.gz: 3b2ee21944554f42fef34f75e519626ddf8363c599fd3665328d92d3005946c38d4a5bdd5a639365096a1e93bbaa73389cbfaefd1d934867b8201492985a51e3
@@ -46,6 +46,8 @@ module Workarea
46
46
  end
47
47
 
48
48
  def validate_shipping_options
49
+ return unless current_order.requires_shipping?
50
+
49
51
  available_options = Workarea::Storefront::CartViewModel.new(current_order).shipping_options
50
52
 
51
53
  if available_options.empty?
@@ -44,7 +44,7 @@ module Workarea
44
44
  segment_ids: current_segments.map(&:id)
45
45
  )
46
46
 
47
- update_tracking!(email: current_order.email)
47
+ update_tracking!(email: current_order.email) unless current_order.email.blank?
48
48
  end
49
49
 
50
50
  def with_order_lock
@@ -26,7 +26,10 @@ module Workarea
26
26
  #
27
27
  def current_order=(order)
28
28
  @current_order = order
29
- cookies.permanent.signed[:order_id] = order&.id
29
+
30
+ if order.blank? || order.persisted?
31
+ cookies.permanent.signed[:order_id] = order&.id
32
+ end
30
33
  end
31
34
 
32
35
  # Removes the current order from the session.
@@ -8,7 +8,11 @@ module Workarea
8
8
 
9
9
  def edit
10
10
  reset = User::PasswordReset.find_by(token: params[:token]) rescue nil
11
- redirect_to forgot_password_path unless reset
11
+
12
+ unless reset
13
+ flash[:error] = t('workarea.storefront.flash_messages.password_reset_expired')
14
+ redirect_to forgot_password_path
15
+ end
12
16
  end
13
17
 
14
18
  def create
@@ -27,7 +27,7 @@ module Workarea
27
27
 
28
28
  def search_query
29
29
  @search_query ||= Search::CategoryBrowse.new(
30
- options.merge(
30
+ options.except(:per_page).merge(
31
31
  category_ids: [model.id],
32
32
  rules: model.product_rules.usable,
33
33
  terms_facets: terms_facets - %w(category),
@@ -3,7 +3,7 @@
3
3
  = render_schema_org(fulfillment_email_schema(@order, @package))
4
4
 
5
5
  - content_for :preheader_text do
6
- = t('workarea.storefront.email.order_cancellation.heading', order_id: @order.id)
6
+ = t('workarea.storefront.email.order_shipped.heading', order_id: @order.id)
7
7
 
8
8
  %tr
9
9
  %td
@@ -10,6 +10,8 @@
10
10
  .product-prices.product-prices--details
11
11
  = render 'workarea/storefront/products/pricing', product: product
12
12
 
13
+ = append_partials('storefront.product_pricing_details', product: product)
14
+
13
15
  - if product.description.present?
14
16
  .product-details__description
15
17
  %p= truncated_product_description(product, t('workarea.storefront.products.read_more'))
@@ -10,6 +10,8 @@
10
10
  .product-prices.product-prices--details
11
11
  = render 'workarea/storefront/products/pricing', product: product
12
12
 
13
+ = append_partials('storefront.product_pricing_details', product: product)
14
+
13
15
  - if product.description.present?
14
16
  .product-details__description
15
17
  %p= truncated_product_description(product, t('workarea.storefront.products.read_more'))
@@ -210,14 +210,14 @@ en:
210
210
  credit_card_update_error: There were errors updating your credit card.
211
211
  credit_card_removed: Your credit card has been removed.
212
212
  password_reset_expired: This password reset is expired.
213
- password_reset_email_sent: If a valid e-mail address was entered, instructions to reset your password have been sent to "%{email}"
213
+ password_reset_email_sent: If a valid email address was entered, instructions to reset your password have been sent to "%{email}"
214
214
  password_reset: Your password has been reset.
215
215
  old_password_invalid: Your old password is not valid.
216
216
  password_required: Password is required.
217
217
  items_required: You must add an item to your cart to checkout
218
218
  order_custom_pricing: Your cart has custom pricing, you cannot edit the contents of your cart.
219
219
  download_unavailable: This download is no longer available. Contact customer support for more information.
220
- no_available_shipping_options: There are no available shipping options for your shipping adddress.
220
+ no_available_shipping_options: There are no available shipping options for your shipping address.
221
221
 
222
222
  forms:
223
223
  required: '*'
@@ -123,6 +123,26 @@ module Workarea
123
123
 
124
124
  assert_redirected_to(storefront.login_path)
125
125
  end
126
+
127
+ def test_no_extra_order_id_cookies
128
+ user = create_user(password: 'Passw0rd!')
129
+ post storefront.login_path,
130
+ params: { email: user.email, password: 'Passw0rd!' }
131
+
132
+ follow_redirect!
133
+ assert(cookies[:order_id].blank?)
134
+
135
+ delete storefront.logout_path
136
+
137
+ follow_redirect!
138
+ assert(cookies[:order_id].blank?)
139
+
140
+ post storefront.login_path,
141
+ params: { email: user.email, password: 'Passw0rd!' }
142
+
143
+ follow_redirect!
144
+ assert(cookies[:order_id].blank?)
145
+ end
126
146
  end
127
147
  end
128
148
  end
@@ -16,6 +16,16 @@ module Workarea
16
16
  get storefront.category_path(create_category(active: false))
17
17
  assert(response.ok?)
18
18
  end
19
+
20
+ def test_not_accepting_per_page_param
21
+ products = [create_product, create_product]
22
+ category = create_category(product_ids: products.map(&:id))
23
+
24
+ get storefront.category_path(category, page: 1, per_page: 1)
25
+ assert(response.ok?)
26
+ assert_includes(response.body, storefront.product_path(products.first))
27
+ assert_includes(response.body, storefront.product_path(products.second))
28
+ end
19
29
  end
20
30
  end
21
31
  end
@@ -345,6 +345,39 @@ module Workarea
345
345
 
346
346
  assert(flash[:error].present?)
347
347
  end
348
+
349
+ def test_not_setting_a_blank_tracking_email
350
+ cookies[:email] = 'foo@bar.com'
351
+ get storefront.checkout_shipping_path
352
+ assert_equal('foo@bar.com', cookies[:email])
353
+ end
354
+
355
+ def test_no_required_shipping_address_options_flash_message
356
+ product = create_product(name: 'Digital Product', variants: [{ sku: 'SKU' }])
357
+ create_fulfillment_sku(id: 'SKU', policy: :download, file: product_image_file)
358
+
359
+ post storefront.cart_items_path,
360
+ params: { product_id: product.id, sku: product.skus.first, quantity: 1 }
361
+
362
+ get storefront.checkout_addresses_path
363
+
364
+ patch storefront.checkout_addresses_path,
365
+ params: {
366
+ email: 'bcrouse@weblinc.com',
367
+ billing_address: {
368
+ first_name: 'Ben',
369
+ last_name: 'Crouse',
370
+ street: '12 N. 3rd St.',
371
+ city: 'Philadelphia',
372
+ region: 'PA',
373
+ postal_code: '19106',
374
+ country: 'US',
375
+ phone_number: '2159251800'
376
+ }
377
+ }
378
+
379
+ refute(flash[:error].present?)
380
+ end
348
381
  end
349
382
  end
350
383
  end
@@ -13,7 +13,7 @@ module Workarea
13
13
 
14
14
  def test_login
15
15
  login(User.find(params[:user_id]))
16
- self.current_order = Order.new(id: params[:order_id]) if params[:order_id].present?
16
+ self.current_order = Order.create!(id: params[:order_id]) if params[:order_id].present?
17
17
  head :ok
18
18
  end
19
19
 
@@ -87,6 +87,16 @@ module Workarea
87
87
  assert_includes(response.body, 'Foo A')
88
88
  assert_includes(response.body, 'Foo B')
89
89
  end
90
+
91
+ def test_not_accepting_per_page_param
92
+ one = create_product(name: 'Foo A')
93
+ two = create_product(name: 'Foo B')
94
+
95
+ get storefront.search_path(q: 'foo', page: 1, per_page: 1)
96
+ assert(response.ok?)
97
+ assert_includes(response.body, storefront.product_path(one))
98
+ assert_includes(response.body, storefront.product_path(two))
99
+ end
90
100
  end
91
101
  end
92
102
  end
@@ -271,6 +271,19 @@ module Workarea
271
271
  headers: { 'HTTP_REFERER' => 'https://www.facebook.com/' }
272
272
  assert_equal(google.id.to_s, response.headers['X-Workarea-Segments'])
273
273
  end
274
+
275
+ def test_missing_email_cookies
276
+ user = create_user(password: 'w0rkArea!', tags: %w(foo))
277
+ segment = create_segment(rules: [Segment::Rules::Tags.new(tags: %w(foo))])
278
+
279
+ post storefront.login_path,
280
+ params: { email: user.email, password: 'w0rkArea!' }
281
+
282
+ cookies[:email] = nil
283
+
284
+ get storefront.current_user_path(format: 'json')
285
+ assert_equal(segment.id.to_s, response.headers['X-Workarea-Segments'])
286
+ end
274
287
  end
275
288
  end
276
289
  end
@@ -31,6 +31,7 @@ module Workarea
31
31
 
32
32
  def test_handles_a_missing_password_reset
33
33
  get storefront.reset_password_path(token: 'foo')
34
+ assert(flash[:error].present?)
34
35
  assert_redirected_to(storefront.forgot_password_path)
35
36
  end
36
37
 
@@ -42,6 +43,24 @@ module Workarea
42
43
  assert(flash[:error].present?)
43
44
  assert(response.redirect?)
44
45
  end
46
+
47
+ def test_expired_resets
48
+ post storefront.forgot_password_path, params: { email: 'passwords@workarea.com' }
49
+ first = User::PasswordReset.desc(:created_at).first
50
+
51
+ get storefront.reset_password_path(token: first.token)
52
+ assert(response.ok?)
53
+
54
+ post storefront.forgot_password_path, params: { email: 'passwords@workarea.com' }
55
+ second = User::PasswordReset.desc(:created_at).first
56
+
57
+ get storefront.reset_password_path(token: second.token)
58
+ assert(response.ok?)
59
+
60
+ get storefront.reset_password_path(token: first.token)
61
+ assert(flash[:error].present?)
62
+ assert_redirected_to(storefront.forgot_password_path)
63
+ end
45
64
  end
46
65
  end
47
66
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: workarea-storefront
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.8
4
+ version: 3.5.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Crouse
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-31 00:00:00.000000000 Z
11
+ date: 2020-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: workarea-core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 3.5.8
19
+ version: 3.5.13
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 3.5.8
26
+ version: 3.5.13
27
27
  description: Provides user-facing ecommerce storefront functionality for the Workarea
28
28
  Commerce Platform.
29
29
  email: