workarea-core 3.5.22 → 3.5.27

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: 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