workarea-core 3.5.16 → 3.5.17

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 569f33ae16d992354fca8761ef67ed5473a12755dda710cfff057ebd2d7aa2b4
4
- data.tar.gz: 24b32513e4215b2aa1c67a5f1d930ae5f8a81ee098be08234eab95f69a6bc574
3
+ metadata.gz: 8d24b6af137b806311dbd5d13fb13a57f8693f99d767f94fb3144994fe9c7028
4
+ data.tar.gz: dbbfb80358c11fc03b2e470ac741f615dc2d68e5f9c6c0d55b3b69567eaa4d02
5
5
  SHA512:
6
- metadata.gz: 11b65e3f2de7268ec497fecb2019a10133e2a477cc5bf06cd64390976098baa97277a75a295633a4fd6e43b221d31453c6a4da99b1c05012534e19621a6c7d18
7
- data.tar.gz: 614ed5b1d7970082ba8eb48b8448434737d194ed1fed7158537774b9e46dce862ab0cae2faafca35f40378a061e3a91c02b9ab4d36875201896ea33ff6b60991
6
+ metadata.gz: a7f587ddc4e1e9c425eaace526f562f99ec5885002f833fd33a134164d3d20a405938a1e762b3cfd221824a77f435ebb79383591ae2bd0c3b81bd407ba0ceb12
7
+ data.tar.gz: 61da7b2aa4a72d5e0b5456b401f9124769fa5f43c601d33e6e14b6a64bf820910bed36faf6992a1865e603455710b05647fa62b62488fa8fd973d33edac02564
@@ -8,7 +8,10 @@ module Workarea
8
8
  default from: -> (*) { Workarea.config.email_from }
9
9
 
10
10
  def default_url_options(options = {})
11
- super.merge(host: Workarea.config.host)
11
+ # super isn't returning the configured options, so manually merge them in
12
+ super
13
+ .merge(Rails.application.config.action_mailer.default_url_options.to_h)
14
+ .merge(host: Workarea.config.host)
12
15
  end
13
16
  end
14
17
  end
@@ -154,10 +154,14 @@ module Workarea
154
154
  # Used in auto completing an order for a logged in user.
155
155
  #
156
156
  # @param [Hash] parameters for updating
157
- # @return [self]
157
+ # @return [Boolean] whether the update was successful.
158
158
  #
159
159
  def update(params = {})
160
- steps.each { |s| s.new(self).update(params) }
160
+ return true if params.blank?
161
+
162
+ steps.reduce(true) do |result, step|
163
+ result &= step.new(self).update(params)
164
+ end
161
165
  end
162
166
 
163
167
  # Whether this checkout needs any further information
@@ -17,7 +17,15 @@ module Workarea
17
17
  assign_attributes(root, attrs)
18
18
  assign_embedded_attributes(root, attrs)
19
19
 
20
- if root.save || failed_new_record_ids.exclude?(id)
20
+ possibly_affected_models = root.embedded_children + [root]
21
+ was_successful = true
22
+
23
+ possibly_affected_models.each do |model|
24
+ meaningful_changes = model.changes.except('updated_at')
25
+ was_successful &= model.save if model.changed? && meaningful_changes.present?
26
+ end
27
+
28
+ if was_successful || failed_new_record_ids.exclude?(id)
21
29
  log(index, root)
22
30
  else
23
31
  operation.total += 1 # ensure line numbers remain consistent
@@ -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
@@ -102,6 +102,8 @@ en:
102
102
  name: "Fulfillment SKU %{id}"
103
103
  inventory_sku:
104
104
  name: "Inventory %{id}"
105
+ inquiry:
106
+ subjects: {}
105
107
  order:
106
108
  name: "Order %{id}"
107
109
  traffic_referrer:
@@ -55,6 +55,19 @@ module Workarea
55
55
  remove_file 'public/favicon.ico'
56
56
  end
57
57
 
58
+ def add_development_mailer_port
59
+ development_port = <<-CODE
60
+
61
+ config.action_mailer.default_url_options = { port: 3000 }
62
+ CODE
63
+
64
+ inject_into_file(
65
+ 'config/environments/development.rb',
66
+ development_port,
67
+ before: /^end/
68
+ )
69
+ end
70
+
58
71
  private
59
72
 
60
73
  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
 
@@ -2,7 +2,7 @@ module Workarea
2
2
  module VERSION
3
3
  MAJOR = 3
4
4
  MINOR = 5
5
- PATCH = 16
5
+ PATCH = 17
6
6
  PRE = nil
7
7
  STRING = [MAJOR, MINOR, PATCH, PRE].compact.join('.')
8
8
 
@@ -81,5 +81,11 @@ module Workarea
81
81
  def test_favicon
82
82
  assert_no_file 'public/favicon.ico'
83
83
  end
84
+
85
+ def test_development_mailer_port
86
+ assert_file 'config/environments/development.rb' do |file|
87
+ assert_match(%(config.action_mailer.default_url_options = { port: 3000 }), file)
88
+ end
89
+ end
84
90
  end
85
91
  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)
@@ -132,6 +132,46 @@ module Workarea
132
132
  refute(import.error?)
133
133
  assert(import.successful?)
134
134
  end
135
+
136
+ def test_csv_embedded_changes_for_release
137
+ release = create_release
138
+ product = create_product(
139
+ name: 'Foo',
140
+ variants: [{ sku: '1', name: 'Bar' }, { sku: '2', name: 'Baz' }]
141
+ )
142
+ product.name = 'Foo Changed'
143
+ product.variants.first.name = 'Bar Changed'
144
+
145
+ import = create_import(
146
+ model_type: product.class.name,
147
+ file: create_tempfile(Csv.new.serialize(product), extension: 'csv'),
148
+ file_type: 'csv',
149
+ release_id: release.id
150
+ )
151
+
152
+ assert_equal('csv', import.file_type)
153
+ assert_nothing_raised { import.process! }
154
+
155
+ product.reload
156
+ assert_equal('Foo', product.name)
157
+ assert_equal('Bar', product.variants.first.name)
158
+ assert_equal('Baz', product.variants.second.name)
159
+
160
+ Release.with_current(release) do
161
+ product.reload
162
+ assert_equal('Foo Changed', product.name)
163
+ assert_equal('Bar Changed', product.variants.first.name)
164
+ assert_equal('Baz', product.variants.second.name)
165
+ end
166
+
167
+ import.reload
168
+ assert_equal(2, import.total)
169
+ assert_equal(2, import.succeeded)
170
+ assert_equal(0, import.failed)
171
+ assert(import.complete?)
172
+ refute(import.error?)
173
+ assert(import.successful?)
174
+ end
135
175
  end
136
176
  end
137
177
  end
@@ -91,7 +91,7 @@ Gem::Specification.new do |s|
91
91
  s.add_dependency 'loofah', '~> 2.3.1'
92
92
  s.add_dependency 'referer-parser', '~> 0.3.0'
93
93
  s.add_dependency 'serviceworker-rails', '~> 0.5.5'
94
- s.add_dependency 'chartkick', '~> 3.3.0'
94
+ s.add_dependency 'chartkick', '~> 3.4.0'
95
95
  s.add_dependency 'browser', '~> 2.6.1'
96
96
  s.add_dependency 'puma', '>= 4.3.1'
97
97
  s.add_dependency 'rack' , '>= 2.1.4'
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.5.16
4
+ version: 3.5.17
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-07-22 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
@@ -1100,14 +1100,14 @@ dependencies:
1100
1100
  requirements:
1101
1101
  - - "~>"
1102
1102
  - !ruby/object:Gem::Version
1103
- version: 3.3.0
1103
+ version: 3.4.0
1104
1104
  type: :runtime
1105
1105
  prerelease: false
1106
1106
  version_requirements: !ruby/object:Gem::Requirement
1107
1107
  requirements:
1108
1108
  - - "~>"
1109
1109
  - !ruby/object:Gem::Version
1110
- version: 3.3.0
1110
+ version: 3.4.0
1111
1111
  - !ruby/object:Gem::Dependency
1112
1112
  name: browser
1113
1113
  requirement: !ruby/object:Gem::Requirement