workarea-core 3.4.40 → 3.4.45
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 +4 -4
- data/app/controllers/workarea/current_referrer.rb +1 -0
- data/app/models/workarea/metrics/user.rb +25 -0
- data/app/models/workarea/release/changeset.rb +4 -1
- data/app/models/workarea/search/admin.rb +1 -1
- data/app/workers/workarea/update_email.rb +33 -0
- data/lib/workarea/changelog.rake +1 -1
- data/lib/workarea/core.rb +1 -0
- data/lib/workarea/ext/referer_parser/parser.decorator +43 -0
- data/lib/workarea/version.rb +1 -1
- data/test/lib/workarea/ext/referer_parser/parser_test.rb +20 -0
- data/test/models/workarea/metrics/user_test.rb +51 -0
- data/test/workers/workarea/update_email_test.rb +39 -0
- data/workarea-core.gemspec +2 -2
- metadata +23 -15
- data/app/workers/workarea/update_payment_profile_email.rb +0 -22
- data/test/workers/workarea/update_payment_profile_email_test.rb +0 -27
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fa0ecabb9a16f7c58840b3d50dc6486c2f064c3d613c744607997105f26102fc
|
|
4
|
+
data.tar.gz: 4ec03996dd8e2bced8818056b06e3128c3b8fa6b079907e2b018e0504641e75b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bee72675acacaffba697db529d9d9a0897603d9327e0d29044825f71c8f114617d056714ab8e83d40b03844d912d065e629a6de2227c4afcea486a1433b99b48
|
|
7
|
+
data.tar.gz: 49ad054e62f63e717f553ad1f75d28f6cb54d9a8e911989513eb4b2d63d7013e5d46e8762040696a20937f8082a570b394b729755f77a73c2d6584f12871ea0b
|
|
@@ -123,6 +123,31 @@ module Workarea
|
|
|
123
123
|
return nil if orders.zero?
|
|
124
124
|
revenue / orders.to_f
|
|
125
125
|
end
|
|
126
|
+
|
|
127
|
+
def merge!(other)
|
|
128
|
+
# To recalculate average_order_value
|
|
129
|
+
self.orders += other.orders
|
|
130
|
+
self.revenue += other.revenue
|
|
131
|
+
|
|
132
|
+
update = {
|
|
133
|
+
'$set' => {
|
|
134
|
+
average_order_value: average_order_value,
|
|
135
|
+
updated_at: Time.current.utc
|
|
136
|
+
},
|
|
137
|
+
'$inc' => {
|
|
138
|
+
orders: other.orders,
|
|
139
|
+
revenue: other.revenue,
|
|
140
|
+
discounts: other.discounts
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
update['$min'] = { first_order_at: other.first_order_at.utc } if other.first_order_at.present?
|
|
145
|
+
update['$max'] = { last_order_at: other.last_order_at.utc } if other.last_order_at.present?
|
|
146
|
+
|
|
147
|
+
self.class.collection.update_one({ _id: id }, update, upsert: true)
|
|
148
|
+
other.delete
|
|
149
|
+
reload
|
|
150
|
+
end
|
|
126
151
|
end
|
|
127
152
|
end
|
|
128
153
|
end
|
|
@@ -11,7 +11,10 @@ module Workarea
|
|
|
11
11
|
belongs_to :release, class_name: 'Workarea::Release', index: true
|
|
12
12
|
belongs_to :releasable, polymorphic: true, index: true, optional: true
|
|
13
13
|
|
|
14
|
-
index(
|
|
14
|
+
index(
|
|
15
|
+
{ 'document_path.type' => 1, 'document_path.document_id' => 1 },
|
|
16
|
+
{ name: 'document_path' }
|
|
17
|
+
)
|
|
15
18
|
|
|
16
19
|
# Whether these value changes to this field should be included when
|
|
17
20
|
# saving a changeset. Used in building changeset hashes.
|
|
@@ -38,7 +38,7 @@ module Workarea
|
|
|
38
38
|
aggregation = search(query)['aggregations']['grouped_by_type']['type']
|
|
39
39
|
aggregation['buckets']
|
|
40
40
|
.reduce([]) { |m, b| m + b['top']['hits']['hits'] }
|
|
41
|
-
.sort_by { |r| [r['_source']['jump_to_position'], r['_score']] }
|
|
41
|
+
.sort_by { |r| [r['_source']['jump_to_position'] || 999, r['_score'] || 0] }
|
|
42
42
|
.map do |result|
|
|
43
43
|
{
|
|
44
44
|
label: result['_source']['jump_to_text'],
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Workarea
|
|
2
|
+
class UpdateEmail
|
|
3
|
+
include Sidekiq::Worker
|
|
4
|
+
include Sidekiq::CallbacksWorker
|
|
5
|
+
|
|
6
|
+
sidekiq_options(
|
|
7
|
+
enqueue_on: { User => :update, with: -> { [id, changes] } }
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
def perform(id, changes)
|
|
11
|
+
return unless changes['email'].present? && changes['email'].first.present?
|
|
12
|
+
|
|
13
|
+
old_email, new_email = changes['email']
|
|
14
|
+
update_payment_profile(id, old_email, new_email)
|
|
15
|
+
update_metrics(old_email, new_email)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def update_payment_profile(id, old_email, new_email)
|
|
19
|
+
user = User.find(id)
|
|
20
|
+
user.email = old_email # set old email so we lookup by old email value
|
|
21
|
+
|
|
22
|
+
Payment::Profile.update_email(PaymentReference.new(user), new_email)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def update_metrics(old_email, new_email)
|
|
26
|
+
old_metrics = Metrics::User.find(old_email) rescue nil
|
|
27
|
+
return if old_metrics.blank?
|
|
28
|
+
|
|
29
|
+
new_metrics = Metrics::User.find_or_initialize_by(id: new_email)
|
|
30
|
+
new_metrics.merge!(old_metrics)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
data/lib/workarea/changelog.rake
CHANGED
data/lib/workarea/core.rb
CHANGED
|
@@ -140,6 +140,7 @@ require 'workarea/ext/mongoid/find_ordered'
|
|
|
140
140
|
require 'workarea/ext/sprockets/ruby_processor'
|
|
141
141
|
require 'workarea/ext/jbuilder/jbuilder_append_partials'
|
|
142
142
|
require 'workarea/ext/jbuilder/jbuilder_cache'
|
|
143
|
+
require 'workarea/ext/referer_parser/parser.decorator'
|
|
143
144
|
|
|
144
145
|
if Rails.env.development?
|
|
145
146
|
require 'workarea/ext/freedom_patches/routes_reloader'
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
module RefererParser
|
|
2
|
+
# This code is actually in `master` branch of
|
|
3
|
+
# https://github.com/snowplow-referer-parser/ruby-referer-parser but
|
|
4
|
+
# has not yet been released. It's used to allow through android-app://
|
|
5
|
+
# URLs.
|
|
6
|
+
decorate Parser do
|
|
7
|
+
# Given a string or URI, return a hash of data
|
|
8
|
+
def parse(obj)
|
|
9
|
+
url = obj.is_a?(URI) ? obj : URI.parse(obj.to_s)
|
|
10
|
+
|
|
11
|
+
unless ['android-app', 'http', 'https'].include?(url.scheme)
|
|
12
|
+
raise InvalidUriError, "Only Android-App, HTTP, and HTTPS schemes are supported -- #{url.scheme}"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
data = { known: false, uri: url.to_s }
|
|
16
|
+
|
|
17
|
+
domain, name_key = domain_and_name_key_for(url)
|
|
18
|
+
if domain && name_key
|
|
19
|
+
referer_data = @name_hash[name_key]
|
|
20
|
+
data[:known] = true
|
|
21
|
+
data[:source] = referer_data[:source]
|
|
22
|
+
data[:medium] = referer_data[:medium]
|
|
23
|
+
data[:domain] = domain
|
|
24
|
+
|
|
25
|
+
# Parse parameters if the referer uses them
|
|
26
|
+
if url.query && referer_data[:parameters]
|
|
27
|
+
query_params = CGI.parse(url.query)
|
|
28
|
+
referer_data[:parameters].each do |param|
|
|
29
|
+
# If there is a matching parameter, get the first non-blank value
|
|
30
|
+
unless (values = query_params[param]).empty?
|
|
31
|
+
data[:term] = values.reject { |v| v.strip == '' }.first
|
|
32
|
+
break if data[:term]
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
data
|
|
39
|
+
rescue URI::InvalidURIError
|
|
40
|
+
raise InvalidUriError.new("Unable to parse URI, not a URI? -- #{obj.inspect}", $ERROR_INFO)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
data/lib/workarea/version.rb
CHANGED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module RefererParser
|
|
4
|
+
class ParserTest < Workarea::TestCase
|
|
5
|
+
def test_parse_android_app_referrers
|
|
6
|
+
referrers = [
|
|
7
|
+
'android-app://com.linkedin.android',
|
|
8
|
+
'android-app://org.telegram.plus',
|
|
9
|
+
'android-app://com.twitter.android'
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
referrers.each do |uri|
|
|
13
|
+
referrer = Parser.new.parse(uri)
|
|
14
|
+
|
|
15
|
+
refute(referrer[:known])
|
|
16
|
+
assert_equal(uri, referrer[:uri])
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -74,6 +74,57 @@ module Workarea
|
|
|
74
74
|
assert_equal(50, two.revenue_percentile)
|
|
75
75
|
assert_equal(50, two.average_order_value_percentile)
|
|
76
76
|
end
|
|
77
|
+
|
|
78
|
+
def test_merging_metrics
|
|
79
|
+
freeze_time
|
|
80
|
+
|
|
81
|
+
first = User.create!(
|
|
82
|
+
first_order_at: 2.weeks.ago,
|
|
83
|
+
last_order_at: 1.day.ago,
|
|
84
|
+
orders: 2,
|
|
85
|
+
revenue: 100,
|
|
86
|
+
discounts: -10,
|
|
87
|
+
average_order_value: 50,
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
first.merge!(User.new)
|
|
91
|
+
first.reload
|
|
92
|
+
assert_equal(1, Metrics::User.count)
|
|
93
|
+
assert_equal(2.weeks.ago, first.first_order_at)
|
|
94
|
+
assert_equal(1.day.ago, first.last_order_at)
|
|
95
|
+
assert_equal(2, first.orders)
|
|
96
|
+
assert_equal(100, first.revenue)
|
|
97
|
+
assert_equal(-10, first.discounts)
|
|
98
|
+
assert_equal(50, first.average_order_value)
|
|
99
|
+
|
|
100
|
+
second = User.create!(id: 'foo').tap { |u| u.merge!(first) }
|
|
101
|
+
second.reload
|
|
102
|
+
assert_equal(1, Metrics::User.count)
|
|
103
|
+
assert_equal(2.weeks.ago, second.first_order_at)
|
|
104
|
+
assert_equal(1.day.ago, second.last_order_at)
|
|
105
|
+
assert_equal(2, second.orders)
|
|
106
|
+
assert_equal(100, second.revenue)
|
|
107
|
+
assert_equal(-10, second.discounts)
|
|
108
|
+
assert_equal(50, second.average_order_value)
|
|
109
|
+
|
|
110
|
+
third = User.create!(
|
|
111
|
+
first_order_at: 3.weeks.ago,
|
|
112
|
+
last_order_at: 3.weeks.ago,
|
|
113
|
+
orders: 2,
|
|
114
|
+
revenue: 120,
|
|
115
|
+
average_order_value: 60,
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
third.merge!(second)
|
|
119
|
+
third.reload
|
|
120
|
+
assert_equal(1, Metrics::User.count)
|
|
121
|
+
assert_equal(3.weeks.ago, third.first_order_at)
|
|
122
|
+
assert_equal(1.day.ago, third.last_order_at)
|
|
123
|
+
assert_equal(4, third.orders)
|
|
124
|
+
assert_equal(220, third.revenue)
|
|
125
|
+
assert_equal(-10, third.discounts)
|
|
126
|
+
assert_equal(55, third.average_order_value)
|
|
127
|
+
end
|
|
77
128
|
end
|
|
78
129
|
end
|
|
79
130
|
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module Workarea
|
|
4
|
+
class UpdateEmailTest < TestCase
|
|
5
|
+
def test_updating_payment_profile
|
|
6
|
+
user = create_user(email: 'user@workarea.com')
|
|
7
|
+
profile = Payment::Profile.lookup(PaymentReference.new(user))
|
|
8
|
+
|
|
9
|
+
UpdateEmail.new.perform(user.id.to_s, 'email' => [nil, 'user@workarea.com'])
|
|
10
|
+
assert_equal(profile.reload.email, 'user@workarea.com')
|
|
11
|
+
|
|
12
|
+
UpdateEmail.new.perform(
|
|
13
|
+
user.id.to_s,
|
|
14
|
+
'email' => ['user@workarea.com', 'test@workarea.com']
|
|
15
|
+
)
|
|
16
|
+
assert_equal(profile.reload.email, 'test@workarea.com')
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_updating_metrics
|
|
20
|
+
user = create_user(email: 'user@workarea.com')
|
|
21
|
+
old_metrics = Metrics::User.find_or_initialize_by(id: 'user@workarea.com')
|
|
22
|
+
old_metrics.update!(orders: 3)
|
|
23
|
+
|
|
24
|
+
UpdateEmail.new.perform(user.id.to_s, 'email' => [nil, 'user@workarea.com'])
|
|
25
|
+
assert_equal(1, Metrics::User.count)
|
|
26
|
+
assert_equal(3, old_metrics.reload.orders)
|
|
27
|
+
|
|
28
|
+
new_metrics = Metrics::User.create!(id: 'test@workarea.com', orders: 1)
|
|
29
|
+
|
|
30
|
+
UpdateEmail.new.perform(
|
|
31
|
+
user.id.to_s,
|
|
32
|
+
'email' => ['user@workarea.com', 'test@workarea.com']
|
|
33
|
+
)
|
|
34
|
+
assert_equal(1, Metrics::User.count)
|
|
35
|
+
assert_raises(Mongoid::Errors::DocumentNotFound) { old_metrics.reload }
|
|
36
|
+
assert_equal(4, new_metrics.reload.orders)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
data/workarea-core.gemspec
CHANGED
|
@@ -58,7 +58,7 @@ Gem::Specification.new do |s|
|
|
|
58
58
|
s.add_dependency 'i18n-js', '~> 3.2.1'
|
|
59
59
|
s.add_dependency 'local_time', '~> 1.0.3'
|
|
60
60
|
s.add_dependency 'lodash-rails', '~> 4.17.4'
|
|
61
|
-
s.add_dependency 'jquery-rails', '~> 4.
|
|
61
|
+
s.add_dependency 'jquery-rails', '~> 4.4.0'
|
|
62
62
|
s.add_dependency 'jquery-ui-rails', '~> 6.0.1'
|
|
63
63
|
s.add_dependency 'tooltipster-rails', '~> 4.1.2'
|
|
64
64
|
s.add_dependency 'chart-js-rails', '~> 0.0.9' # TODO remove v4
|
|
@@ -67,7 +67,7 @@ Gem::Specification.new do |s|
|
|
|
67
67
|
s.add_dependency 'wysihtml-rails', '~> 0.6.0.beta2'
|
|
68
68
|
s.add_dependency 'rack-attack', '~> 6.3.1'
|
|
69
69
|
s.add_dependency 'jquery-livetype-rails', '~> 0.1.0' # TODO remove v4
|
|
70
|
-
s.add_dependency 'redcarpet', '~> 3.
|
|
70
|
+
s.add_dependency 'redcarpet', '~> 3.5.1', '>= 3.5.1'
|
|
71
71
|
s.add_dependency 'jquery-unique-clone-rails', '~> 1.0.0'
|
|
72
72
|
s.add_dependency 'avalanche-rails', '~> 1.2.0'
|
|
73
73
|
s.add_dependency 'inline_svg', '~> 1.3.0'
|
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.
|
|
4
|
+
version: 3.4.45
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ben Crouse
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-01-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -632,14 +632,14 @@ dependencies:
|
|
|
632
632
|
requirements:
|
|
633
633
|
- - "~>"
|
|
634
634
|
- !ruby/object:Gem::Version
|
|
635
|
-
version: 4.
|
|
635
|
+
version: 4.4.0
|
|
636
636
|
type: :runtime
|
|
637
637
|
prerelease: false
|
|
638
638
|
version_requirements: !ruby/object:Gem::Requirement
|
|
639
639
|
requirements:
|
|
640
640
|
- - "~>"
|
|
641
641
|
- !ruby/object:Gem::Version
|
|
642
|
-
version: 4.
|
|
642
|
+
version: 4.4.0
|
|
643
643
|
- !ruby/object:Gem::Dependency
|
|
644
644
|
name: jquery-ui-rails
|
|
645
645
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -758,14 +758,20 @@ dependencies:
|
|
|
758
758
|
requirements:
|
|
759
759
|
- - "~>"
|
|
760
760
|
- !ruby/object:Gem::Version
|
|
761
|
-
version: 3.
|
|
761
|
+
version: 3.5.1
|
|
762
|
+
- - ">="
|
|
763
|
+
- !ruby/object:Gem::Version
|
|
764
|
+
version: 3.5.1
|
|
762
765
|
type: :runtime
|
|
763
766
|
prerelease: false
|
|
764
767
|
version_requirements: !ruby/object:Gem::Requirement
|
|
765
768
|
requirements:
|
|
766
769
|
- - "~>"
|
|
767
770
|
- !ruby/object:Gem::Version
|
|
768
|
-
version: 3.
|
|
771
|
+
version: 3.5.1
|
|
772
|
+
- - ">="
|
|
773
|
+
- !ruby/object:Gem::Version
|
|
774
|
+
version: 3.5.1
|
|
769
775
|
- !ruby/object:Gem::Dependency
|
|
770
776
|
name: jquery-unique-clone-rails
|
|
771
777
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -882,22 +888,22 @@ dependencies:
|
|
|
882
888
|
name: minitest
|
|
883
889
|
requirement: !ruby/object:Gem::Requirement
|
|
884
890
|
requirements:
|
|
885
|
-
- - ">="
|
|
886
|
-
- !ruby/object:Gem::Version
|
|
887
|
-
version: 5.10.1
|
|
888
891
|
- - "~>"
|
|
889
892
|
- !ruby/object:Gem::Version
|
|
890
893
|
version: 5.10.3
|
|
894
|
+
- - ">="
|
|
895
|
+
- !ruby/object:Gem::Version
|
|
896
|
+
version: 5.10.1
|
|
891
897
|
type: :runtime
|
|
892
898
|
prerelease: false
|
|
893
899
|
version_requirements: !ruby/object:Gem::Requirement
|
|
894
900
|
requirements:
|
|
895
|
-
- - ">="
|
|
896
|
-
- !ruby/object:Gem::Version
|
|
897
|
-
version: 5.10.1
|
|
898
901
|
- - "~>"
|
|
899
902
|
- !ruby/object:Gem::Version
|
|
900
903
|
version: 5.10.3
|
|
904
|
+
- - ">="
|
|
905
|
+
- !ruby/object:Gem::Version
|
|
906
|
+
version: 5.10.1
|
|
901
907
|
- !ruby/object:Gem::Dependency
|
|
902
908
|
name: countries
|
|
903
909
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -1711,7 +1717,7 @@ files:
|
|
|
1711
1717
|
- app/workers/workarea/status_reporter.rb
|
|
1712
1718
|
- app/workers/workarea/undo_release.rb
|
|
1713
1719
|
- app/workers/workarea/update_elasticsearch_settings.rb
|
|
1714
|
-
- app/workers/workarea/
|
|
1720
|
+
- app/workers/workarea/update_email.rb
|
|
1715
1721
|
- app/workers/workarea/verify_scheduled_releases.rb
|
|
1716
1722
|
- bin/rails
|
|
1717
1723
|
- config/i18n-js.yml
|
|
@@ -1873,6 +1879,7 @@ files:
|
|
|
1873
1879
|
- lib/workarea/ext/mongoid/list_field.rb
|
|
1874
1880
|
- lib/workarea/ext/mongoid/moped_bson.rb
|
|
1875
1881
|
- lib/workarea/ext/mongoid/timestamps_timeless.rb
|
|
1882
|
+
- lib/workarea/ext/referer_parser/parser.decorator
|
|
1876
1883
|
- lib/workarea/ext/sprockets/ruby_processor.rb
|
|
1877
1884
|
- lib/workarea/ext/sprockets/task.rb
|
|
1878
1885
|
- lib/workarea/geolocation.rb
|
|
@@ -2017,6 +2024,7 @@ files:
|
|
|
2017
2024
|
- test/lib/workarea/ext/mongoid/except_test.rb
|
|
2018
2025
|
- test/lib/workarea/ext/mongoid/find_ordered_test.rb
|
|
2019
2026
|
- test/lib/workarea/ext/mongoid/list_field_test.rb
|
|
2027
|
+
- test/lib/workarea/ext/referer_parser/parser_test.rb
|
|
2020
2028
|
- test/lib/workarea/geolocation_test.rb
|
|
2021
2029
|
- test/lib/workarea/lint/inconsistent_details_test.rb
|
|
2022
2030
|
- test/lib/workarea/lint/products_missing_images_test.rb
|
|
@@ -2366,7 +2374,7 @@ files:
|
|
|
2366
2374
|
- test/workers/workarea/send_refund_email_test.rb
|
|
2367
2375
|
- test/workers/workarea/status_reporter_test.rb
|
|
2368
2376
|
- test/workers/workarea/undo_release_test.rb
|
|
2369
|
-
- test/workers/workarea/
|
|
2377
|
+
- test/workers/workarea/update_email_test.rb
|
|
2370
2378
|
- test/workers/workarea/verify_scheduled_releases_test.rb
|
|
2371
2379
|
- vendor/active_shipping/.gitignore
|
|
2372
2380
|
- vendor/active_shipping/.travis.yml
|
|
@@ -2614,7 +2622,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
2614
2622
|
- !ruby/object:Gem::Version
|
|
2615
2623
|
version: '0'
|
|
2616
2624
|
requirements: []
|
|
2617
|
-
rubygems_version: 3.
|
|
2625
|
+
rubygems_version: 3.2.3
|
|
2618
2626
|
signing_key:
|
|
2619
2627
|
specification_version: 4
|
|
2620
2628
|
summary: Core of the Workarea Commerce Platform
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
module Workarea
|
|
2
|
-
class UpdatePaymentProfileEmail
|
|
3
|
-
include Sidekiq::Worker
|
|
4
|
-
include Sidekiq::CallbacksWorker
|
|
5
|
-
|
|
6
|
-
sidekiq_options(
|
|
7
|
-
enqueue_on: { User => :update, with: -> { [id, changes] } }
|
|
8
|
-
)
|
|
9
|
-
|
|
10
|
-
def perform(id, changes)
|
|
11
|
-
if changes['email'].present? && changes['email'].first.present?
|
|
12
|
-
old_email = changes['email'].first
|
|
13
|
-
new_email = changes['email'].last
|
|
14
|
-
|
|
15
|
-
user = User.find(id)
|
|
16
|
-
user.email = old_email # set old email so we lookup by old email value
|
|
17
|
-
|
|
18
|
-
Payment::Profile.update_email(PaymentReference.new(user), new_email)
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
module Workarea
|
|
4
|
-
class UpdatePaymentProfileEmailTest < Workarea::TestCase
|
|
5
|
-
setup do
|
|
6
|
-
@user = create_user(email: 'user@workarea.com')
|
|
7
|
-
@profile = Payment::Profile.lookup(PaymentReference.new(@user))
|
|
8
|
-
@worker = UpdatePaymentProfileEmail.new
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def test_updating_payment_profile_email_address
|
|
12
|
-
@worker.perform(
|
|
13
|
-
@user.id.to_s,
|
|
14
|
-
'email' => ['user@workarea.com', 'test@workarea.com']
|
|
15
|
-
)
|
|
16
|
-
|
|
17
|
-
@profile.reload
|
|
18
|
-
assert_equal(@profile.email, 'test@workarea.com')
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def test_skipping_update_if_email_change_is_nil
|
|
22
|
-
@worker.perform(@user.id.to_s, 'email' => [nil, 'user@workarea.com'])
|
|
23
|
-
@profile.reload
|
|
24
|
-
assert_equal(@profile.email, 'user@workarea.com')
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|