blacklight-spotlight 3.0.0.rc3 → 3.0.0.rc4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spotlight/admin/reindex_monitor.js +1 -0
  3. data/app/assets/stylesheets/spotlight/browse_group_categories_block.scss +23 -0
  4. data/app/controllers/spotlight/catalog_controller.rb +4 -1
  5. data/app/controllers/spotlight/dashboards_controller.rb +1 -1
  6. data/app/controllers/spotlight/exhibits_controller.rb +1 -1
  7. data/app/helpers/spotlight/application_helper.rb +19 -0
  8. data/app/helpers/spotlight/pages_helper.rb +1 -1
  9. data/app/jobs/concerns/spotlight/job_tracking.rb +47 -0
  10. data/app/jobs/concerns/spotlight/limit_concurrency.rb +33 -0
  11. data/app/jobs/spotlight/add_uploads_from_csv.rb +6 -3
  12. data/app/jobs/spotlight/application_job.rb +8 -0
  13. data/app/jobs/spotlight/cleanup_job_trackers_job.rb +13 -0
  14. data/app/jobs/spotlight/default_thumbnail_job.rb +1 -3
  15. data/app/jobs/spotlight/reindex_exhibit_job.rb +36 -0
  16. data/app/jobs/spotlight/reindex_job.rb +49 -41
  17. data/app/jobs/spotlight/rename_sidecar_field_job.rb +2 -2
  18. data/app/jobs/spotlight/update_job_trackers_job.rb +20 -0
  19. data/app/models/concerns/spotlight/user.rb +2 -1
  20. data/app/models/spotlight/event.rb +13 -0
  21. data/app/models/spotlight/exhibit.rb +4 -14
  22. data/app/models/spotlight/job_tracker.rb +105 -0
  23. data/app/models/spotlight/reindex_progress.rb +44 -27
  24. data/app/models/spotlight/resource.rb +24 -58
  25. data/app/models/spotlight/resources/iiif_harvester.rb +10 -1
  26. data/app/models/spotlight/resources/iiif_manifest.rb +3 -1
  27. data/app/models/spotlight/resources/iiif_service.rb +1 -1
  28. data/app/models/spotlight/resources/json_upload.rb +12 -0
  29. data/app/models/spotlight/resources/upload.rb +25 -2
  30. data/app/models/spotlight/solr_document_sidecar.rb +2 -1
  31. data/app/services/spotlight/etl.rb +7 -0
  32. data/app/services/spotlight/etl/context.rb +52 -0
  33. data/app/services/spotlight/etl/executor.rb +194 -0
  34. data/app/services/spotlight/etl/loaders.rb +12 -0
  35. data/app/services/spotlight/etl/pipeline.rb +81 -0
  36. data/app/services/spotlight/etl/solr_loader.rb +96 -0
  37. data/app/services/spotlight/etl/sources.rb +25 -0
  38. data/app/services/spotlight/etl/step.rb +82 -0
  39. data/app/services/spotlight/etl/transforms.rb +64 -0
  40. data/app/services/spotlight/validity_checker.rb +5 -5
  41. data/app/views/spotlight/dashboards/_reindexing_activity.html.erb +6 -6
  42. data/app/views/spotlight/shared/_locale_picker.html.erb +1 -1
  43. data/app/views/spotlight/sir_trevor/blocks/_browse_group_categories_block.html.erb +4 -3
  44. data/config/locales/spotlight.ar.yml +11 -1
  45. data/config/locales/spotlight.en.yml +3 -2
  46. data/db/migrate/20210122082032_create_job_trackers.rb +22 -0
  47. data/db/migrate/20210126123041_create_events.rb +15 -0
  48. data/lib/generators/spotlight/scaffold_resource_generator.rb +5 -13
  49. data/lib/spotlight/engine.rb +8 -1
  50. data/lib/spotlight/version.rb +1 -1
  51. data/spec/controllers/spotlight/catalog_controller_spec.rb +3 -1
  52. data/spec/examples.txt +1448 -1437
  53. data/spec/factories/job_trackers.rb +9 -0
  54. data/spec/features/add_items_spec.rb +9 -4
  55. data/spec/features/javascript/reindex_monitor_spec.rb +1 -1
  56. data/spec/features/site_users_management_spec.rb +4 -4
  57. data/spec/helpers/spotlight/pages_helper_spec.rb +8 -0
  58. data/spec/jobs/spotlight/reindex_exhibit_job_spec.rb +43 -0
  59. data/spec/jobs/spotlight/reindex_job_spec.rb +30 -59
  60. data/spec/models/spotlight/exhibit_spec.rb +3 -57
  61. data/spec/models/spotlight/reindex_progress_spec.rb +89 -87
  62. data/spec/models/spotlight/resource_spec.rb +69 -90
  63. data/spec/models/spotlight/resources/iiif_harvester_spec.rb +9 -10
  64. data/spec/models/spotlight/solr_document_sidecar_spec.rb +1 -0
  65. data/spec/services/spotlight/etl/context_spec.rb +66 -0
  66. data/spec/services/spotlight/etl/executor_spec.rb +149 -0
  67. data/spec/services/spotlight/etl/pipeline_spec.rb +22 -0
  68. data/spec/services/spotlight/etl/solr_loader_spec.rb +76 -0
  69. data/spec/services/spotlight/etl/step_spec.rb +70 -0
  70. data/spec/spec_helper.rb +2 -5
  71. data/spec/views/spotlight/dashboards/_reindexing_activity.html.erb_spec.rb +22 -19
  72. metadata +55 -15
  73. data/app/models/concerns/spotlight/resources/open_graph.rb +0 -36
  74. data/app/models/spotlight/reindexing_log_entry.rb +0 -42
  75. data/app/services/spotlight/resources/iiif_builder.rb +0 -19
  76. data/app/services/spotlight/solr_document_builder.rb +0 -77
  77. data/app/services/spotlight/upload_solr_document_builder.rb +0 -57
  78. data/spec/factories/reindexing_log_entries.rb +0 -54
  79. data/spec/models/spotlight/reindexing_log_entry_spec.rb +0 -129
  80. data/spec/models/spotlight/resources/open_graph_spec.rb +0 -65
  81. data/spec/services/spotlight/solr_document_builder_spec.rb +0 -66
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe Spotlight::Etl::Pipeline do
4
+ let(:mock_executor) { instance_double(Spotlight::Etl::Executor, call: 'result', estimated_size: 10) }
5
+ let(:context) { instance_double(Spotlight::Etl::Context) }
6
+
7
+ describe '#call' do
8
+ it 'forwards the call to the executor' do
9
+ allow(Spotlight::Etl::Executor).to receive(:new).with(subject, context, cache: nil).and_return(mock_executor)
10
+
11
+ expect(subject.call(context)).to eq 'result'
12
+ end
13
+ end
14
+
15
+ describe '#estimated_size' do
16
+ it 'forwards the call to the executor' do
17
+ allow(Spotlight::Etl::Executor).to receive(:new).with(subject, context).and_return(mock_executor)
18
+
19
+ expect(subject.estimated_size(context)).to eq 10
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe Spotlight::Etl::SolrLoader do
4
+ subject(:loader) { described_class.new(batch_size: 5, solr_connection: mock_connection) }
5
+
6
+ let(:mock_connection) { instance_double(RSolr::Client, commit: nil, update: nil) }
7
+
8
+ describe '#call' do
9
+ it 'queues data' do
10
+ loader.call({})
11
+ loader.call({})
12
+ loader.call({})
13
+
14
+ expect(loader.size).to eq 3
15
+ end
16
+
17
+ it 'writes data to the index when the queue is long enough' do
18
+ 5.times { loader.call({}) }
19
+
20
+ expect(mock_connection).to have_received(:update) do |data:, **|
21
+ expect(JSON.parse(data).length).to eq 5
22
+ end
23
+ end
24
+ end
25
+
26
+ describe '#finalize' do
27
+ let(:pipeline) do
28
+ Spotlight::Etl::Executor.new(nil, Spotlight::Etl::Context.new(commit: false))
29
+ end
30
+
31
+ it 'flushes the remaining queue to the index' do
32
+ 3.times { loader.call({}) }
33
+
34
+ loader.finalize
35
+
36
+ expect(mock_connection).to have_received(:update) do |data:, **|
37
+ expect(JSON.parse(data).length).to eq 3
38
+ end
39
+
40
+ expect(mock_connection).to have_received(:commit)
41
+ end
42
+
43
+ it 'uses the pipeline configuration to determine whether to send a commit' do
44
+ loader.finalize(pipeline)
45
+
46
+ expect(mock_connection).not_to have_received(:commit)
47
+ end
48
+
49
+ context 'error handling' do
50
+ it 'tries documents individually if the whole batch fails' do
51
+ allow(mock_connection).to receive(:update) do |data:, **|
52
+ raise '???' if JSON.parse(data).length > 1
53
+ end
54
+
55
+ 3.times { loader.call({}) }
56
+ loader.finalize
57
+
58
+ expect(mock_connection).to have_received(:update).exactly(4).times
59
+ end
60
+
61
+ it 'logs errors from trying individual documents' do
62
+ allow(pipeline).to receive(:on_error)
63
+
64
+ allow(mock_connection).to receive(:update) do |**|
65
+ raise '???'
66
+ end
67
+
68
+ loader.call({})
69
+
70
+ loader.finalize(pipeline)
71
+
72
+ expect(pipeline).to have_received(:on_error).once
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe Spotlight::Etl::Step do
4
+ subject(:step) { described_class.new(definition, **step_args) }
5
+
6
+ let(:definition) { ->(a = nil) { a || 'value' } }
7
+ let(:step_args) { {} }
8
+
9
+ describe '#call' do
10
+ it 'returns the value from the defined step' do
11
+ expect(step.call).to eq('value')
12
+ end
13
+
14
+ it 'passes through arguments' do
15
+ expect(step.call('a')).to eq('a')
16
+ end
17
+
18
+ context 'with a class instance' do
19
+ let(:definition) { Spotlight::Etl::SolrLoader.new }
20
+
21
+ it 'runs the call method' do
22
+ allow(definition).to receive(:call)
23
+
24
+ step.call('a')
25
+
26
+ expect(definition).to have_received(:call).with('a')
27
+ end
28
+ end
29
+
30
+ context 'with a class' do
31
+ let(:definition) { Spotlight::Etl::SolrLoader }
32
+ let(:mock) { instance_double(definition, call: nil) }
33
+
34
+ it 'runs the call method' do
35
+ allow(definition).to receive(:new).and_return(mock)
36
+
37
+ step.call('a', 'b')
38
+
39
+ expect(mock).to have_received(:call).with('a', 'b')
40
+ end
41
+
42
+ it 'uses the same instance for the lifetime of the step' do
43
+ allow(definition).to receive(:new).once.and_return(mock)
44
+
45
+ step.call('a', 'b')
46
+ step.call('a', 'b')
47
+
48
+ expect(mock).to have_received(:call).twice.with('a', 'b')
49
+ end
50
+ end
51
+ end
52
+
53
+ describe '#finalize' do
54
+ it 'does nothing if the definition does not have a #finalize method' do
55
+ expect { step.finalize }.not_to raise_exception
56
+ end
57
+
58
+ context 'with a loader' do
59
+ let(:definition) { Spotlight::Etl::SolrLoader.new }
60
+
61
+ it 'runs the finalize method' do
62
+ allow(definition).to receive(:finalize)
63
+
64
+ step.finalize
65
+
66
+ expect(definition).to have_received(:finalize)
67
+ end
68
+ end
69
+ end
70
+ end
data/spec/spec_helper.rb CHANGED
@@ -48,6 +48,8 @@ require 'spotlight'
48
48
 
49
49
  # configure spotlight with all the settings necessary to test functionality
50
50
  Spotlight::Engine.config.exhibit_themes = %w[default modern]
51
+ Spotlight::Engine.config.reindexing_batch_count = 1
52
+ Spotlight::Engine.config.assign_default_roles_to_first_user = false
51
53
 
52
54
  Dir['./spec/support/**/*.rb'].sort.each { |f| require f }
53
55
 
@@ -62,11 +64,6 @@ RSpec.configure do |config|
62
64
 
63
65
  config.use_transactional_fixtures = true
64
66
 
65
- config.before do
66
- # The first user is automatically granted admin privileges; we don't want that behavior for many of our tests
67
- Spotlight::Engine.user_class.create email: 'initial+admin@example.com', password: 'password', password_confirmation: 'password'
68
- end
69
-
70
67
  if defined? Devise::Test::ControllerHelpers
71
68
  config.include Devise::Test::ControllerHelpers, type: :controller
72
69
  config.include Devise::Test::ControllerHelpers, type: :view
@@ -1,21 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe 'spotlight/dashboards/_reindexing_activity.html.erb', type: :view do
4
- # recent reindexing entries should be sorted by start_time in descending order, so mock that behavior
5
- let(:recent_reindexing) do
6
- [FactoryBot.build(:unstarted_reindexing_log_entry)] + # nil start_time is trouble for the sort_by used to create the rest of the fixture's rows
7
- [
8
- FactoryBot.build(:reindexing_log_entry),
9
- FactoryBot.build(:in_progress_reindexing_log_entry),
10
- FactoryBot.build(:recent_reindexing_log_entry),
11
- FactoryBot.build(:failed_reindexing_log_entry)
12
- ].sort_by(&:start_time).reverse
13
- end
14
4
  let(:p) { 'spotlight/dashboards/reindexing_activity' }
15
5
 
6
+ before do
7
+ assign(:recent_reindexing, recent_reindexing)
8
+ end
9
+
16
10
  context 'the reindexing log is empty' do
11
+ let(:recent_reindexing) { [] }
12
+
17
13
  before do
18
- assign(:recent_reindexing, [])
19
14
  render p
20
15
  end
21
16
 
@@ -29,8 +24,18 @@ describe 'spotlight/dashboards/_reindexing_activity.html.erb', type: :view do
29
24
  end
30
25
 
31
26
  context 'the reindexing log has entries' do
27
+ # recent reindexing entries should be sorted by start_time in descending order, so mock that behavior
28
+ let(:recent_reindexing) do
29
+ [
30
+ FactoryBot.build(:job_tracker, status: 'enqueued'),
31
+ FactoryBot.build(:job_tracker, status: 'completed', data: { progress: 10 }),
32
+ FactoryBot.build(:job_tracker, status: 'in_progress', created_at: Time.zone.parse('January 10, 2017 23:00')),
33
+ FactoryBot.build(:job_tracker, status: 'completed', data: { progress: 100 }),
34
+ FactoryBot.build(:job_tracker, status: 'failed', data: { progress: 10 })
35
+ ]
36
+ end
37
+
32
38
  before do
33
- assign(:recent_reindexing, recent_reindexing)
34
39
  render p
35
40
  end
36
41
 
@@ -43,7 +48,7 @@ describe 'spotlight/dashboards/_reindexing_activity.html.erb', type: :view do
43
48
  end
44
49
 
45
50
  it 'formats the start time correctly' do
46
- expect(rendered).to have_css('table.table-striped td', text: 'January 05, 2017 23:00', count: 1)
51
+ expect(rendered).to have_css('table.table-striped td', text: 'January 05, 2017 23:00', count: 4)
47
52
  expect(rendered).to have_css('table.table-striped td', text: 'January 10, 2017 23:00', count: 1)
48
53
  end
49
54
 
@@ -60,11 +65,6 @@ describe 'spotlight/dashboards/_reindexing_activity.html.erb', type: :view do
60
65
  expect(rendered).to have_css('table.table-striped td', text: '5 minutes', count: 3)
61
66
  end
62
67
 
63
- it 'displays nothing in the duration column or start time column when the info is unavailable (e.g. unstarted or in_progress attempts)' do
64
- # we expect 2 blank durations, and 1 blank start time (1 unstarted log entry w/ blank start and duration, 1 in_progress w/ blank duration)
65
- expect(rendered).to have_css('table.table-striped td', text: /^$/, count: 3)
66
- end
67
-
68
68
  it 'displays the status of the reindexing attempt using localized text' do
69
69
  expect(rendered).to have_css('table.table-striped td', text: 'Not yet started', count: 1)
70
70
  expect(rendered).to have_css('table.table-striped td', text: 'Successful', count: 2)
@@ -74,8 +74,11 @@ describe 'spotlight/dashboards/_reindexing_activity.html.erb', type: :view do
74
74
  end
75
75
 
76
76
  context 'a reindexing log entry has a null user' do
77
+ let(:recent_reindexing) do
78
+ [FactoryBot.build(:job_tracker, status: 'completed', data: { progress: 10 }, user: nil)]
79
+ end
80
+
77
81
  it 'displays blank in the user field and renders without error' do
78
- assign(:recent_reindexing, [FactoryBot.build(:reindexing_log_entry_no_user)])
79
82
  expect { render p }.not_to raise_error
80
83
 
81
84
  # we expect one blank table cell for the user, and values for everything else
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blacklight-spotlight
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.rc3
4
+ version: 3.0.0.rc4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Beer
@@ -11,8 +11,22 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2021-02-02 00:00:00.000000000 Z
14
+ date: 2021-02-04 00:00:00.000000000 Z
15
15
  dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: activejob-status
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
16
30
  - !ruby/object:Gem::Dependency
17
31
  name: acts-as-taggable-on
18
32
  requirement: !ruby/object:Gem::Requirement
@@ -425,6 +439,9 @@ dependencies:
425
439
  name: rails
426
440
  requirement: !ruby/object:Gem::Requirement
427
441
  requirements:
442
+ - - ">="
443
+ - !ruby/object:Gem::Version
444
+ version: '5.2'
428
445
  - - "<"
429
446
  - !ruby/object:Gem::Version
430
447
  version: '6.2'
@@ -432,6 +449,9 @@ dependencies:
432
449
  prerelease: false
433
450
  version_requirements: !ruby/object:Gem::Requirement
434
451
  requirements:
452
+ - - ">="
453
+ - !ruby/object:Gem::Version
454
+ version: '5.2'
435
455
  - - "<"
436
456
  - !ruby/object:Gem::Version
437
457
  version: '6.2'
@@ -1025,10 +1045,16 @@ files:
1025
1045
  - app/helpers/spotlight/searches_helper.rb
1026
1046
  - app/helpers/spotlight/title_helper.rb
1027
1047
  - app/helpers/spotlight/translations_helper.rb
1048
+ - app/jobs/concerns/spotlight/job_tracking.rb
1049
+ - app/jobs/concerns/spotlight/limit_concurrency.rb
1028
1050
  - app/jobs/spotlight/add_uploads_from_csv.rb
1051
+ - app/jobs/spotlight/application_job.rb
1052
+ - app/jobs/spotlight/cleanup_job_trackers_job.rb
1029
1053
  - app/jobs/spotlight/default_thumbnail_job.rb
1054
+ - app/jobs/spotlight/reindex_exhibit_job.rb
1030
1055
  - app/jobs/spotlight/reindex_job.rb
1031
1056
  - app/jobs/spotlight/rename_sidecar_field_job.rb
1057
+ - app/jobs/spotlight/update_job_trackers_job.rb
1032
1058
  - app/mailers/spotlight/confirmation_mailer.rb
1033
1059
  - app/mailers/spotlight/contact_mailer.rb
1034
1060
  - app/mailers/spotlight/indexing_complete_mailer.rb
@@ -1040,7 +1066,6 @@ files:
1040
1066
  - app/models/concerns/spotlight/exhibit_analytics.rb
1041
1067
  - app/models/concerns/spotlight/exhibit_defaults.rb
1042
1068
  - app/models/concerns/spotlight/exhibit_documents.rb
1043
- - app/models/concerns/spotlight/resources/open_graph.rb
1044
1069
  - app/models/concerns/spotlight/resources/web.rb
1045
1070
  - app/models/concerns/spotlight/sitemap.rb
1046
1071
  - app/models/concerns/spotlight/solr_document.rb
@@ -1075,6 +1100,7 @@ files:
1075
1100
  - app/models/spotlight/contact_image.rb
1076
1101
  - app/models/spotlight/custom_field.rb
1077
1102
  - app/models/spotlight/custom_search_field.rb
1103
+ - app/models/spotlight/event.rb
1078
1104
  - app/models/spotlight/exhibit.rb
1079
1105
  - app/models/spotlight/exhibit_thumbnail.rb
1080
1106
  - app/models/spotlight/feature_page.rb
@@ -1084,6 +1110,7 @@ files:
1084
1110
  - app/models/spotlight/group.rb
1085
1111
  - app/models/spotlight/group_member.rb
1086
1112
  - app/models/spotlight/home_page.rb
1113
+ - app/models/spotlight/job_tracker.rb
1087
1114
  - app/models/spotlight/language.rb
1088
1115
  - app/models/spotlight/lock.rb
1089
1116
  - app/models/spotlight/main_navigation.rb
@@ -1093,7 +1120,6 @@ files:
1093
1120
  - app/models/spotlight/page_content.rb
1094
1121
  - app/models/spotlight/page_content/sir_trevor.rb
1095
1122
  - app/models/spotlight/reindex_progress.rb
1096
- - app/models/spotlight/reindexing_log_entry.rb
1097
1123
  - app/models/spotlight/resource.rb
1098
1124
  - app/models/spotlight/resources/csv_upload.rb
1099
1125
  - app/models/spotlight/resources/iiif_harvester.rb
@@ -1109,12 +1135,18 @@ files:
1109
1135
  - app/presenters/spotlight/iiif_manifest_presenter.rb
1110
1136
  - app/services/spotlight/carrierwave_file_resolver.rb
1111
1137
  - app/services/spotlight/clone_translated_page_from_locale.rb
1138
+ - app/services/spotlight/etl.rb
1139
+ - app/services/spotlight/etl/context.rb
1140
+ - app/services/spotlight/etl/executor.rb
1141
+ - app/services/spotlight/etl/loaders.rb
1142
+ - app/services/spotlight/etl/pipeline.rb
1143
+ - app/services/spotlight/etl/solr_loader.rb
1144
+ - app/services/spotlight/etl/sources.rb
1145
+ - app/services/spotlight/etl/step.rb
1146
+ - app/services/spotlight/etl/transforms.rb
1112
1147
  - app/services/spotlight/exhibit_import_export_service.rb
1113
1148
  - app/services/spotlight/iiif_resource_resolver.rb
1114
1149
  - app/services/spotlight/invite_users_service.rb
1115
- - app/services/spotlight/resources/iiif_builder.rb
1116
- - app/services/spotlight/solr_document_builder.rb
1117
- - app/services/spotlight/upload_solr_document_builder.rb
1118
1150
  - app/services/spotlight/validity_checker.rb
1119
1151
  - app/uploaders/spotlight/attachment_uploader.rb
1120
1152
  - app/uploaders/spotlight/featured_image_uploader.rb
@@ -1386,6 +1418,8 @@ files:
1386
1418
  - db/migrate/20191205112300_add_unique_index_to_sidecars.rb
1387
1419
  - db/migrate/20200403161512_add_subtitle_to_searches.rb
1388
1420
  - db/migrate/20210113092223_create_spotlight_groups.rb
1421
+ - db/migrate/20210122082032_create_job_trackers.rb
1422
+ - db/migrate/20210126123041_create_events.rb
1389
1423
  - lib/blacklight/spotlight.rb
1390
1424
  - lib/generators/spotlight/install_generator.rb
1391
1425
  - lib/generators/spotlight/scaffold_resource_generator.rb
@@ -1454,10 +1488,10 @@ files:
1454
1488
  - spec/factories/exhibits.rb
1455
1489
  - spec/factories/featured_images.rb
1456
1490
  - spec/factories/group.rb
1491
+ - spec/factories/job_trackers.rb
1457
1492
  - spec/factories/language.rb
1458
1493
  - spec/factories/main_navigation.rb
1459
1494
  - spec/factories/pages.rb
1460
- - spec/factories/reindexing_log_entries.rb
1461
1495
  - spec/factories/resources.rb
1462
1496
  - spec/factories/roles.rb
1463
1497
  - spec/factories/searches.rb
@@ -1547,6 +1581,7 @@ files:
1547
1581
  - spec/i18n_spec.rb
1548
1582
  - spec/jobs/spotlight/add_uploads_from_csv_spec.rb
1549
1583
  - spec/jobs/spotlight/default_thumbnail_job_spec.rb
1584
+ - spec/jobs/spotlight/reindex_exhibit_job_spec.rb
1550
1585
  - spec/jobs/spotlight/reindex_job_spec.rb
1551
1586
  - spec/jobs/spotlight/rename_sidecar_field_job_spec.rb
1552
1587
  - spec/lib/migration/iiif_spec.rb
@@ -1588,12 +1623,10 @@ files:
1588
1623
  - spec/models/spotlight/page_configurations_spec.rb
1589
1624
  - spec/models/spotlight/page_spec.rb
1590
1625
  - spec/models/spotlight/reindex_progress_spec.rb
1591
- - spec/models/spotlight/reindexing_log_entry_spec.rb
1592
1626
  - spec/models/spotlight/resource_spec.rb
1593
1627
  - spec/models/spotlight/resources/iiif_harvester_spec.rb
1594
1628
  - spec/models/spotlight/resources/iiif_manifest_spec.rb
1595
1629
  - spec/models/spotlight/resources/iiif_service_spec.rb
1596
- - spec/models/spotlight/resources/open_graph_spec.rb
1597
1630
  - spec/models/spotlight/resources/upload_spec.rb
1598
1631
  - spec/models/spotlight/resources/web_spec.rb
1599
1632
  - spec/models/spotlight/role_spec.rb
@@ -1611,10 +1644,14 @@ files:
1611
1644
  - spec/routing/spotlight/pages_routing_spec.rb
1612
1645
  - spec/services/spotlight/carrierwave_file_resolver_spec.rb
1613
1646
  - spec/services/spotlight/clone_translated_page_from_locale_spec.rb
1647
+ - spec/services/spotlight/etl/context_spec.rb
1648
+ - spec/services/spotlight/etl/executor_spec.rb
1649
+ - spec/services/spotlight/etl/pipeline_spec.rb
1650
+ - spec/services/spotlight/etl/solr_loader_spec.rb
1651
+ - spec/services/spotlight/etl/step_spec.rb
1614
1652
  - spec/services/spotlight/exhibit_import_export_service_spec.rb
1615
1653
  - spec/services/spotlight/iiif_resource_resolver_spec.rb
1616
1654
  - spec/services/spotlight/invite_users_service_spec.rb
1617
- - spec/services/spotlight/solr_document_builder_spec.rb
1618
1655
  - spec/spec_helper.rb
1619
1656
  - spec/support/controllers/engine_helpers.rb
1620
1657
  - spec/support/disable_friendly_id_deprecation_warnings.rb
@@ -1795,10 +1832,10 @@ test_files:
1795
1832
  - spec/factories/exhibits.rb
1796
1833
  - spec/factories/featured_images.rb
1797
1834
  - spec/factories/group.rb
1835
+ - spec/factories/job_trackers.rb
1798
1836
  - spec/factories/language.rb
1799
1837
  - spec/factories/main_navigation.rb
1800
1838
  - spec/factories/pages.rb
1801
- - spec/factories/reindexing_log_entries.rb
1802
1839
  - spec/factories/resources.rb
1803
1840
  - spec/factories/roles.rb
1804
1841
  - spec/factories/searches.rb
@@ -1888,6 +1925,7 @@ test_files:
1888
1925
  - spec/i18n_spec.rb
1889
1926
  - spec/jobs/spotlight/add_uploads_from_csv_spec.rb
1890
1927
  - spec/jobs/spotlight/default_thumbnail_job_spec.rb
1928
+ - spec/jobs/spotlight/reindex_exhibit_job_spec.rb
1891
1929
  - spec/jobs/spotlight/reindex_job_spec.rb
1892
1930
  - spec/jobs/spotlight/rename_sidecar_field_job_spec.rb
1893
1931
  - spec/lib/migration/iiif_spec.rb
@@ -1929,12 +1967,10 @@ test_files:
1929
1967
  - spec/models/spotlight/page_configurations_spec.rb
1930
1968
  - spec/models/spotlight/page_spec.rb
1931
1969
  - spec/models/spotlight/reindex_progress_spec.rb
1932
- - spec/models/spotlight/reindexing_log_entry_spec.rb
1933
1970
  - spec/models/spotlight/resource_spec.rb
1934
1971
  - spec/models/spotlight/resources/iiif_harvester_spec.rb
1935
1972
  - spec/models/spotlight/resources/iiif_manifest_spec.rb
1936
1973
  - spec/models/spotlight/resources/iiif_service_spec.rb
1937
- - spec/models/spotlight/resources/open_graph_spec.rb
1938
1974
  - spec/models/spotlight/resources/upload_spec.rb
1939
1975
  - spec/models/spotlight/resources/web_spec.rb
1940
1976
  - spec/models/spotlight/role_spec.rb
@@ -1952,10 +1988,14 @@ test_files:
1952
1988
  - spec/routing/spotlight/pages_routing_spec.rb
1953
1989
  - spec/services/spotlight/carrierwave_file_resolver_spec.rb
1954
1990
  - spec/services/spotlight/clone_translated_page_from_locale_spec.rb
1991
+ - spec/services/spotlight/etl/context_spec.rb
1992
+ - spec/services/spotlight/etl/executor_spec.rb
1993
+ - spec/services/spotlight/etl/pipeline_spec.rb
1994
+ - spec/services/spotlight/etl/solr_loader_spec.rb
1995
+ - spec/services/spotlight/etl/step_spec.rb
1955
1996
  - spec/services/spotlight/exhibit_import_export_service_spec.rb
1956
1997
  - spec/services/spotlight/iiif_resource_resolver_spec.rb
1957
1998
  - spec/services/spotlight/invite_users_service_spec.rb
1958
- - spec/services/spotlight/solr_document_builder_spec.rb
1959
1999
  - spec/spec_helper.rb
1960
2000
  - spec/support/controllers/engine_helpers.rb
1961
2001
  - spec/support/disable_friendly_id_deprecation_warnings.rb