workarea-core 3.5.22 → 3.5.27

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: 48dfcf76f720a117fd8f3a16cdbef856816837692dc53f731b38729c5d37b9ef
4
- data.tar.gz: a1ffa660f618f5d1b428ce4db9c6d768f0a12c3490ea45f02d699fa4b5ff441f
3
+ metadata.gz: 32ecae47fa5ca7ba205b50342ca4e7bc8cbe85981eff0ffe1f40bb60499f7665
4
+ data.tar.gz: c4b7d437765e253511e50774d8fdfc005b5e2bad6d8831e1b3e1a25c2ac4c346
5
5
  SHA512:
6
- metadata.gz: 509b598d21369c93345837d160e2a95d271c4c0d06276192f050a2997badec0b1542a012be9c1ed10d7bb176816372825abc08370d8fb67b3cd961a96ecb6246
7
- data.tar.gz: 0cf582e5e981a1524f7b1cb2229f542c2d99f8b152802386aa68a42a09de7c84602ee8c07659011ecc3a1bec1ca6ddcfdb85c2e7aa8ecdcf6333c42808b81027
6
+ metadata.gz: f2e1c494c51dc1cb87d6051ab653ae8a998c32a44a9d469a0e289fe4eb5b9f7132afc29bf4b97ecb8e349047466e71e45a6ef8210457cfd9f0fe5b37f807d5b9
7
+ data.tar.gz: 223ac060a3bbbf35fedc8c44170835b677c6d9b2a70697cc210f37de84a9c319529784df6a030e03238cdbe4beb527e233401c477f6a6f0371831f267b605d1f
@@ -27,7 +27,9 @@ module Workarea
27
27
  end
28
28
 
29
29
  def array(field, value)
30
- Array.wrap(CSV.parse(value).first).map(&:strip)
30
+ Array.wrap(CSV.parse(value).first)
31
+ .map(&:strip)
32
+ .map { |v| field.values_type_class.mongoize(v) }
31
33
  end
32
34
 
33
35
  def hash(field, value)
@@ -13,7 +13,7 @@ module Workarea
13
13
  field :undo_job_id, type: String # TODO deprecated, remove in v3.6
14
14
 
15
15
  has_many :changesets, class_name: 'Workarea::Release::Changeset'
16
- has_one :undo, class_name: 'Workarea::Release', inverse_of: :undoes
16
+ has_many :undos, class_name: 'Workarea::Release', inverse_of: :undoes
17
17
  belongs_to :undoes, class_name: 'Workarea::Release', inverse_of: :undo, optional: true
18
18
 
19
19
  index({ publish_at: 1 })
@@ -180,11 +180,10 @@ module Workarea
180
180
  end
181
181
 
182
182
  def build_undo(attributes = {})
183
- result = undo || Release.new(attributes)
183
+ result = undos.build(attributes)
184
184
 
185
185
  result.name ||= I18n.t('workarea.release.undo', name: name)
186
186
  result.tags = %w(undo) if result.tags.blank?
187
- self.undo = result
188
187
 
189
188
  result
190
189
  end
@@ -15,10 +15,36 @@ module Workarea
15
15
  belongs_to :release, class_name: 'Workarea::Release', index: true
16
16
  belongs_to :releasable, polymorphic: true, index: true, optional: true
17
17
 
18
- index({ 'document_path.type' => 1, 'document_path.document_id' => 1 })
18
+ index(
19
+ { 'document_path.type' => 1, 'document_path.document_id' => 1 },
20
+ { name: 'document_path' }
21
+ )
19
22
  index('changeset.product_ids' => 1)
20
23
  index('original.product_ids' => 1)
21
24
  index('releasable_type' => 1, 'releasable_id' => 1)
25
+ index(updated_at: 1)
26
+
27
+ def self.latest(limit = Workarea.config.per_page)
28
+ order(updated_at: :desc).limit(limit)
29
+ end
30
+
31
+ def self.summary(release_id)
32
+ collection.aggregate([
33
+ { '$match' => { 'release_id' => release_id } },
34
+ {
35
+ '$addFields' => {
36
+ 'root' => { '$arrayElemAt' => ['$document_path', 0] }
37
+ }
38
+ },
39
+ {
40
+ '$group' => {
41
+ '_id' => '$root.type',
42
+ 'count' => { '$sum' => 1 }
43
+ }
44
+ },
45
+ { '$sort' => { '_id' => 1 } }
46
+ ]).to_a
47
+ end
22
48
 
23
49
  # Finds changeset by whether the passed document is in the document
24
50
  # path of the changeset. Useful for showing embedded changes in the
@@ -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'],
@@ -51,10 +51,14 @@ module Workarea
51
51
  end
52
52
 
53
53
  def self.for(model)
54
+ find_for_model(model)
55
+ rescue NameError
56
+ find_for_model(model._root) rescue nil
57
+ end
58
+
59
+ def self.find_for_model(model)
54
60
  subclass = model.model_name.singular_route_key.camelize
55
61
  "Workarea::Search::Admin::#{subclass}".constantize.new(model)
56
- rescue NameError
57
- nil
58
62
  end
59
63
 
60
64
  # Allows subclass instances to specify whether they should be included in
@@ -24,7 +24,9 @@ module Workarea
24
24
  end
25
25
 
26
26
  def model_changesets
27
- model.changesets.any_in(release_id: upcoming_release_ids)
27
+ Workarea::Release::Changeset
28
+ .by_document_path(model)
29
+ .any_in(release_id: upcoming_release_ids)
28
30
  end
29
31
 
30
32
  def content_changesets
@@ -0,0 +1,25 @@
1
+ module Workarea
2
+ module Search
3
+ class Admin
4
+ class SearchCustomization < Search::Admin
5
+ include Admin::Releasable
6
+
7
+ def type
8
+ 'search_customization'
9
+ end
10
+
11
+ def search_text
12
+ model.name
13
+ end
14
+
15
+ def jump_to_text
16
+ "#{model.id} - #{model.name}"
17
+ end
18
+
19
+ def jump_to_position
20
+ 99
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,23 @@
1
+ module Workarea
2
+ class BuildReleaseUndoChangesets
3
+ include Sidekiq::Worker
4
+
5
+ def perform(undo_release_id, release_id)
6
+ release = Release.find(release_id)
7
+ undo_release = Release.find(undo_release_id)
8
+
9
+ existing_changesets = undo_release.changesets.to_a
10
+ matching_changeset = ->(changeset, existing_changesets) do
11
+ existing_changesets.any? do |cs|
12
+ changeset.releasable_type == cs.releasable_type &&
13
+ changeset.releasable_id == cs.releasable_id
14
+ end
15
+ end
16
+
17
+ release.changesets.each_by(500) do |changeset|
18
+ next if matching_changeset.call(changeset, existing_changesets)
19
+ changeset.build_undo(release: undo_release).save!
20
+ end
21
+ end
22
+ end
23
+ end
@@ -9,7 +9,7 @@ module Workarea
9
9
  query_cache: true,
10
10
  enqueue_on: {
11
11
  ApplicationDocument => [:save, :touch, :destroy],
12
- with: -> { [self.class.name, id] },
12
+ with: -> { IndexAdminSearch.job_arguments(self) },
13
13
  ignore_if: -> { !IndexAdminSearch.should_enqueue?(self) }
14
14
  }
15
15
  )
@@ -19,6 +19,11 @@ module Workarea
19
19
  search_model.present? && search_model.should_be_indexed?
20
20
  end
21
21
 
22
+ def self.job_arguments(model)
23
+ search_model = Search::Admin.for(model)
24
+ [search_model.model.class.name, search_model.model.id]
25
+ end
26
+
22
27
  def self.perform(model)
23
28
  search_model = Search::Admin.for(model)
24
29
  return false if search_model.blank?
@@ -60,6 +60,7 @@ Workarea::Configuration.define_fields do
60
60
  field 'Shipping Dimensions',
61
61
  type: :array,
62
62
  default: [1, 1, 1],
63
+ values_type: :integer,
63
64
  description: %(
64
65
  Default package dimensions to use for calculating shipping costs.
65
66
  It's recommended to set these to your average or standard box size when
@@ -32,7 +32,7 @@ module Workarea
32
32
  end
33
33
 
34
34
  def values_type_class
35
- return unless type == :hash
35
+ return unless type.in?(%i(hash array))
36
36
 
37
37
  values_type = options.values_type || :string
38
38
  Workarea.config.configurable_field_types[values_type]&.constantize
@@ -14,7 +14,7 @@ module Workarea
14
14
  return if Workarea.config.localized_active_fields
15
15
 
16
16
  ::Mongoid.models.each do |klass|
17
- if klass < Releasable
17
+ if klass < Releasable && klass.localized_fields['active'].present?
18
18
  klass.localized_fields.delete('active')
19
19
  klass.field(:active, type: Boolean, default: true, localize: false)
20
20
  klass.index(active: 1)
@@ -4,7 +4,7 @@ module Workarea
4
4
  extend self
5
5
 
6
6
  def assert_docker_compose_installed!
7
- unless system('docker-compose -v > /dev/null 2>&1')
7
+ unless system('docker-compose --version > /dev/null 2>&1')
8
8
  STDERR.puts <<~eos
9
9
  **************************************************
10
10
  ⛔️ ERROR: workarea:services tasks depend on Docker Compose being installed. \
@@ -2,7 +2,7 @@ module Workarea
2
2
  module VERSION
3
3
  MAJOR = 3
4
4
  MINOR = 5
5
- PATCH = 22
5
+ PATCH = 27
6
6
  PRE = nil
7
7
  STRING = [MAJOR, MINOR, PATCH, PRE].compact.join('.')
8
8
 
@@ -68,6 +68,14 @@ module Workarea
68
68
  )
69
69
 
70
70
  assert_equal(Integer, field.values_type_class)
71
+
72
+ field = Field.new(
73
+ 'Bar',
74
+ type: :array,
75
+ values_type: :integer
76
+ )
77
+
78
+ assert_equal(Integer, field.values_type_class)
71
79
  end
72
80
 
73
81
  def test_overridden?
@@ -11,6 +11,7 @@ module Workarea
11
11
  field 'baz', type: :string, allow_blank: true
12
12
 
13
13
  field 'foo_hash', type: :hash, values_type: :integer
14
+ field 'foo_array', type: :array, values_type: :integer
14
15
  field 'bar_array', type: :array
15
16
  field 'baz_duration', type: :duration
16
17
  end
@@ -20,6 +21,7 @@ module Workarea
20
21
  bar: nil,
21
22
  baz: '',
22
23
  foo_hash: ['one', '1', 'two', '', '', ''],
24
+ foo_array: '1,2,3',
23
25
  bar_array: 'one, two, three',
24
26
  baz_duration: %w(20 minutes)
25
27
  }
@@ -29,6 +31,7 @@ module Workarea
29
31
  assert_equal('test', result[:bar])
30
32
  assert_equal('', result[:baz])
31
33
  assert_equal({ 'one' => 1 }, result[:foo_hash])
34
+ assert_equal([1, 2, 3], result[:foo_array])
32
35
  assert_equal(%w(one two three), result[:bar_array])
33
36
  assert_equal(20.minutes, result[:baz_duration])
34
37
  end
@@ -35,6 +35,14 @@ module Workarea
35
35
  @release = create_release
36
36
  end
37
37
 
38
+ def active?(changeset)
39
+ if Workarea.config.localized_active_fields
40
+ changeset['active'][I18n.locale.to_s]
41
+ else
42
+ changeset['active']
43
+ end
44
+ end
45
+
38
46
  def test_save_can_schedule_activation
39
47
  model = Foo.create!(
40
48
  name: 'Test',
@@ -48,9 +56,9 @@ module Workarea
48
56
  assert_equal(1, model.changesets.length)
49
57
  assert_equal(@release.id, model.changesets.first.release_id)
50
58
  assert_equal(1, model.changesets.first.changeset.size)
51
- assert(model.changesets.first.changeset['active'][I18n.locale.to_s])
59
+ assert(active?(model.changesets.first.changeset))
52
60
  assert_equal(1, model.changesets.first.original.size)
53
- refute(model.changesets.first.original['active'][I18n.locale.to_s])
61
+ refute(active?(model.changesets.first.original))
54
62
  end
55
63
 
56
64
  def test_save_can_schedule_activation_for_an_embedded_document
@@ -74,17 +82,17 @@ module Workarea
74
82
  assert_equal(1, embedded_1.changesets.length)
75
83
  assert_equal(@release.id, embedded_1.changesets.first.release_id)
76
84
  assert_equal(1, embedded_1.changesets.first.changeset.size)
77
- assert(embedded_1.changesets.first.changeset['active'][I18n.locale.to_s])
85
+ assert(active?(embedded_1.changesets.first.changeset))
78
86
  assert_equal(1, embedded_1.changesets.first.original.size)
79
- refute(embedded_1.changesets.first.original['active'][I18n.locale.to_s])
87
+ refute(active?(embedded_1.changesets.first.original))
80
88
 
81
89
  refute(embedded_2.active)
82
90
  assert_equal(1, embedded_2.changesets.length)
83
91
  assert_equal(@release.id, embedded_2.changesets.first.release_id)
84
92
  assert_equal(1, embedded_2.changesets.first.changeset.size)
85
- assert(embedded_2.changesets.first.changeset['active'][I18n.locale.to_s])
93
+ assert(active?(embedded_2.changesets.first.changeset))
86
94
  assert_equal(1, embedded_2.changesets.first.original.size)
87
- refute(embedded_2.changesets.first.original['active'][I18n.locale.to_s])
95
+ refute(active?(embedded_2.changesets.first.original))
88
96
  end
89
97
 
90
98
  def test_creating_and_activating_embedded
@@ -104,9 +112,9 @@ module Workarea
104
112
  assert_equal(1, embedded.changesets.length)
105
113
  assert_equal(@release.id, embedded.changesets.first.release_id)
106
114
  assert_equal(1, embedded.changesets.first.changeset.size)
107
- assert(embedded.changesets.first.changeset['active'][I18n.locale.to_s])
115
+ assert(active?(embedded.changesets.first.changeset))
108
116
  assert_equal(1, embedded.changesets.first.original.size)
109
- refute(embedded.changesets.first.original['active'][I18n.locale.to_s])
117
+ refute(active?(embedded.changesets.first.original))
110
118
  assert(embedded.changesets.first.document_path.present?)
111
119
  end
112
120
  end
@@ -3,6 +3,23 @@ require 'test_helper'
3
3
  module Workarea
4
4
  class Release
5
5
  class ChangesetTest < TestCase
6
+ def test_summary
7
+ release = create_release
8
+ product_one = create_product(id: 'PROD1')
9
+ product_two = create_product(id: 'PROD2')
10
+ page = create_page
11
+
12
+ release.as_current do
13
+ product_one.variants.first.update!(details: { 'Color' => 'Orange' })
14
+ product_two.update!(name: 'Test Product Changed')
15
+ page.update!(name: 'Test Page Changed')
16
+ end
17
+
18
+ summary = Changeset.summary(release.id)
19
+ assert_includes(summary, { '_id' => 'Workarea::Catalog::Product', 'count' => 2 })
20
+ assert_includes(summary, { '_id' => 'Workarea::Content::Page', 'count' => 1 })
21
+ end
22
+
6
23
  def test_build_undo
7
24
  releasable = create_page(name: 'Foo')
8
25
  release = create_release
@@ -28,6 +28,20 @@ module Workarea
28
28
  assert_includes(search_model.facets[:upcoming_changes], release_two.id)
29
29
  refute_includes(search_model.facets[:upcoming_changes], release_three.id)
30
30
  end
31
+
32
+ def test_upcoming_changes
33
+ release_one = create_release
34
+ release_two = create_release
35
+
36
+ product = create_product
37
+
38
+ release_one.as_current { product.update!(name: 'Changed Name') }
39
+ release_two.as_current { product.variants.first.update!(name: 'Changed Name') }
40
+
41
+ search_model = Foo.new(product)
42
+ assert_includes(search_model.facets[:upcoming_changes], release_one.id)
43
+ assert_includes(search_model.facets[:upcoming_changes], release_two.id)
44
+ end
31
45
  end
32
46
  end
33
47
  end
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ class BuildReleaseUndoChangesetsTest < TestCase
5
+ def test_perform
6
+ releasable_one = create_page(name: 'Foo')
7
+ releasable_two = create_page(name: 'Bar')
8
+ release = create_release
9
+
10
+ release.as_current do
11
+ releasable_one.update!(name: 'Changed Foo')
12
+ releasable_two.update!(name: 'Changed Bar')
13
+ end
14
+
15
+ undo_release = release.build_undo.tap(&:save!)
16
+ release.changesets.first.build_undo(release: undo_release).save!
17
+
18
+ BuildReleaseUndoChangesets.new.perform(undo_release.id, release.id)
19
+
20
+ undo_release.reload
21
+ assert_equal(2, undo_release.changesets.count)
22
+ assert_includes(undo_release.changesets.map(&:releasable), releasable_one)
23
+ assert_includes(undo_release.changesets.map(&:releasable), releasable_two)
24
+ end
25
+ end
26
+ end
@@ -6,5 +6,26 @@ module Workarea
6
6
  refute(IndexAdminSearch.should_enqueue?(create_order))
7
7
  assert(IndexAdminSearch.should_enqueue?(create_placed_order))
8
8
  end
9
+
10
+ def test_enqueuing_embedded_documents
11
+ content = create_content
12
+
13
+ Sidekiq::Testing.fake!
14
+ IndexAdminSearch.drain
15
+ Sidekiq::Callbacks.async(IndexAdminSearch)
16
+ Sidekiq::Callbacks.enable(IndexAdminSearch)
17
+
18
+ assert_difference 'IndexAdminSearch.jobs.size', 1 do
19
+ content.blocks.create!(type: :html)
20
+ end
21
+
22
+ args = IndexAdminSearch.jobs.first['args']
23
+ assert_equal(Content.name, args.first)
24
+ assert_equal(content.id.to_s, args.second)
25
+
26
+ ensure
27
+ IndexAdminSearch.drain
28
+ Sidekiq::Testing.inline!
29
+ end
9
30
  end
10
31
  end
@@ -59,7 +59,7 @@ Gem::Specification.new do |s|
59
59
  s.add_dependency 'i18n-js', '~> 3.2.1'
60
60
  s.add_dependency 'local_time', '~> 1.0.3'
61
61
  s.add_dependency 'lodash-rails', '~> 4.17.4'
62
- s.add_dependency 'jquery-rails', '~> 4.3.1'
62
+ s.add_dependency 'jquery-rails', '~> 4.4.0'
63
63
  s.add_dependency 'jquery-ui-rails', '~> 6.0.1'
64
64
  s.add_dependency 'tooltipster-rails', '~> 4.1.2'
65
65
  s.add_dependency 'chart-js-rails', '~> 0.0.9' # TODO remove v4
@@ -68,7 +68,7 @@ Gem::Specification.new do |s|
68
68
  s.add_dependency 'wysihtml-rails', '~> 0.6.0.beta2'
69
69
  s.add_dependency 'rack-attack', '~> 6.3.1'
70
70
  s.add_dependency 'jquery-livetype-rails', '~> 0.1.0' # TODO remove v4
71
- s.add_dependency 'redcarpet', '~> 3.4.0'
71
+ s.add_dependency 'redcarpet', '~> 3.5.1', '>= 3.5.1'
72
72
  s.add_dependency 'jquery-unique-clone-rails', '~> 1.0.0'
73
73
  s.add_dependency 'avalanche-rails', '~> 1.2.0'
74
74
  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.5.22
4
+ version: 3.5.27
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-11-03 00:00:00.000000000 Z
11
+ date: 2021-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -646,14 +646,14 @@ dependencies:
646
646
  requirements:
647
647
  - - "~>"
648
648
  - !ruby/object:Gem::Version
649
- version: 4.3.1
649
+ version: 4.4.0
650
650
  type: :runtime
651
651
  prerelease: false
652
652
  version_requirements: !ruby/object:Gem::Requirement
653
653
  requirements:
654
654
  - - "~>"
655
655
  - !ruby/object:Gem::Version
656
- version: 4.3.1
656
+ version: 4.4.0
657
657
  - !ruby/object:Gem::Dependency
658
658
  name: jquery-ui-rails
659
659
  requirement: !ruby/object:Gem::Requirement
@@ -772,14 +772,20 @@ dependencies:
772
772
  requirements:
773
773
  - - "~>"
774
774
  - !ruby/object:Gem::Version
775
- version: 3.4.0
775
+ version: 3.5.1
776
+ - - ">="
777
+ - !ruby/object:Gem::Version
778
+ version: 3.5.1
776
779
  type: :runtime
777
780
  prerelease: false
778
781
  version_requirements: !ruby/object:Gem::Requirement
779
782
  requirements:
780
783
  - - "~>"
781
784
  - !ruby/object:Gem::Version
782
- version: 3.4.0
785
+ version: 3.5.1
786
+ - - ">="
787
+ - !ruby/object:Gem::Version
788
+ version: 3.5.1
783
789
  - !ruby/object:Gem::Dependency
784
790
  name: jquery-unique-clone-rails
785
791
  requirement: !ruby/object:Gem::Requirement
@@ -910,22 +916,22 @@ dependencies:
910
916
  name: minitest
911
917
  requirement: !ruby/object:Gem::Requirement
912
918
  requirements:
913
- - - ">="
914
- - !ruby/object:Gem::Version
915
- version: 5.10.1
916
919
  - - "~>"
917
920
  - !ruby/object:Gem::Version
918
921
  version: 5.10.3
922
+ - - ">="
923
+ - !ruby/object:Gem::Version
924
+ version: 5.10.1
919
925
  type: :runtime
920
926
  prerelease: false
921
927
  version_requirements: !ruby/object:Gem::Requirement
922
928
  requirements:
923
- - - ">="
924
- - !ruby/object:Gem::Version
925
- version: 5.10.1
926
929
  - - "~>"
927
930
  - !ruby/object:Gem::Version
928
931
  version: 5.10.3
932
+ - - ">="
933
+ - !ruby/object:Gem::Version
934
+ version: 5.10.1
929
935
  - !ruby/object:Gem::Dependency
930
936
  name: countries
931
937
  requirement: !ruby/object:Gem::Requirement
@@ -1532,6 +1538,7 @@ files:
1532
1538
  - app/models/workarea/search/admin/pricing_sku.rb
1533
1539
  - app/models/workarea/search/admin/releasable.rb
1534
1540
  - app/models/workarea/search/admin/release.rb
1541
+ - app/models/workarea/search/admin/search_customization.rb
1535
1542
  - app/models/workarea/search/admin/segment.rb
1536
1543
  - app/models/workarea/search/admin/user.rb
1537
1544
  - app/models/workarea/search/customization.rb
@@ -1749,6 +1756,7 @@ files:
1749
1756
  - app/view_models/workarea/shipping_carrier_view_model.rb
1750
1757
  - app/workers/sidekiq/callbacks.rb
1751
1758
  - app/workers/sidekiq/callbacks_worker.rb
1759
+ - app/workers/workarea/build_release_undo_changesets.rb
1752
1760
  - app/workers/workarea/bulk_index_admin.rb
1753
1761
  - app/workers/workarea/bulk_index_products.rb
1754
1762
  - app/workers/workarea/bulk_index_searches.rb
@@ -2466,6 +2474,7 @@ files:
2466
2474
  - test/view_models/workarea/shipping_carrier_view_model_test.rb
2467
2475
  - test/workarea_test.rb
2468
2476
  - test/workers/sidekiq/callbacks_test.rb
2477
+ - test/workers/workarea/build_release_undo_changesets_test.rb
2469
2478
  - test/workers/workarea/bulk_index_admin_test.rb
2470
2479
  - test/workers/workarea/bulk_index_products_test.rb
2471
2480
  - test/workers/workarea/bulk_index_searches_test.rb
@@ -2747,7 +2756,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
2747
2756
  - !ruby/object:Gem::Version
2748
2757
  version: '0'
2749
2758
  requirements: []
2750
- rubygems_version: 3.0.3
2759
+ rubygems_version: 3.2.3
2751
2760
  signing_key:
2752
2761
  specification_version: 4
2753
2762
  summary: Core of the Workarea Commerce Platform