workarea-core 3.4.33 → 3.4.38

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: 9380a926427872b88a127eeca3d80b734d8679e297cd691a409b2125d181b210
4
- data.tar.gz: 37b763327a0a0f7eec7d34b4f744eae59580a8717f1e0bac3b4fadc830c62f61
3
+ metadata.gz: 9ffbb2028cd43e91abbc3601126483073b55997738eba74759b902e353590b67
4
+ data.tar.gz: 70acccdddb99146faaf878e862bc8a1e2161f5c2a62a10cd0f3f1f5f97bc4b19
5
5
  SHA512:
6
- metadata.gz: 6da8af3694f295513a48512a0fd51f2309c04f33b400461dfb90727c8d4b083a7e291e0e66edb69ae23ba9a55a4f8eb5351b34434da153ed915bada8ccdabe7d
7
- data.tar.gz: f15b4a14d8e5a44f0acbc71c2c780731b0f9b3c3f07c8223e5aa15ba5d9ad48f8a779d81a10dd33b2561503fff5da37f7478ed3dedb7cfd6bfee5e6931b47a37
6
+ metadata.gz: fb66b15c9317d085e8dbd97262ddf4ae85ef31eb5cbb77b1bf6375f69b284a6ce439579c534b6ec05c337644b022e4b186e4f55c51cabf555a29c490f131bc8e
7
+ data.tar.gz: db47bf0b35f4f7f12a27b05759d242301e7b0b6779670d41fab803129fd391c9246ecc08f494314e3865c5f8190a636d6f1df521b3b31d545dec53c624c5a6dd
@@ -7,7 +7,10 @@ module Workarea
7
7
  default from: -> (*) { Workarea.config.email_from }
8
8
 
9
9
  def default_url_options(options = {})
10
- super.merge(host: Workarea.config.host)
10
+ # super isn't returning the configured options, so manually merge them in
11
+ super
12
+ .merge(Rails.application.config.action_mailer.default_url_options.to_h)
13
+ .merge(host: Workarea.config.host)
11
14
  end
12
15
  end
13
16
  end
@@ -158,10 +158,14 @@ module Workarea
158
158
  # Used in auto completing an order for a logged in user.
159
159
  #
160
160
  # @param [Hash] parameters for updating
161
- # @return [self]
161
+ # @return [Boolean] whether the update was successful.
162
162
  #
163
163
  def update(params = {})
164
- steps.each { |s| s.new(self).update(params) }
164
+ return true if params.blank?
165
+
166
+ steps.reduce(true) do |result, step|
167
+ result &= step.new(self).update(params)
168
+ end
165
169
  end
166
170
 
167
171
  # Whether this checkout needs any further information
@@ -15,7 +15,8 @@ module Workarea
15
15
  validate :subject_exists
16
16
 
17
17
  def full_subject
18
- Workarea.config.inquiry_subjects[subject]
18
+ I18n.t('workarea.inquiry.subjects')[subject.optionize.to_sym].presence ||
19
+ Workarea.config.inquiry_subjects[subject]
19
20
  end
20
21
 
21
22
  private
@@ -80,12 +80,7 @@ module Workarea
80
80
  build_credit_card unless credit_card
81
81
  credit_card.saved_card_id = nil
82
82
  credit_card.attributes = attrs.slice(
83
- :month,
84
- :year,
85
- :saved_card_id,
86
- :number,
87
- :cvv,
88
- :amount
83
+ *Workarea.config.credit_card_attributes
89
84
  )
90
85
  save
91
86
  end
@@ -21,7 +21,7 @@ module Workarea
21
21
  end
22
22
 
23
23
  def keywords
24
- super + model.promo_codes
24
+ super + Array.wrap(model.try(:promo_codes))
25
25
  end
26
26
 
27
27
  def facets
@@ -8,7 +8,12 @@ module Workarea
8
8
  url += ":#{uri.port}" unless uri.port.in? [80, 443]
9
9
  id = "direct_upload_#{url}"
10
10
 
11
- response = Workarea.s3.get_bucket_cors(Configuration::S3.bucket)
11
+ response = begin
12
+ Workarea.s3.get_bucket_cors(Configuration::S3.bucket)
13
+ rescue Excon::Error::NotFound
14
+ Excon::Response.new(body: { 'CORSConfiguration' => [] })
15
+ end
16
+
12
17
  cors = response.data[:body]
13
18
 
14
19
  unless cors['CORSConfiguration'].pluck('ID').include?(id)
@@ -97,6 +97,8 @@ en:
97
97
  under: 'Under %{price}'
98
98
  inventory_sku:
99
99
  name: "Inventory %{id}"
100
+ inquiry:
101
+ subjects: {}
100
102
  order:
101
103
  name: "Order %{id}"
102
104
  traffic_referrer:
@@ -63,6 +63,19 @@ module Workarea
63
63
  remove_file 'public/favicon.ico'
64
64
  end
65
65
 
66
+ def add_development_mailer_port
67
+ development_port = <<-CODE
68
+
69
+ config.action_mailer.default_url_options = { port: 3000 }
70
+ CODE
71
+
72
+ inject_into_file(
73
+ 'config/environments/development.rb',
74
+ development_port,
75
+ before: /^end/
76
+ )
77
+ end
78
+
66
79
  private
67
80
 
68
81
  def app_name
@@ -4,7 +4,7 @@ Workarea.configure do |config|
4
4
 
5
5
  config.host = {
6
6
  'test' => 'www.example.com',
7
- 'development' => 'localhost:3000',
7
+ 'development' => 'localhost',
8
8
  'production' => 'www.<%= app_name.dasherize %>.com' # TODO
9
9
  }[Rails.env]
10
10
 
@@ -12,7 +12,9 @@ namespace :workarea do
12
12
  require 'sidekiq/testing/inline' unless ENV['INLINE'] == 'false'
13
13
  puts 'Indexing admin...'
14
14
 
15
- Workarea::Search::Admin.reset_indexes!
15
+ Workarea::QueuesPauser.with_paused_queues do
16
+ Workarea::Search::Admin.reset_indexes!
17
+ end
16
18
 
17
19
  Mongoid.models.each do |klass|
18
20
  next unless Workarea::Search::Admin.for(klass.first).present?
@@ -32,8 +34,10 @@ namespace :workarea do
32
34
  require 'sidekiq/testing/inline' unless ENV['INLINE'] == 'false'
33
35
  puts 'Indexing storefront...'
34
36
 
35
- Workarea::Search::Storefront.reset_indexes!
36
- Workarea::Search::Storefront.ensure_dynamic_mappings
37
+ Workarea::QueuesPauser.with_paused_queues do
38
+ Workarea::Search::Storefront.reset_indexes!
39
+ Workarea::Search::Storefront.ensure_dynamic_mappings
40
+ end
37
41
 
38
42
  # This code finds all unique filters for products so we can index a sample
39
43
  # product for each to ensure the dynamic mappings get created.
@@ -79,7 +83,9 @@ namespace :workarea do
79
83
  require 'sidekiq/testing/inline' unless ENV['INLINE'] == 'false'
80
84
  puts 'Indexing help...'
81
85
 
82
- Workarea::Search::Help.reset_indexes!
86
+ Workarea::QueuesPauser.with_paused_queues do
87
+ Workarea::Search::Help.reset_indexes!
88
+ end
83
89
 
84
90
  Workarea::Help::Article.all.each_by(100) do |help_article|
85
91
  Workarea::Search::Help.new(help_article).save
@@ -1289,6 +1289,17 @@ module Workarea
1289
1289
 
1290
1290
  # The number of results that will show per-type in the admin jump to
1291
1291
  config.jump_to_results_per_type = 5
1292
+
1293
+ # Attributes that will be sliced out of params and persisted on
1294
+ # the credit card tender during checkout.
1295
+ config.credit_card_attributes = %i[
1296
+ month
1297
+ year
1298
+ saved_card_id
1299
+ number
1300
+ cvv
1301
+ amount
1302
+ ]
1292
1303
  end
1293
1304
  end
1294
1305
  end
@@ -139,6 +139,7 @@ require 'workarea/ext/mongoid/audit_log_entry.decorator'
139
139
  require 'workarea/ext/mongoid/find_ordered'
140
140
  require 'workarea/ext/sprockets/ruby_processor'
141
141
  require 'workarea/ext/jbuilder/jbuilder_append_partials'
142
+ require 'workarea/ext/jbuilder/jbuilder_cache'
142
143
 
143
144
  if Rails.env.development?
144
145
  require 'workarea/ext/freedom_patches/routes_reloader'
@@ -208,6 +209,7 @@ require 'workarea/cache'
208
209
  require 'workarea/scheduled_jobs'
209
210
  require 'workarea/string_id'
210
211
  require 'workarea/mail_interceptor'
212
+ require 'workarea/queues_pauser'
211
213
 
212
214
  #
213
215
  # Engines
@@ -0,0 +1,29 @@
1
+ decorate JbuilderTemplate, with: :workarea do
2
+ def _cache_fragment_for(*)
3
+ return yield if workarea_admin?
4
+
5
+ super
6
+ end
7
+
8
+ def _cache_key(*)
9
+ super.tap do |result|
10
+ result << workarea_cache_varies if workarea_cache_varies.present?
11
+ end
12
+ end
13
+
14
+ private
15
+
16
+ def workarea_admin?
17
+ @context&.controller&.current_user&.admin?
18
+ rescue ::RuntimeError
19
+ false
20
+ end
21
+
22
+ def workarea_cache_varies
23
+ workarea_request_env['workarea.cache_varies']
24
+ end
25
+
26
+ def workarea_request_env
27
+ @context.controller.request.env || {}
28
+ end
29
+ end
@@ -0,0 +1,26 @@
1
+ module Workarea
2
+ module QueuesPauser
3
+ extend self
4
+
5
+ def pause_queues!
6
+ pauser = Sidekiq::Throttled::QueuesPauser.instance
7
+ queues.each { |queue| pauser.pause!(queue) }
8
+ end
9
+
10
+ def resume_queues!
11
+ pauser = Sidekiq::Throttled::QueuesPauser.instance
12
+ queues.each { |queue| pauser.resume!(queue) }
13
+ end
14
+
15
+ def with_paused_queues(&block)
16
+ pause_queues!
17
+ yield
18
+ ensure
19
+ resume_queues!
20
+ end
21
+
22
+ def queues
23
+ Configuration::Sidekiq.queues
24
+ end
25
+ end
26
+ end
@@ -2,7 +2,7 @@ module Workarea
2
2
  module VERSION
3
3
  MAJOR = 3
4
4
  MINOR = 4
5
- PATCH = 33
5
+ PATCH = 38
6
6
  PRE = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, PATCH, PRE].compact.join('.')
@@ -88,5 +88,11 @@ module Workarea
88
88
  def test_favicon
89
89
  assert_no_file 'public/favicon.ico'
90
90
  end
91
+
92
+ def test_development_mailer_port
93
+ assert_file 'config/environments/development.rb' do |file|
94
+ assert_match(%(config.action_mailer.default_url_options = { port: 3000 }), file)
95
+ end
96
+ end
91
97
  end
92
98
  end
@@ -21,5 +21,15 @@ module Workarea
21
21
  assert_equal([changed_email], changed_mail.from)
22
22
  end
23
23
  end
24
+
25
+ def test_default_url_options
26
+ @current_options = Rails.application.config.action_mailer.default_url_options.deep_dup
27
+ Rails.application.config.action_mailer.default_url_options = { port: 12345 }
28
+
29
+ assert_equal(12345, ApplicationMailer.new.default_url_options[:port])
30
+
31
+ ensure
32
+ Rails.application.config.action_mailer.default_url_options = @current_options
33
+ end
24
34
  end
25
35
  end
@@ -51,6 +51,63 @@ module Workarea
51
51
  refute_equal(payment_id, checkout.payment.object_id)
52
52
  end
53
53
 
54
+ def test_update
55
+ create_shipping_service
56
+ checkout = Checkout.new(@order)
57
+
58
+ checkout.start_as(:guest)
59
+
60
+ refute(
61
+ checkout.update(
62
+ email: 'test@workarea.com',
63
+ shipping_address: {
64
+ last_name: 'Crouse',
65
+ street: '22 S. 3rd St.',
66
+ street_2: 'Second Floor',
67
+ city: 'Philadelphia',
68
+ region: 'PA',
69
+ postal_code: '19106',
70
+ country: 'US'
71
+ },
72
+ billing_address: {
73
+ first_name: 'Ben',
74
+ street: '22 S. 3rd St.',
75
+ street_2: 'Second Floor',
76
+ city: 'Philadelphia',
77
+ region: 'PA',
78
+ postal_code: '19106',
79
+ country: 'US'
80
+ }
81
+ )
82
+ )
83
+
84
+ assert(
85
+ checkout.update(
86
+ email: 'test@workarea.com',
87
+ shipping_address: {
88
+ first_name: 'Ben',
89
+ last_name: 'Crouse',
90
+ street: '22 S. 3rd St.',
91
+ street_2: 'Second Floor',
92
+ city: 'Philadelphia',
93
+ region: 'PA',
94
+ postal_code: '19106',
95
+ country: 'US'
96
+ },
97
+ billing_address: {
98
+ first_name: 'Ben',
99
+ last_name: 'Crouse',
100
+ street: '22 S. 3rd St.',
101
+ street_2: 'Second Floor',
102
+ city: 'Philadelphia',
103
+ region: 'PA',
104
+ postal_code: '19106',
105
+ country: 'US'
106
+ }
107
+ )
108
+ )
109
+ end
110
+
54
111
  def test_continue_as
55
112
  checkout = Checkout.new(@order)
56
113
  checkout.continue_as(@user)
@@ -112,6 +112,26 @@ module Workarea
112
112
  assert(DirectUpload.ensure_cors!('https://example.com/admin/direct_uploads'))
113
113
  end
114
114
 
115
+ def test_ensure_cors_with_no_existing_configuration
116
+ Workarea.s3.expects(:get_bucket_cors)
117
+ .raises(Excon::Errors::NotFound.new('CORS configuration does not exist'))
118
+
119
+
120
+ Workarea.s3.expects(:put_bucket_cors).with(
121
+ Configuration::S3.bucket,
122
+ 'CORSConfiguration' => [
123
+ {
124
+ 'ID' => "direct_upload_http://test.host",
125
+ 'AllowedMethod' => 'PUT',
126
+ 'AllowedOrigin' => 'http://test.host',
127
+ 'AllowedHeader' => '*'
128
+ }
129
+ ]
130
+ ).returns(true)
131
+
132
+ assert(DirectUpload.ensure_cors!('http://test.host/admin/content_assets'))
133
+ end
134
+
115
135
  private
116
136
 
117
137
  def upload_file
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
24
24
  s.add_dependency 'mongoid-tree', '~> 2.1.0'
25
25
  s.add_dependency 'mongoid-sample', '~> 0.1.0'
26
26
  s.add_dependency 'elasticsearch', '~> 5.0.1'
27
- s.add_dependency 'kaminari', '~> 0.17.0'
27
+ s.add_dependency 'kaminari', '~> 1.2.1'
28
28
  s.add_dependency 'kaminari-mongoid', '~> 0.1.2'
29
29
  s.add_dependency 'activemerchant', '~> 1.52'
30
30
  s.add_dependency 'dragonfly', '~> 1.1.2'
@@ -32,7 +32,7 @@ Gem::Specification.new do |s|
32
32
  s.add_dependency 'sidekiq-cron', '~> 0.6.3'
33
33
  s.add_dependency 'sidekiq-unique-jobs', '~> 6.0.6'
34
34
  s.add_dependency 'sidekiq-throttled', '~> 0.8.2'
35
- s.add_dependency 'geocoder', '~> 1.4.4'
35
+ s.add_dependency 'geocoder', '~> 1.6.3'
36
36
  s.add_dependency 'redis-rails', '~> 5.0.0'
37
37
  s.add_dependency 'redis-rack-cache', '~> 2.2.0'
38
38
  s.add_dependency 'easymon', '~> 1.4.0'
@@ -65,7 +65,7 @@ Gem::Specification.new do |s|
65
65
  s.add_dependency 'chart-horizontalbar-rails', '~> 1.0.4' # TODO remove v4
66
66
  s.add_dependency 'select2-rails', '~> 4.0.3'
67
67
  s.add_dependency 'wysihtml-rails', '~> 0.6.0.beta2'
68
- s.add_dependency 'rack-attack', '~> 5.0.1'
68
+ s.add_dependency 'rack-attack', '~> 6.3.1'
69
69
  s.add_dependency 'jquery-livetype-rails', '~> 0.1.0' # TODO remove v4
70
70
  s.add_dependency 'redcarpet', '~> 3.4.0'
71
71
  s.add_dependency 'jquery-unique-clone-rails', '~> 1.0.0'
@@ -90,9 +90,9 @@ Gem::Specification.new do |s|
90
90
  s.add_dependency 'referer-parser', '~> 0.3.0'
91
91
  s.add_dependency 'serviceworker-rails', '~> 0.5.5'
92
92
  s.add_dependency 'logstasher', '~> 1.2.2'
93
- s.add_dependency 'chartkick', '~> 3.3.0'
93
+ s.add_dependency 'chartkick', '~> 3.4.0'
94
94
  s.add_dependency 'puma', '>= 4.3.1'
95
- s.add_dependency 'rack' , '>= 2.0.8'
95
+ s.add_dependency 'rack' , '>= 2.1.4'
96
96
 
97
97
  # HACK for vendoring active_shipping
98
98
  s.add_dependency 'active_utils', '~> 3.3.1'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: workarea-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.33
4
+ version: 3.4.38
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-05-26 00:00:00.000000000 Z
11
+ date: 2020-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -156,14 +156,14 @@ dependencies:
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 0.17.0
159
+ version: 1.2.1
160
160
  type: :runtime
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 0.17.0
166
+ version: 1.2.1
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: kaminari-mongoid
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -268,14 +268,14 @@ dependencies:
268
268
  requirements:
269
269
  - - "~>"
270
270
  - !ruby/object:Gem::Version
271
- version: 1.4.4
271
+ version: 1.6.3
272
272
  type: :runtime
273
273
  prerelease: false
274
274
  version_requirements: !ruby/object:Gem::Requirement
275
275
  requirements:
276
276
  - - "~>"
277
277
  - !ruby/object:Gem::Version
278
- version: 1.4.4
278
+ version: 1.6.3
279
279
  - !ruby/object:Gem::Dependency
280
280
  name: redis-rails
281
281
  requirement: !ruby/object:Gem::Requirement
@@ -730,14 +730,14 @@ dependencies:
730
730
  requirements:
731
731
  - - "~>"
732
732
  - !ruby/object:Gem::Version
733
- version: 5.0.1
733
+ version: 6.3.1
734
734
  type: :runtime
735
735
  prerelease: false
736
736
  version_requirements: !ruby/object:Gem::Requirement
737
737
  requirements:
738
738
  - - "~>"
739
739
  - !ruby/object:Gem::Version
740
- version: 5.0.1
740
+ version: 6.3.1
741
741
  - !ruby/object:Gem::Dependency
742
742
  name: jquery-livetype-rails
743
743
  requirement: !ruby/object:Gem::Requirement
@@ -1086,14 +1086,14 @@ dependencies:
1086
1086
  requirements:
1087
1087
  - - "~>"
1088
1088
  - !ruby/object:Gem::Version
1089
- version: 3.3.0
1089
+ version: 3.4.0
1090
1090
  type: :runtime
1091
1091
  prerelease: false
1092
1092
  version_requirements: !ruby/object:Gem::Requirement
1093
1093
  requirements:
1094
1094
  - - "~>"
1095
1095
  - !ruby/object:Gem::Version
1096
- version: 3.3.0
1096
+ version: 3.4.0
1097
1097
  - !ruby/object:Gem::Dependency
1098
1098
  name: puma
1099
1099
  requirement: !ruby/object:Gem::Requirement
@@ -1114,14 +1114,14 @@ dependencies:
1114
1114
  requirements:
1115
1115
  - - ">="
1116
1116
  - !ruby/object:Gem::Version
1117
- version: 2.0.8
1117
+ version: 2.1.4
1118
1118
  type: :runtime
1119
1119
  prerelease: false
1120
1120
  version_requirements: !ruby/object:Gem::Requirement
1121
1121
  requirements:
1122
1122
  - - ">="
1123
1123
  - !ruby/object:Gem::Version
1124
- version: 2.0.8
1124
+ version: 2.1.4
1125
1125
  - !ruby/object:Gem::Dependency
1126
1126
  name: active_utils
1127
1127
  requirement: !ruby/object:Gem::Requirement
@@ -1864,6 +1864,7 @@ files:
1864
1864
  - lib/workarea/ext/freedom_patches/string.rb
1865
1865
  - lib/workarea/ext/freedom_patches/uri.rb
1866
1866
  - lib/workarea/ext/jbuilder/jbuilder_append_partials.rb
1867
+ - lib/workarea/ext/jbuilder/jbuilder_cache.rb
1867
1868
  - lib/workarea/ext/mongoid/audit_log_entry.decorator
1868
1869
  - lib/workarea/ext/mongoid/each_by.rb
1869
1870
  - lib/workarea/ext/mongoid/error.rb
@@ -1895,6 +1896,7 @@ files:
1895
1896
  - lib/workarea/ping_home_base.rb
1896
1897
  - lib/workarea/plugin.rb
1897
1898
  - lib/workarea/plugin/asset_appends_helper.rb
1899
+ - lib/workarea/queues_pauser.rb
1898
1900
  - lib/workarea/robots.rb
1899
1901
  - lib/workarea/routes_constraints/redirect.rb
1900
1902
  - lib/workarea/routes_constraints/super_admin.rb