workarea-core 3.5.0.beta.1 → 3.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/workarea/current_tracking.rb +4 -0
  3. data/app/models/workarea/checkout/collect_payment.rb +5 -5
  4. data/app/models/workarea/data_file/operation.rb +4 -0
  5. data/app/models/workarea/fulfillment/policies/base.rb +0 -4
  6. data/app/models/workarea/fulfillment/policies/{ignore.rb → shipping.rb} +2 -2
  7. data/app/models/workarea/fulfillment/sku.rb +0 -2
  8. data/app/models/workarea/insights/trending_searches.rb +8 -1
  9. data/app/models/workarea/metrics/search_by_day.rb +2 -0
  10. data/app/models/workarea/order.rb +12 -2
  11. data/app/models/workarea/order/item.rb +28 -2
  12. data/app/models/workarea/pricing/calculators/tax_calculator.rb +2 -2
  13. data/app/models/workarea/pricing/discount.rb +3 -2
  14. data/app/models/workarea/releasable.rb +3 -5
  15. data/app/models/workarea/reports/custom_event.rb +22 -0
  16. data/app/models/workarea/search/admin/releasable.rb +18 -6
  17. data/app/models/workarea/segment/life_cycle.rb +5 -5
  18. data/app/models/workarea/segment/rules/last_order.rb +9 -2
  19. data/app/models/workarea/segment/rules/traffic_referrer.rb +16 -5
  20. data/app/models/workarea/segmentable.rb +13 -0
  21. data/app/models/workarea/traffic_referrer.rb +3 -0
  22. data/app/queries/workarea/alerts.rb +21 -0
  23. data/app/queries/workarea/order_item_details.rb +16 -16
  24. data/app/queries/workarea/search/admin_index_search.rb +2 -1
  25. data/app/queries/workarea/search/product_display_rules.rb +0 -2
  26. data/app/services/workarea/direct_upload.rb +5 -0
  27. data/app/services/workarea/packaging.rb +1 -1
  28. data/app/workers/workarea/deactivate_stale_discounts.rb +1 -1
  29. data/app/workers/workarea/synchronize_user_metrics.rb +9 -0
  30. data/config/locales/en.yml +22 -0
  31. data/lib/tasks/migrate.rake +9 -12
  32. data/lib/workarea/configuration.rb +6 -6
  33. data/lib/workarea/configuration/redis.rb +21 -3
  34. data/lib/workarea/core.rb +3 -0
  35. data/lib/workarea/ext/freedom_patches/referer_parser.rb +7 -0
  36. data/lib/workarea/ext/mongoid/embedded_children.rb +20 -0
  37. data/lib/workarea/latest_version.rb +24 -0
  38. data/lib/workarea/ping_home_base.rb +0 -1
  39. data/lib/workarea/version.rb +1 -1
  40. data/lib/workarea/visit.rb +5 -2
  41. data/lib/workarea/warnings.rb +6 -6
  42. data/test/lib/workarea/ext/mongoid/embedded_children_test.rb +32 -0
  43. data/test/lib/workarea/latest_version_test.rb +11 -0
  44. data/test/models/workarea/checkout/collect_payment_test.rb +6 -6
  45. data/test/models/workarea/data_file/csv_test.rb +15 -0
  46. data/test/models/workarea/fulfillment/sku_test.rb +5 -5
  47. data/test/models/workarea/insights/cold_searches_test.rb +13 -11
  48. data/test/models/workarea/insights/hot_searches_test.rb +13 -11
  49. data/test/models/workarea/insights/searches_to_improve_test.rb +9 -6
  50. data/test/models/workarea/insights/star_searches_test.rb +5 -4
  51. data/test/models/workarea/insights/trending_searches_test.rb +12 -9
  52. data/test/models/workarea/pricing/calculators/tax_calculator_test.rb +1 -1
  53. data/test/models/workarea/search/admin/releasable_test.rb +5 -7
  54. data/test/models/workarea/segment/life_cycle_test.rb +5 -0
  55. data/test/models/workarea/segment/rules/last_order_test.rb +15 -3
  56. data/test/models/workarea/segment/rules/traffic_referrer_test.rb +10 -8
  57. data/test/models/workarea/segmentable_test.rb +18 -0
  58. data/test/queries/workarea/alerts_test.rb +11 -0
  59. data/test/queries/workarea/order_item_details_test.rb +4 -12
  60. data/test/services/workarea/direct_upload_test.rb +3 -0
  61. data/test/vcr_cassettes/get_latest_version.yml +90 -0
  62. data/test/workers/workarea/deactivate_stale_discounts_test.rb +2 -2
  63. data/workarea-core.gemspec +2 -3
  64. metadata +16 -25
  65. data/app/controllers/workarea/current_referrer.rb +0 -14
  66. data/app/models/workarea/fulfillment/policies/ship.rb +0 -15
@@ -128,7 +128,7 @@ module Workarea
128
128
  order = Order.new(
129
129
  items: [
130
130
  {
131
- requires_shipping: false,
131
+ fulfillment: 'download',
132
132
  price_adjustments: [
133
133
  {
134
134
  price: 'item',
@@ -9,23 +9,21 @@ module Workarea
9
9
  end
10
10
 
11
11
  def test_facets
12
- releasable = create_page(name: 'Foo')
12
+ releasable = create_page(name: 'Foo', active_segment_ids: %w(foo bar))
13
+ content = Workarea::Content.for(releasable)
14
+ content.blocks.create!(type: 'html', active_segment_ids: %w(bar baz))
13
15
 
14
16
  release_one = create_release
15
17
  release_two = create_release
16
18
  release_three = create_release
17
19
 
18
20
  release_one.as_current { releasable.update_attributes!(name: 'Bar') }
19
-
20
- release_two.as_current do
21
- content = Workarea::Content.for(releasable)
22
- content.update_attributes!(browser_title: 'Foo')
23
- end
24
-
21
+ release_two.as_current { content.update_attributes!(browser_title: 'Foo') }
25
22
  release_three.as_current { releasable.update_attributes!(name: 'Bar') }
26
23
  release_three.update_attributes!(published_at: Time.current)
27
24
 
28
25
  search_model = Foo.new(releasable)
26
+ assert_equal(search_model.facets[:active_by_segment], %w(foo bar baz))
29
27
  assert_includes(search_model.facets[:upcoming_changes], release_one.id)
30
28
  assert_includes(search_model.facets[:upcoming_changes], release_two.id)
31
29
  refute_includes(search_model.facets[:upcoming_changes], release_three.id)
@@ -8,6 +8,11 @@ module Workarea
8
8
  self.default_rules = [Rules::Orders.new(maximum: 0)]
9
9
  end
10
10
 
11
+ def test_name_given
12
+ life_cycle = FooSegment.instance # create it
13
+ assert_equal('Foo Segment', life_cycle.name)
14
+ end
15
+
11
16
  def test_cannot_destroy
12
17
  life_cycle = FooSegment.instance # create it
13
18
 
@@ -16,15 +16,27 @@ module Workarea
16
16
 
17
17
  metrics.update_attributes!(last_order_at: 8.days.ago)
18
18
  visit = create_visit(email: 'bcrouse@workarea.com')
19
- refute(LastOrder.new(days: 7).qualifies?(visit))
19
+ refute(LastOrder.new(days: 7, within: true).qualifies?(visit))
20
+
21
+ metrics.update_attributes!(last_order_at: 7.days.ago)
22
+ visit = create_visit(email: 'bcrouse@workarea.com')
23
+ assert(LastOrder.new(days: 7, within: true).qualifies?(visit))
24
+
25
+ metrics.update_attributes!(last_order_at: 6.days.ago)
26
+ visit = create_visit(email: 'bcrouse@workarea.com')
27
+ assert(LastOrder.new(days: 7, within: true).qualifies?(visit))
28
+
29
+ metrics.update_attributes!(last_order_at: 8.days.ago)
30
+ visit = create_visit(email: 'bcrouse@workarea.com')
31
+ assert(LastOrder.new(days: 7, within: false).qualifies?(visit))
20
32
 
21
33
  metrics.update_attributes!(last_order_at: 7.days.ago)
22
34
  visit = create_visit(email: 'bcrouse@workarea.com')
23
- assert(LastOrder.new(days: 7).qualifies?(visit))
35
+ refute(LastOrder.new(days: 7, within: false).qualifies?(visit))
24
36
 
25
37
  metrics.update_attributes!(last_order_at: 6.days.ago)
26
38
  visit = create_visit(email: 'bcrouse@workarea.com')
27
- assert(LastOrder.new(days: 7).qualifies?(visit))
39
+ refute(LastOrder.new(days: 7, within: false).qualifies?(visit))
28
40
  end
29
41
  end
30
42
  end
@@ -12,18 +12,20 @@ module Workarea
12
12
  refute(TrafficReferrer.new.qualifies?(visit))
13
13
 
14
14
  visit = create_visit('HTTP_REFERER' => 'https://www.google.com/')
15
- assert(TrafficReferrer.new(source: 'google').qualifies?(visit))
16
- assert(TrafficReferrer.new(source: ' Google').qualifies?(visit))
15
+ assert(TrafficReferrer.new(source: %w(Google)).qualifies?(visit))
16
+ refute(TrafficReferrer.new(source: %w(Yahoo!)).qualifies?(visit))
17
17
  assert(TrafficReferrer.new(medium: 'Search').qualifies?(visit))
18
- refute(TrafficReferrer.new(source: 'Facebook ').qualifies?(visit))
19
- refute(TrafficReferrer.new(source: 'social').qualifies?(visit))
18
+ refute(TrafficReferrer.new(medium: 'Social').qualifies?(visit))
19
+ assert(TrafficReferrer.new(url: 'google').qualifies?(visit))
20
+ refute(TrafficReferrer.new(url: 'twitter').qualifies?(visit))
20
21
 
21
22
  visit = create_visit('HTTP_REFERER' => 'https://www.facebook.com/')
22
- refute(TrafficReferrer.new(source: ' Google').qualifies?(visit))
23
- refute(TrafficReferrer.new(medium: 'search').qualifies?(visit))
24
- assert(TrafficReferrer.new(source: 'facebook ').qualifies?(visit))
23
+ assert(TrafficReferrer.new(source: %w(Facebook)).qualifies?(visit))
24
+ refute(TrafficReferrer.new(source: %w(Google)).qualifies?(visit))
25
25
  assert(TrafficReferrer.new(medium: 'Social').qualifies?(visit))
26
- assert(TrafficReferrer.new(medium: 'Social', source: 'facebook|twitter').qualifies?(visit))
26
+ refute(TrafficReferrer.new(medium: 'Search').qualifies?(visit))
27
+ assert(TrafficReferrer.new(url: 'www').qualifies?(visit))
28
+ refute(TrafficReferrer.new(url: 'facebook$').qualifies?(visit))
27
29
  end
28
30
  end
29
31
  end
@@ -6,6 +6,13 @@ module Workarea
6
6
  include Mongoid::Document
7
7
  include Releasable
8
8
  include Segmentable
9
+ embeds_many :bars
10
+ end
11
+
12
+ class Bar
13
+ include Mongoid::Document
14
+ include Releasable
15
+ include Segmentable
9
16
  end
10
17
 
11
18
  def test_active_by_segment
@@ -70,5 +77,16 @@ module Workarea
70
77
  Segment.with_current(segment_one) { assert(model.reload.active?) }
71
78
  Segment.with_current(segment_two) { refute(model.reload.active?) }
72
79
  end
80
+
81
+ def test_active_segment_ids_with_children
82
+ model = Foo.new
83
+ assert_equal([], model.active_segment_ids_with_children)
84
+
85
+ model.active_segment_ids = %w(foo)
86
+ assert_equal(%w(foo), model.active_segment_ids_with_children)
87
+
88
+ model.bars = [{ active_segment_ids: %w(bar) }, { active_segment_ids: %w(baz) }]
89
+ assert_equal(%w(foo bar baz), model.active_segment_ids_with_children)
90
+ end
73
91
  end
74
92
  end
@@ -127,5 +127,16 @@ module Workarea
127
127
 
128
128
  assert_equal([empty], Alerts.new.empty_upcoming_releases)
129
129
  end
130
+
131
+ def test_missing_segments
132
+ segment = create_segment
133
+ product = create_product(active: true, active_segment_ids: [segment.id])
134
+ IndexAdminSearch.perform(product)
135
+
136
+ assert_equal([], Alerts.new.missing_segments)
137
+
138
+ segment.destroy!
139
+ assert_equal([segment.id.to_s], Alerts.new.missing_segments)
140
+ end
130
141
  end
131
142
  end
@@ -12,20 +12,12 @@ module Workarea
12
12
  assert_nil(OrderItemDetails.find('SKU1'))
13
13
  end
14
14
 
15
- def test_requires_shipping?
15
+ def test_fulfillment
16
16
  product = create_product(variants: [{ sku: 'SKU', regular: 5.00 }])
17
+ assert_equal('shipping', OrderItemDetails.find('SKU').to_h[:fulfillment])
17
18
 
18
- assert(OrderItemDetails.find('SKU').requires_shipping?)
19
-
20
- product.update(digital: true)
21
- refute(OrderItemDetails.find('SKU').requires_shipping?)
22
-
23
- product.update(digital: false)
24
- sku = create_fulfillment_sku(id: 'SKU', policy: :ignore)
25
- refute(OrderItemDetails.find('SKU').requires_shipping?)
26
-
27
- sku.update(policy: :download, file: product_image_file)
28
- refute(OrderItemDetails.find('SKU').requires_shipping?)
19
+ sku = create_fulfillment_sku(id: 'SKU', policy: 'download', file: product_image_file)
20
+ assert_equal('download', OrderItemDetails.find('SKU').to_h[:fulfillment])
29
21
  end
30
22
 
31
23
  def test_to_h
@@ -83,8 +83,11 @@ module Workarea
83
83
 
84
84
 
85
85
  assert(DirectUpload.ensure_cors!('http://test.host/admin/content_assets'))
86
+ assert_equal('true', Workarea.redis.get('cors_http_test_host'))
86
87
  assert(DirectUpload.ensure_cors!('http://localhost:3000/admin/content_assets'))
88
+ assert_equal('true', Workarea.redis.get('cors_http_localhost_3000'))
87
89
  assert(DirectUpload.ensure_cors!('https://example.com/admin/direct_uploads'))
90
+ assert_equal('true', Workarea.redis.get('cors_https_example_com'))
88
91
  end
89
92
 
90
93
  private
@@ -0,0 +1,90 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://rubygems.org/api/v1/gems/workarea.json
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ Content-Type:
17
+ - application/json
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Content-Type:
24
+ - application/json; charset=utf-8
25
+ X-Frame-Options:
26
+ - SAMEORIGIN
27
+ X-Xss-Protection:
28
+ - 1; mode=block
29
+ X-Content-Type-Options:
30
+ - nosniff
31
+ X-Download-Options:
32
+ - noopen
33
+ X-Permitted-Cross-Domain-Policies:
34
+ - none
35
+ Referrer-Policy:
36
+ - strict-origin-when-cross-origin
37
+ Access-Control-Allow-Origin:
38
+ - "*"
39
+ Access-Control-Allow-Methods:
40
+ - GET
41
+ Access-Control-Max-Age:
42
+ - '1728000'
43
+ Cache-Control:
44
+ - max-age=0, private, must-revalidate
45
+ X-Request-Id:
46
+ - d6394d50-39fa-47e9-8bf2-95934b5a81f2
47
+ X-Runtime:
48
+ - '0.016960'
49
+ Strict-Transport-Security:
50
+ - max-age=120
51
+ X-Backend:
52
+ - F_Rails 54.186.104.15:443
53
+ Accept-Ranges:
54
+ - bytes
55
+ - bytes
56
+ Age:
57
+ - '0'
58
+ - '0'
59
+ Transfer-Encoding:
60
+ - chunked
61
+ Date:
62
+ - Wed, 20 Nov 2019 17:06:57 GMT
63
+ Via:
64
+ - 1.1 varnish
65
+ Connection:
66
+ - keep-alive
67
+ X-Served-By:
68
+ - cache-mia17625-MIA
69
+ X-Cache:
70
+ - MISS
71
+ X-Cache-Hits:
72
+ - '0'
73
+ X-Timer:
74
+ - S1574269618.874178,VS0,VE106
75
+ Vary:
76
+ - Accept-Encoding,Fastly-SSL
77
+ Etag:
78
+ - '"867cab3200a545c2c4f8be4b5ae4398a"'
79
+ Server:
80
+ - RubyGems.org
81
+ body:
82
+ encoding: ASCII-8BIT
83
+ string: '{"name":"workarea","downloads":6177,"version":"3.4.21","version_downloads":240,"platform":"ruby","authors":"Ben
84
+ Crouse","info":"Workarea is an enterprise-grade Ruby on Rails commerce platform.","licenses":["Business
85
+ Software License"],"metadata":{},"yanked":false,"sha":"ec79083b5dde751f4bca7a384ef132afbded16660344d4343144b0b3f4d3b57d","project_uri":"https://rubygems.org/gems/workarea","gem_uri":"https://rubygems.org/gems/workarea-3.4.21.gem","homepage_uri":"http://www.workarea.com","wiki_uri":null,"documentation_uri":"http://www.rubydoc.info/gems/workarea/3.4.21","mailing_list_uri":null,"source_code_uri":null,"bug_tracker_uri":null,"changelog_uri":null,"dependencies":{"development":[],"runtime":[{"name":"workarea-admin","requirements":"=
86
+ 3.4.21"},{"name":"workarea-core","requirements":"= 3.4.21"},{"name":"workarea-storefront","requirements":"=
87
+ 3.4.21"},{"name":"workarea-testing","requirements":"= 3.4.21"}]}}'
88
+ http_version:
89
+ recorded_at: Wed, 20 Nov 2019 17:06:57 GMT
90
+ recorded_with: VCR 2.9.3
@@ -4,7 +4,7 @@ module Workarea
4
4
  class DeactivateStaleDiscountsTest < TestCase
5
5
  def create_category_discount(attributes = {})
6
6
  before_ttl = (Workarea.config.discount_staleness_ttl + 1.day).ago
7
- super(attributes.reverse_merge(created_at: before_ttl))
7
+ super(attributes.reverse_merge(updated_at: before_ttl))
8
8
  end
9
9
 
10
10
  def test_perform
@@ -71,7 +71,7 @@ module Workarea
71
71
  end
72
72
 
73
73
  def test_all_active_discount_ids
74
- too_new = create_category_discount(active: true, created_at: Time.current)
74
+ too_new = create_category_discount(active: true, updated_at: Time.current)
75
75
  active = create_category_discount(active: true)
76
76
 
77
77
  worker = DeactivateStaleDiscounts.new
@@ -17,7 +17,6 @@ Gem::Specification.new do |s|
17
17
  s.add_dependency 'bundler', '>= 1.8.0' # 1.8.0 added env variable for secrets
18
18
  s.add_dependency 'rails', '~> 5.2.0'
19
19
  s.add_dependency 'mongoid', '~> 6.4.0'
20
- s.add_dependency 'bson', '~> 4.3.0'
21
20
  s.add_dependency 'bcrypt', '~> 3.1.10'
22
21
  s.add_dependency 'money-rails', '~> 1.12.0'
23
22
  s.add_dependency 'mongoid-audit_log', '>= 0.5.0'
@@ -35,7 +34,7 @@ Gem::Specification.new do |s|
35
34
  s.add_dependency 'sidekiq-unique-jobs', '~> 6.0.6'
36
35
  s.add_dependency 'sidekiq-throttled', '~> 0.8.2'
37
36
  s.add_dependency 'geocoder', '~> 1.4.4'
38
- s.add_dependency 'redis-rack-cache', '~> 2.0.2'
37
+ s.add_dependency 'redis-rack-cache', '~> 2.2.0'
39
38
  s.add_dependency 'easymon', '~> 1.4.0'
40
39
  s.add_dependency 'image_optim', '~> 0.26.0'
41
40
  s.add_dependency 'image_optim_pack', '0.5.0.20171101'
@@ -92,7 +91,7 @@ Gem::Specification.new do |s|
92
91
  s.add_dependency 'referer-parser', '~> 0.3.0'
93
92
  s.add_dependency 'serviceworker-rails', '~> 0.5.5'
94
93
  s.add_dependency 'logstasher', '~> 1.2.2'
95
- s.add_dependency 'chartkick', '~> 3.2.0'
94
+ s.add_dependency 'chartkick', '~> 3.3.0'
96
95
  s.add_dependency 'puma', '~> 4.0'
97
96
  s.add_dependency 'browser', '~> 2.6.1'
98
97
 
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.0.beta.1
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Crouse
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-07 00:00:00.000000000 Z
11
+ date: 2019-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 6.4.0
55
- - !ruby/object:Gem::Dependency
56
- name: bson
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 4.3.0
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 4.3.0
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: bcrypt
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -310,14 +296,14 @@ dependencies:
310
296
  requirements:
311
297
  - - "~>"
312
298
  - !ruby/object:Gem::Version
313
- version: 2.0.2
299
+ version: 2.2.0
314
300
  type: :runtime
315
301
  prerelease: false
316
302
  version_requirements: !ruby/object:Gem::Requirement
317
303
  requirements:
318
304
  - - "~>"
319
305
  - !ruby/object:Gem::Version
320
- version: 2.0.2
306
+ version: 2.2.0
321
307
  - !ruby/object:Gem::Dependency
322
308
  name: easymon
323
309
  requirement: !ruby/object:Gem::Requirement
@@ -1114,14 +1100,14 @@ dependencies:
1114
1100
  requirements:
1115
1101
  - - "~>"
1116
1102
  - !ruby/object:Gem::Version
1117
- version: 3.2.0
1103
+ version: 3.3.0
1118
1104
  type: :runtime
1119
1105
  prerelease: false
1120
1106
  version_requirements: !ruby/object:Gem::Requirement
1121
1107
  requirements:
1122
1108
  - - "~>"
1123
1109
  - !ruby/object:Gem::Version
1124
- version: 3.2.0
1110
+ version: 3.3.0
1125
1111
  - !ruby/object:Gem::Dependency
1126
1112
  name: puma
1127
1113
  requirement: !ruby/object:Gem::Requirement
@@ -1222,7 +1208,6 @@ files:
1222
1208
  - app/controllers/workarea/application_controller.rb
1223
1209
  - app/controllers/workarea/authentication.rb
1224
1210
  - app/controllers/workarea/authorization.rb
1225
- - app/controllers/workarea/current_referrer.rb
1226
1211
  - app/controllers/workarea/current_release.rb
1227
1212
  - app/controllers/workarea/current_segments.rb
1228
1213
  - app/controllers/workarea/current_tracking.rb
@@ -1329,8 +1314,7 @@ files:
1329
1314
  - app/models/workarea/fulfillment/package.rb
1330
1315
  - app/models/workarea/fulfillment/policies/base.rb
1331
1316
  - app/models/workarea/fulfillment/policies/download.rb
1332
- - app/models/workarea/fulfillment/policies/ignore.rb
1333
- - app/models/workarea/fulfillment/policies/ship.rb
1317
+ - app/models/workarea/fulfillment/policies/shipping.rb
1334
1318
  - app/models/workarea/fulfillment/sku.rb
1335
1319
  - app/models/workarea/fulfillment/status.rb
1336
1320
  - app/models/workarea/fulfillment/token.rb
@@ -1516,6 +1500,7 @@ files:
1516
1500
  - app/models/workarea/release/preview.rb
1517
1501
  - app/models/workarea/release/status.rb
1518
1502
  - app/models/workarea/release_session.rb
1503
+ - app/models/workarea/reports/custom_event.rb
1519
1504
  - app/models/workarea/reports/export.rb
1520
1505
  - app/models/workarea/search/admin.rb
1521
1506
  - app/models/workarea/search/admin/catalog_category.rb
@@ -1939,12 +1924,14 @@ files:
1939
1924
  - lib/workarea/ext/freedom_patches/mongoid_simple_tags.rb
1940
1925
  - lib/workarea/ext/freedom_patches/net_http_ssl_connection.rb
1941
1926
  - lib/workarea/ext/freedom_patches/premailer.rb
1927
+ - lib/workarea/ext/freedom_patches/referer_parser.rb
1942
1928
  - lib/workarea/ext/freedom_patches/routes_reloader.rb
1943
1929
  - lib/workarea/ext/freedom_patches/string.rb
1944
1930
  - lib/workarea/ext/freedom_patches/uri.rb
1945
1931
  - lib/workarea/ext/jbuilder/jbuilder_append_partials.rb
1946
1932
  - lib/workarea/ext/mongoid/audit_log_entry.decorator
1947
1933
  - lib/workarea/ext/mongoid/each_by.rb
1934
+ - lib/workarea/ext/mongoid/embedded_children.rb
1948
1935
  - lib/workarea/ext/mongoid/error.rb
1949
1936
  - lib/workarea/ext/mongoid/except.rb
1950
1937
  - lib/workarea/ext/mongoid/find_ordered.rb
@@ -1957,6 +1944,7 @@ files:
1957
1944
  - lib/workarea/geolocation.rb
1958
1945
  - lib/workarea/i18n.rb
1959
1946
  - lib/workarea/image_optim_processor.rb
1947
+ - lib/workarea/latest_version.rb
1960
1948
  - lib/workarea/lint.rb
1961
1949
  - lib/workarea/lint/inconsistent_details.rb
1962
1950
  - lib/workarea/lint/products_missing_images.rb
@@ -2095,11 +2083,13 @@ files:
2095
2083
  - test/lib/workarea/ext/freedom_patches/mongoid_simple_tags_test.rb
2096
2084
  - test/lib/workarea/ext/mongoid/audit_log_entry_test.rb
2097
2085
  - test/lib/workarea/ext/mongoid/each_by_test.rb
2086
+ - test/lib/workarea/ext/mongoid/embedded_children_test.rb
2098
2087
  - test/lib/workarea/ext/mongoid/except_test.rb
2099
2088
  - test/lib/workarea/ext/mongoid/find_ordered_test.rb
2100
2089
  - test/lib/workarea/ext/mongoid/list_field_test.rb
2101
2090
  - test/lib/workarea/ext/mongoid/lookup_hash_test.rb
2102
2091
  - test/lib/workarea/geolocation_test.rb
2092
+ - test/lib/workarea/latest_version_test.rb
2103
2093
  - test/lib/workarea/lint/inconsistent_details_test.rb
2104
2094
  - test/lib/workarea/lint/products_missing_images_test.rb
2105
2095
  - test/lib/workarea/lint/products_missing_variants_test.rb
@@ -2443,6 +2433,7 @@ files:
2443
2433
  - test/teaspoon_env.rb
2444
2434
  - test/test_helper.rb
2445
2435
  - test/vcr_cassettes/csv_image_upload.yml
2436
+ - test/vcr_cassettes/get_latest_version.yml
2446
2437
  - test/view_models/workarea/shipping_carrier_view_model_test.rb
2447
2438
  - test/workarea_test.rb
2448
2439
  - test/workers/sidekiq/callbacks_test.rb
@@ -2722,9 +2713,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
2722
2713
  version: 2.7.0
2723
2714
  required_rubygems_version: !ruby/object:Gem::Requirement
2724
2715
  requirements:
2725
- - - ">"
2716
+ - - ">="
2726
2717
  - !ruby/object:Gem::Version
2727
- version: 1.3.1
2718
+ version: '0'
2728
2719
  requirements: []
2729
2720
  rubygems_version: 3.0.6
2730
2721
  signing_key: