blacklight-spotlight 3.0.0.rc1 → 3.0.0.rc6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/app/assets/images/blacklight/arrow-alt-circle-left.svg +1 -0
- data/app/assets/images/blacklight/arrow-alt-circle-right.svg +1 -0
- data/app/assets/images/blacklight/close.svg +1 -0
- data/app/assets/images/blacklight/zoom_in.svg +1 -0
- data/app/assets/images/blacklight/zoom_out.svg +1 -0
- data/app/assets/javascripts/spotlight/admin/{add_new_page_button.js → add_new_button.js} +7 -0
- data/app/assets/javascripts/spotlight/admin/block_mixins/autocompleteable.js +4 -4
- data/app/assets/javascripts/spotlight/admin/blocks/browse_group_categories_block.js +88 -0
- data/app/assets/javascripts/spotlight/admin/blocks/pages_block.js +1 -1
- data/app/assets/javascripts/spotlight/admin/blocks/solr_documents_base_block.js +1 -1
- data/app/assets/javascripts/spotlight/admin/blocks/uploaded_items_block.js +8 -1
- data/app/assets/javascripts/spotlight/admin/catalog_edit.js +13 -47
- data/app/assets/javascripts/spotlight/admin/croppable.js +1 -1
- data/app/assets/javascripts/spotlight/admin/exhibit_tag_autocomplete.js +37 -0
- data/app/assets/javascripts/spotlight/admin/index.js +0 -2
- data/app/assets/javascripts/spotlight/admin/{reindex_monitor.js → progress_monitor.js} +26 -4
- data/app/assets/javascripts/spotlight/admin/search_typeahead.js +2 -2
- data/app/assets/javascripts/spotlight/admin/sir-trevor/locales.js +9 -2
- data/app/assets/javascripts/spotlight/user/browse_group_categories.js +59 -0
- data/app/assets/javascripts/spotlight/user/index.js +1 -0
- data/app/assets/javascripts/spotlight/user/zpr_links.js.erb +29 -14
- data/app/assets/stylesheets/spotlight/_breadcrumbs.scss +8 -0
- data/app/assets/stylesheets/spotlight/_browse.scss +8 -0
- data/app/assets/stylesheets/spotlight/_catalog.scss +34 -8
- data/app/assets/stylesheets/spotlight/_exhibit_admin.scss +9 -0
- data/app/assets/stylesheets/spotlight/_featured_browse_categories_block.scss +212 -84
- data/app/assets/stylesheets/spotlight/_item_text_block.scss +1 -1
- data/app/assets/stylesheets/spotlight/_modals.scss +3 -0
- data/app/assets/stylesheets/spotlight/_nestable.scss +8 -0
- data/app/assets/stylesheets/spotlight/_pages.scss +9 -4
- data/app/assets/stylesheets/spotlight/_spotlight.scss +4 -0
- data/app/assets/stylesheets/spotlight/_translations.scss +6 -0
- data/app/assets/stylesheets/spotlight/_view_larger.scss +22 -0
- data/app/assets/stylesheets/spotlight/browse_group_categories_block.scss +92 -0
- data/app/assets/stylesheets/spotlight/typeahead.css +23 -23
- data/app/builders/spotlight/bootstrap_breadcrumbs_builder.rb +5 -4
- data/app/controllers/concerns/spotlight/base.rb +1 -1
- data/app/controllers/concerns/spotlight/catalog.rb +7 -1
- data/app/controllers/concerns/spotlight/search_helper.rb +2 -8
- data/app/controllers/spotlight/appearances_controller.rb +0 -13
- data/app/controllers/spotlight/browse_controller.rb +15 -17
- data/app/controllers/spotlight/bulk_actions_controller.rb +62 -0
- data/app/controllers/spotlight/bulk_updates_controller.rb +67 -0
- data/app/controllers/spotlight/catalog_controller.rb +17 -14
- data/app/controllers/spotlight/concerns/application_controller.rb +13 -2
- data/app/controllers/spotlight/dashboards_controller.rb +5 -4
- data/app/controllers/spotlight/exhibits_controller.rb +1 -1
- data/app/controllers/spotlight/featured_images_controller.rb +1 -1
- data/app/controllers/spotlight/groups_controller.rb +80 -0
- data/app/controllers/spotlight/job_trackers_controller.rb +17 -0
- data/app/controllers/spotlight/pages_controller.rb +8 -13
- data/app/controllers/spotlight/searches_controller.rb +4 -17
- data/app/controllers/spotlight/tags_controller.rb +39 -5
- data/app/helpers/spotlight/application_helper.rb +21 -2
- data/app/helpers/spotlight/crud_link_helpers.rb +1 -1
- data/app/helpers/spotlight/job_trackers_helper.rb +31 -0
- data/app/helpers/spotlight/main_app_helpers.rb +4 -5
- data/app/helpers/spotlight/meta_helper.rb +2 -2
- data/app/helpers/spotlight/pages_helper.rb +1 -8
- data/app/helpers/spotlight/roles_helper.rb +1 -1
- data/app/helpers/spotlight/searches_helper.rb +1 -1
- data/app/jobs/concerns/spotlight/gather_documents.rb +35 -0
- data/app/jobs/concerns/spotlight/job_tracking.rb +64 -0
- data/app/jobs/concerns/spotlight/limit_concurrency.rb +33 -0
- data/app/jobs/spotlight/add_tags_job.rb +31 -0
- data/app/jobs/spotlight/add_uploads_from_csv.rb +4 -3
- data/app/jobs/spotlight/application_job.rb +8 -0
- data/app/jobs/spotlight/change_visibility_job.rb +33 -0
- data/app/jobs/spotlight/cleanup_job_trackers_job.rb +13 -0
- data/app/jobs/spotlight/default_thumbnail_job.rb +1 -3
- data/app/jobs/spotlight/process_bulk_updates_csv_job.rb +82 -0
- data/app/jobs/spotlight/reindex_exhibit_job.rb +39 -0
- data/app/jobs/spotlight/reindex_job.rb +64 -44
- data/app/jobs/spotlight/remove_tags_job.rb +31 -0
- data/app/jobs/spotlight/rename_sidecar_field_job.rb +3 -2
- data/app/jobs/spotlight/rename_tags_job.rb +33 -0
- data/app/jobs/spotlight/update_job_trackers_job.rb +20 -0
- data/app/models/concerns/spotlight/browse_category_search_builder.rb +59 -0
- data/app/models/concerns/spotlight/exhibit_analytics.rb +2 -6
- data/app/models/concerns/spotlight/exhibit_defaults.rb +1 -1
- data/app/models/concerns/spotlight/exhibit_documents.rb +2 -2
- data/app/models/concerns/spotlight/resources/web.rb +1 -1
- data/app/models/concerns/spotlight/search_builder.rb +11 -0
- data/app/models/concerns/spotlight/solr_document.rb +1 -1
- data/app/models/concerns/spotlight/solr_document/atomic_updates.rb +2 -2
- data/app/models/concerns/spotlight/user.rb +7 -2
- data/app/models/sir_trevor_rails/blocks/browse_group_categories_block.rb +25 -0
- data/app/models/sir_trevor_rails/blocks/solr_documents_block.rb +9 -0
- data/app/models/sir_trevor_rails/blocks/uploaded_items_block.rb +4 -0
- data/app/models/spotlight/ability.rb +8 -2
- data/app/models/spotlight/about_page.rb +1 -1
- data/app/models/spotlight/attachment.rb +1 -1
- data/app/models/spotlight/background_job_progress.rb +96 -0
- data/app/models/spotlight/blacklight_configuration.rb +28 -7
- data/app/models/spotlight/bulk_update.rb +8 -0
- data/app/models/spotlight/event.rb +13 -0
- data/app/models/spotlight/exhibit.rb +15 -12
- data/app/models/spotlight/feature_page.rb +1 -3
- data/app/models/spotlight/featured_image.rb +8 -2
- data/app/models/spotlight/field_metadata.rb +4 -8
- data/app/models/spotlight/group.rb +22 -0
- data/app/models/spotlight/group_member.rb +11 -0
- data/app/models/spotlight/home_page.rb +1 -1
- data/app/models/spotlight/job_tracker.rb +114 -0
- data/app/models/spotlight/page.rb +3 -5
- data/app/models/spotlight/page_configurations.rb +15 -9
- data/app/models/spotlight/resource.rb +28 -62
- data/app/models/spotlight/resources/iiif_harvester.rb +12 -3
- data/app/models/spotlight/resources/iiif_manifest.rb +9 -7
- data/app/models/spotlight/resources/iiif_service.rb +9 -2
- data/app/models/spotlight/resources/json_upload.rb +12 -0
- data/app/models/spotlight/resources/upload.rb +25 -2
- data/app/models/spotlight/role.rb +1 -2
- data/app/models/spotlight/search.rb +5 -0
- data/app/models/spotlight/solr_document_sidecar.rb +2 -1
- data/app/presenters/spotlight/iiif_manifest_presenter.rb +2 -2
- data/app/services/spotlight/bulk_updates_csv_template_service.rb +93 -0
- data/app/services/spotlight/etl.rb +7 -0
- data/app/services/spotlight/etl/context.rb +52 -0
- data/app/services/spotlight/etl/executor.rb +192 -0
- data/app/services/spotlight/etl/loaders.rb +12 -0
- data/app/services/spotlight/etl/pipeline.rb +81 -0
- data/app/services/spotlight/etl/solr_loader.rb +96 -0
- data/app/services/spotlight/etl/sources.rb +25 -0
- data/app/services/spotlight/etl/step.rb +82 -0
- data/app/services/spotlight/etl/transforms.rb +64 -0
- data/app/services/spotlight/exhibit_import_export_service.rb +50 -22
- data/app/services/spotlight/iiif_resource_resolver.rb +1 -1
- data/app/services/spotlight/validity_checker.rb +5 -5
- data/app/uploaders/spotlight/bulk_updates_uploader.rb +7 -0
- data/app/uploaders/spotlight/featured_image_uploader.rb +1 -1
- data/app/views/catalog/_add_tags.html.erb +28 -0
- data/app/views/catalog/_bulk_actions.html.erb +12 -0
- data/app/views/catalog/_change_visibility.html.erb +35 -0
- data/app/views/catalog/_curator_actions.html.erb +3 -0
- data/app/views/catalog/_remove_tags.html.erb +37 -0
- data/app/views/catalog/_save_search.html.erb +1 -1
- data/app/views/spotlight/about_pages/_empty.html.erb +5 -5
- data/app/views/spotlight/browse/_search.html.erb +2 -1
- data/app/views/spotlight/browse/_search_box.html.erb +9 -9
- data/app/views/spotlight/browse/index.html.erb +13 -0
- data/app/views/spotlight/bulk_updates/_download.html.erb +23 -0
- data/app/views/spotlight/bulk_updates/_overview.html.erb +1 -0
- data/app/views/spotlight/bulk_updates/_progress_panel.html.erb +19 -0
- data/app/views/spotlight/bulk_updates/_upload.html.erb +12 -0
- data/app/views/spotlight/bulk_updates/edit.html.erb +37 -0
- data/app/views/spotlight/catalog/_admin_header.html.erb +1 -1
- data/app/views/spotlight/catalog/_admin_index_header_default.html.erb +1 -1
- data/app/views/spotlight/catalog/_admin_thumbnail_default.html.erb +3 -2
- data/app/views/spotlight/catalog/_document.html.erb +2 -4
- data/app/views/spotlight/catalog/_edit_default.html.erb +2 -2
- data/app/views/spotlight/catalog/_reindex_progress_panel.html.erb +1 -1
- data/app/views/spotlight/catalog/index.iiif_json.jbuilder +22 -0
- data/app/views/spotlight/contacts/_form.html.erb +1 -1
- data/app/views/spotlight/custom_fields/_form.html.erb +1 -1
- data/app/views/spotlight/custom_search_fields/_form.html.erb +1 -1
- data/app/views/spotlight/dashboards/_reindexing_activity.html.erb +6 -6
- data/app/views/spotlight/exhibits/_exhibit_card.html.erb +1 -1
- data/app/views/spotlight/feature_pages/_empty.html.erb +5 -5
- data/app/views/spotlight/featured_images/_form.html.erb +2 -2
- data/app/views/spotlight/featured_images/_upload_form.html.erb +1 -1
- data/app/views/spotlight/home_pages/_empty.html.erb +3 -3
- data/app/views/spotlight/job_trackers/show.html.erb +79 -0
- data/app/views/spotlight/metadata_configurations/_metadata_field.html.erb +2 -2
- data/app/views/spotlight/pages/_form.html.erb +2 -2
- data/app/views/spotlight/pages/_view_type_group.html.erb +3 -3
- data/app/views/spotlight/resources/_form.html.erb +1 -1
- data/app/views/spotlight/resources/csv_upload/_form.html.erb +1 -1
- data/app/views/spotlight/resources/iiif/_form.html.erb +1 -1
- data/app/views/spotlight/resources/json_upload/_form.html.erb +2 -2
- data/app/views/spotlight/resources/upload/_form.html.erb +1 -1
- data/app/views/spotlight/search_configurations/_document_index_view_types.html.erb +2 -2
- data/app/views/spotlight/searches/_form.html.erb +14 -2
- data/app/views/spotlight/searches/_group.html.erb +27 -0
- data/app/views/spotlight/searches/index.html.erb +58 -17
- data/app/views/spotlight/shared/_curation_sidebar.html.erb +3 -0
- data/app/views/spotlight/shared/_locale_picker.html.erb +1 -1
- data/app/views/spotlight/sir_trevor/blocks/_browse_group_categories_block.html.erb +45 -0
- data/app/views/spotlight/sir_trevor/blocks/_solr_documents_block.html.erb +8 -8
- data/app/views/spotlight/sir_trevor/blocks/_solr_documents_carousel_block.html.erb +7 -7
- data/app/views/spotlight/sir_trevor/blocks/_solr_documents_features_block.html.erb +9 -7
- data/app/views/spotlight/sir_trevor/blocks/_solr_documents_grid_block.html.erb +5 -5
- data/app/views/spotlight/sir_trevor/blocks/_uploaded_items_block.html.erb +4 -0
- data/app/views/spotlight/tags/_tag.html.erb +24 -0
- data/app/views/spotlight/tags/index.html.erb +12 -16
- data/app/views/spotlight/translations/_groups.html.erb +34 -0
- data/app/views/spotlight/translations/_import.html.erb +5 -5
- data/app/views/spotlight/translations/edit.html.erb +6 -0
- data/app/views/spotlight/translations/show.yaml.yamlbuilder +6 -0
- data/config/i18n-tasks.yml +6 -0
- data/config/locales/spotlight.ar.yml +11 -1
- data/config/locales/spotlight.en.yml +283 -87
- data/config/routes.rb +39 -1
- data/db/migrate/20210113092223_create_spotlight_groups.rb +23 -0
- data/db/migrate/20210122082032_create_job_trackers.rb +22 -0
- data/db/migrate/20210126123041_create_events.rb +15 -0
- data/db/migrate/20210305070001_remove_class_from_sirtrevor_image_blocks.rb +20 -0
- data/db/migrate/20210305171150_create_bulk_updates.rb +9 -0
- data/db/migrate/20210308090000_migrate_caption_values_for_title_key.rb +29 -0
- data/lib/generators/spotlight/install_generator.rb +5 -5
- data/lib/generators/spotlight/scaffold_resource_generator.rb +5 -13
- data/lib/generators/spotlight/templates/config/initializers/riiif.rb +7 -5
- data/lib/generators/spotlight/templates/config/initializers/spotlight_initializer.rb +1 -1
- data/lib/generators/spotlight/templates/solr/config/schema.xml +1 -1
- data/lib/migration/iiif.rb +3 -3
- data/lib/spotlight/engine.rb +26 -4
- data/lib/spotlight/version.rb +1 -1
- data/spec/controllers/spotlight/about_pages_controller_spec.rb +3 -3
- data/spec/controllers/spotlight/browse_controller_spec.rb +23 -6
- data/spec/controllers/spotlight/bulk_actions_controller_spec.rb +124 -0
- data/spec/controllers/spotlight/bulk_updates_controller_spec.rb +77 -0
- data/spec/controllers/spotlight/catalog_controller_spec.rb +15 -13
- data/spec/controllers/spotlight/contacts_controller_spec.rb +2 -2
- data/spec/controllers/spotlight/feature_pages_controller_spec.rb +11 -0
- data/spec/controllers/spotlight/featured_images_controller_spec.rb +3 -3
- data/spec/controllers/spotlight/groups_controller_spec.rb +103 -0
- data/spec/controllers/spotlight/home_pages_controller_spec.rb +1 -1
- data/spec/controllers/spotlight/job_trackers_controller_spec.rb +37 -0
- data/spec/controllers/spotlight/searches_controller_spec.rb +10 -3
- data/spec/controllers/spotlight/tags_controller_spec.rb +5 -1
- data/spec/controllers/spotlight/view_configurations_controller_spec.rb +1 -1
- data/spec/examples.txt +1501 -1410
- data/spec/factories/bulk_updates.rb +15 -0
- data/spec/factories/exhibits.rb +4 -0
- data/spec/factories/group.rb +17 -0
- data/spec/factories/job_trackers.rb +11 -0
- data/spec/factories/searches.rb +11 -1
- data/spec/factories/users.rb +27 -8
- data/spec/features/add_items_spec.rb +10 -5
- data/spec/features/browse_category_admin_spec.rb +37 -5
- data/spec/features/browse_category_navigation_spec.rb +44 -0
- data/spec/features/browse_category_spec.rb +2 -2
- data/spec/features/bulk_actions_spec.rb +72 -0
- data/spec/features/catalog_spec.rb +3 -2
- data/spec/features/dashboard_spec.rb +2 -2
- data/spec/features/edit_search_fields_spec.rb +2 -2
- data/spec/features/exhibits/edit_metadata_fields_spec.rb +1 -1
- data/spec/features/exhibits/translation_editing_spec.rb +55 -6
- data/spec/features/home_page_spec.rb +5 -5
- data/spec/features/import_exhibit_spec.rb +5 -1
- data/spec/features/item_admin_spec.rb +4 -4
- data/spec/features/javascript/about_page_admin_spec.rb +1 -1
- data/spec/features/javascript/block_controls_spec.rb +1 -1
- data/spec/features/javascript/blocks/browse_group_categories_block_spec.rb +64 -0
- data/spec/features/javascript/blocks/solr_documents_block_spec.rb +4 -4
- data/spec/features/javascript/blocks/uploaded_items_block_spec.rb +27 -1
- data/spec/features/javascript/browse_group_admin_spec.rb +45 -0
- data/spec/features/javascript/edit_in_place_spec.rb +3 -3
- data/spec/features/javascript/feature_page_admin_spec.rb +1 -1
- data/spec/features/javascript/reindex_monitor_spec.rb +1 -1
- data/spec/features/javascript/search_config_admin_spec.rb +1 -1
- data/spec/features/report_a_problem_spec.rb +1 -1
- data/spec/features/site_users_management_spec.rb +5 -5
- data/spec/fixtures/bulk-update-template.csv +57 -0
- data/spec/fixtures/updated-bulk-update-template-w-tags.csv +4 -0
- data/spec/fixtures/updated-bulk-update-template.csv +4 -0
- data/spec/helpers/spotlight/application_helper_spec.rb +5 -6
- data/spec/helpers/spotlight/crud_link_helpers_spec.rb +3 -3
- data/spec/helpers/spotlight/pages_helper_spec.rb +8 -15
- data/spec/helpers/spotlight/roles_helper_spec.rb +1 -1
- data/spec/i18n_spec.rb +1 -0
- data/spec/jobs/spotlight/add_tags_job_spec.rb +34 -0
- data/spec/jobs/spotlight/add_uploads_from_csv_spec.rb +4 -1
- data/spec/jobs/spotlight/change_visibility_job_spec.rb +30 -0
- data/spec/jobs/spotlight/process_bulk_updates_csv_job_spec.rb +78 -0
- data/spec/jobs/spotlight/reindex_exhibit_job_spec.rb +43 -0
- data/spec/jobs/spotlight/reindex_job_spec.rb +34 -60
- data/spec/jobs/spotlight/remove_tags_job_spec.rb +39 -0
- data/spec/lib/migration/iiif_spec.rb +1 -1
- data/spec/models/sir_trevor_rails/blocks/browse_group_categories_block_spec.rb +41 -0
- data/spec/models/spotlight/ability_spec.rb +27 -0
- data/spec/models/spotlight/background_job_progress_spec.rb +137 -0
- data/spec/models/spotlight/blacklight_configuration_spec.rb +22 -17
- data/spec/models/spotlight/browse_category_search_builder_spec.rb +49 -0
- data/spec/models/spotlight/exhibit_spec.rb +13 -59
- data/spec/models/spotlight/featured_image_spec.rb +1 -1
- data/spec/models/spotlight/group_spec.rb +19 -0
- data/spec/models/spotlight/main_navigation_spec.rb +1 -1
- data/spec/models/spotlight/resource_spec.rb +89 -87
- data/spec/models/spotlight/resources/iiif_harvester_spec.rb +9 -10
- data/spec/models/spotlight/role_spec.rb +1 -1
- data/spec/models/spotlight/search_spec.rb +30 -3
- data/spec/models/spotlight/solr_document/atomic_updates_spec.rb +10 -0
- data/spec/models/spotlight/solr_document_sidecar_spec.rb +1 -0
- data/spec/presenters/spotlight/iiif_manifest_presenter_spec.rb +1 -1
- data/spec/services/spotlight/bulk_updates_csv_template_service_spec.rb +26 -0
- data/spec/services/spotlight/etl/context_spec.rb +66 -0
- data/spec/services/spotlight/etl/executor_spec.rb +149 -0
- data/spec/services/spotlight/etl/pipeline_spec.rb +22 -0
- data/spec/services/spotlight/etl/solr_loader_spec.rb +76 -0
- data/spec/services/spotlight/etl/step_spec.rb +70 -0
- data/spec/services/spotlight/exhibit_import_export_service_spec.rb +48 -1
- data/spec/spec_helper.rb +3 -6
- data/spec/support/features/test_features_helpers.rb +15 -0
- data/spec/test_app_templates/Gemfile.extra +2 -0
- data/spec/test_app_templates/catalog_controller.rb +6 -3
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +2 -2
- data/spec/uploaders/spotlight/featured_image_uploader_spec.rb +2 -2
- data/spec/views/shared/_exhibit_navbar.html.erb_spec.rb +1 -1
- data/spec/views/spotlight/browse/index.html.erb_spec.rb +2 -0
- data/spec/views/spotlight/catalog/_edit_default.html.erb_spec.rb +1 -1
- data/spec/views/spotlight/dashboards/_analytics.html.erb_spec.rb +1 -1
- data/spec/views/spotlight/dashboards/_reindexing_activity.html.erb_spec.rb +30 -25
- data/spec/views/spotlight/job_trackers/show.html.erb_spec.rb +65 -0
- data/spec/views/spotlight/metadata_configurations/_metadata_field.html.erb_spec.rb +3 -4
- data/spec/views/spotlight/pages/show.html.erb_spec.rb +1 -0
- data/spec/views/spotlight/search_configurations/_facets.html.erb_spec.rb +1 -1
- data/spec/views/spotlight/sir_trevor/blocks/_browse_block.html.erb_spec.rb +1 -1
- data/spec/views/spotlight/sir_trevor/blocks/_iframe_block.html.erb_spec.rb +1 -1
- data/spec/views/spotlight/sir_trevor/blocks/_link_to_search_block.html.erb_spec.rb +1 -1
- data/spec/views/spotlight/sir_trevor/blocks/_rule_block.html.erb_spec.rb +1 -1
- data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_block.html.erb_spec.rb +8 -4
- data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_carousel_block.html.erb_spec.rb +7 -2
- data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_embed_block.html.erb_spec.rb +8 -5
- data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_features_block.html.erb_spec.rb +3 -2
- data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_grid_block.html.erb_spec.rb +9 -4
- data/spec/views/spotlight/tags/index.html.erb_spec.rb +5 -2
- data/vendor/assets/javascripts/tiny-slider.js +3218 -0
- data/vendor/assets/stylesheets/tiny-slider.css +1 -0
- metadata +471 -281
- data/app/assets/images/blacklight/add_circle.svg +0 -1
- data/app/assets/images/blacklight/custom_fullscreen.svg +0 -1
- data/app/assets/images/blacklight/remove_circle.svg +0 -1
- data/app/assets/images/blacklight/resize_small.svg +0 -1
- data/app/models/concerns/spotlight/resources/open_graph.rb +0 -36
- data/app/models/spotlight/reindex_progress.rb +0 -78
- data/app/models/spotlight/reindexing_log_entry.rb +0 -42
- data/app/services/spotlight/resources/iiif_builder.rb +0 -19
- data/app/services/spotlight/solr_document_builder.rb +0 -77
- data/app/services/spotlight/upload_solr_document_builder.rb +0 -57
- data/spec/factories/reindexing_log_entries.rb +0 -54
- data/spec/models/spotlight/reindex_progress_spec.rb +0 -122
- data/spec/models/spotlight/reindexing_log_entry_spec.rb +0 -129
- data/spec/models/spotlight/resources/open_graph_spec.rb +0 -65
- data/spec/services/spotlight/solr_document_builder_spec.rb +0 -66
- data/vendor/assets/javascripts/handlebars-v1.3.0.js +0 -2746
@@ -27,7 +27,7 @@ describe 'Report a Problem', type: :feature do
|
|
27
27
|
|
28
28
|
click_on 'Feedback'
|
29
29
|
|
30
|
-
expect(page).to have_css('h2', text: 'Contact
|
30
|
+
expect(page).to have_css('h2', text: 'Contact us', visible: true)
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'accepts a problem report', js: true do
|
@@ -42,15 +42,15 @@ describe 'Site users management', js: true do
|
|
42
42
|
|
43
43
|
click_button 'Add role'
|
44
44
|
|
45
|
-
expect(page).to have_css(
|
45
|
+
expect(page).to have_css('td', text: 'not-an-admin@example.com')
|
46
46
|
|
47
|
-
expect(page).to have_css(
|
47
|
+
expect(page).to have_css('a', text: 'Remove from admin role', count: 2)
|
48
48
|
within(all('table tbody tr:not([data-edit-for])').last) do
|
49
49
|
click_link 'Remove from admin role'
|
50
50
|
end
|
51
51
|
|
52
52
|
expect(page).to have_content 'User removed from site adminstrator role'
|
53
|
-
expect(page).to have_css(
|
53
|
+
expect(page).to have_css('a', text: 'Remove from admin role', count: 0)
|
54
54
|
end
|
55
55
|
|
56
56
|
it 'sends an invitation email to users who do not exist' do
|
@@ -68,7 +68,7 @@ describe 'Site users management', js: true do
|
|
68
68
|
click_link 'Add new administrator'
|
69
69
|
|
70
70
|
expect(page).to have_css('td', text: user.email)
|
71
|
-
# There
|
72
|
-
expect(page).to have_css(
|
71
|
+
# There is just our admin user so no button
|
72
|
+
expect(page).to have_css('a', text: 'Remove from admin role', count: 0)
|
73
73
|
end
|
74
74
|
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
Item ID,Item Title,Visibility
|
2
|
+
bm387cy2596,L'AMERIQVE,true
|
3
|
+
cz507zk0531,NEW MEXICO,true
|
4
|
+
dq287tq6352,L'AMERIQUE,false
|
5
|
+
ds525vw8509,"Mappa mondo and Figura prima del capitolo IV., ossia della divisione della terra",true
|
6
|
+
dx157dh4345,KAART der REYZE van drie Schepen naar het ZUYDLAND in de Jaaren 1721 en 1722,true
|
7
|
+
dy396mt9665,a Map of the Middle Part of AMERICA,true
|
8
|
+
fh912bx9878,[Americas],true
|
9
|
+
gk446cj2442,[World map],true
|
10
|
+
gt736xf9712,HEMISPHERE OCCIDENTAL DU GLOBE TERRESTRE contenant L'AMERIQUE SEPTENT.LE et L'AMERIQUE M.LE et P.tie des TERRES ARCTIQUES et ANTARCTIQUES Subdivisées en leurs Regions.,true
|
11
|
+
gv664gb7394,SITVS TERRÆ CIRCVLIS COELESTIBVS CIRCVNDATÆ.,true
|
12
|
+
gw298sq0504,"PLANISPHÆRIVM BRAHEVM, Sive Structura MVNDI TOTIVS, EX HYPOTHESI TYCHONIS BRAHEI IN PLANO DELINEATA. [Amstelodami : Apud Joannem Janssonium, 1660].",true
|
13
|
+
jp266yb7109,AMERICA,false
|
14
|
+
jr961xz9944,AMERICA SEPTENTRIONALIS,true
|
15
|
+
jy409qg0248,Novissima et Accuratissima TOTIUS AMERICÆ DESCRIPTIO.,true
|
16
|
+
kw406zk5778,[America],true
|
17
|
+
kw703rh2327,"Mappe-monde pour connoitre les progŕes & les conquestes les plus remarquables des Provinces-Vnies, ainsy que celles des Compagnies d'Orient et d'Occident et les païs quelles possédent dans l'un et dans l'autre hemisphere and Atlas historique, ou, nouvelle introduction à l’histoire, à la chronologie & à la géographie ancienne & moderne",true
|
18
|
+
mw236cd6430,"AMERIQUE SEPTENTRIONALE divisée en ses principales parties, ou sont distingués les vns des autres LES ESTATS suivant qu'ils appartiennent presentemet aux FRANÇOIS, CASTILLANS, ANGLOIS, SUEDOIS, DANOIS, HOLLANDOIS. Tirée des Relations de toutes ces Nations Par le Sr. Sanson, Geographe Ordinaire du Roy",true
|
19
|
+
np731wc7689,L'AMERIQUE | Suivant les dernieres | Observations de l'Acade= | mie Royale des Sciences Seventh of 18 States,true
|
20
|
+
nq874ts4848,"Introduction a la Geographie Avec une Description Historique Sur Touttes les parties de la Terre
|
21
|
+
Title page",true
|
22
|
+
nr766vt0518,GEOGRAPHISCHE UNIVERSAL - ZEIG UND SCHLAG-UHR : WEERELD-BEELDIGH WYS EN SLAG WERK,true
|
23
|
+
nz081wv9348,AMERIQUE SEPTENTRIONALE Par N. Sanson Geographe Ord.re du Roy. Reveue et changée en plusieurs endroits suivant les Memoires les plus recents augmentée et corrigée en cette seconde edition,true
|
24
|
+
pm812zf5263,AMERICÆ,true
|
25
|
+
ps921pn8250,PLANISPHERE URANO-GEOGRAPHIQUE c'estadire LES SPHERES CELESTE et TERRESTRE mises en plan.,false
|
26
|
+
pt603pv6417,"A Map of the WORLD with the Ships DUKE & DUTCHESS Tract Round it, from 1708 to 1711. Second of 2 States",true
|
27
|
+
qb677kc3995,L'AMERIQVE autrement Le NOVVEAV MONDE et INDES OCCIDENTALES,true
|
28
|
+
qt469cf8909,"Pascaart vertoonende de Zeecusten van Chili, Peru, Hispania, Nova, Nova Granada, en California.",true
|
29
|
+
rc221bv1386,[Armenian map of the world],true
|
30
|
+
rj993fh5469,"A New Map of the World Shewing the Course of Sr. Francis Drake, William Shouten and Capt. William Dampiers Voyages Round it.",true
|
31
|
+
rx614sw9194,AMERICÆ nova discriptio.,true
|
32
|
+
rz043dh7915,MAR DEL ZUR HISPANIS MARE PACIFICUM.,true
|
33
|
+
rz818vx8201,'t Noorder deel van WEST-INDIEN,true
|
34
|
+
sb904gg2771,Planisphaerium terrestre cum utroque coelesti hemisphaerio ... = Vlakke ared-kloot met het beide hemelsch half-rond,true
|
35
|
+
sd345mz1879,A MAP of AMERICA from the latest and best Observations,true
|
36
|
+
sn161bw2027,"Pas-caart van Zuyd-Zee, tusschen California en ilhas de Ladrones and La Atlas del mundo o el mundo aguado",true
|
37
|
+
sn343fc0807,AMERICQVE SEPTENTRIONALE,true
|
38
|
+
sp821gh4463,[World],true
|
39
|
+
sw106rc9347,AMERIQUE SEPTENTRIONALE,true
|
40
|
+
sx619yv5558,"Recentissima NOVI ORBIS, Sive AMERICÆ SEPTENTRIONALIS et MERIDIONALIS TABULA",true
|
41
|
+
tg729zw9405,NOVA TOTIVS AMERICÆ DESCRIPTIO.,true
|
42
|
+
vb000vb1451,AMERICA,true
|
43
|
+
vw323gf4937,AMERICA with those known parts in that unknowne worlde both people and manner of buildings Discribed and inlarged by I.S.Ano.1626,false
|
44
|
+
vy180gj7659,L'AMERIQUE Suivant les dernieres observations de l'Acad. Royale des Sciences.,true
|
45
|
+
wb806ct0449,A Generall Chart of the | SOUTH SEA | from the River of Plate to | Dampiers Streights on ye Coast | of NEW GUINEA,true
|
46
|
+
wt855xd4818,CONTINENT ARCTIQVE,true
|
47
|
+
xd327cm9378,"Mapa mundi, con los meridianos, y paralelos, iguales como los del globo tere- y arreglado a las mejores, y ultimas relaciones",true
|
48
|
+
yh941cp6284,Orbis terrarum tabula recens emendata et in lucem edita,true
|
49
|
+
ym733yc1437,"[Maps of the world] and A new and universal dictionary of arts and sciences: ... With an introductory preface, ... And illustrated with a great number of copper-plates, engraven by the best hands",true
|
50
|
+
yn959jw9550,A New Map of North AMERICA According to the Newest Observations.,true
|
51
|
+
ys360dp2191,TYPUS SELENOGRAPHICUS LUNÆ PHASES ET ASPECTUS VARIOS ADUMBRANS.,true
|
52
|
+
zn001wm6450,L'AMERIQVE autrement Le NOVVEAV MONDE et INDES OCCIDENTALES,true
|
53
|
+
zn845sh3664,PLANISPHERE REPRESENTANT TOUTE L'ETENDUE DU MONDE. DANS L'ORDRE QU'ON A SUIVI DANS CE LIVRE. NB. LES CHIFFRES SE RAPORTENT AUX CARTES ET AUX PAGES DES DESCRIPTIONS.,true
|
54
|
+
zq083qg2931,[Pacific Ocean],true
|
55
|
+
zr014mj0786,A New and Exact Map of ASIA According to the Best Observations,true
|
56
|
+
zs247rr8237,"AMERIQUE SEPTENTRIONALE divisée en ses principales parties, ou sont distingués les vns des autres LES ESTATS suivant qu'ils appartiennent presentemet aux FRANÇOIS, CASTILLANS, ANGLOIS, SUEDOIS, DANOIS, HOLLANDOIS. Tirée des Relations de toutes ces Nations Par le Sr. Sanson, Geographe Ordinaire du Roy",true
|
57
|
+
zv316zr9542,AMERIQUE SEPTENTRIONALE,false
|
@@ -66,7 +66,6 @@ describe Spotlight::ApplicationHelper, type: :helper do
|
|
66
66
|
end
|
67
67
|
|
68
68
|
it 'is a url for a search with the given tag facet' do
|
69
|
-
allow(SolrDocument).to receive_messages(solr_field_for_tagger: :exhibit_tags)
|
70
69
|
expected = spotlight.search_exhibit_catalog_path(exhibit_id: helper.current_exhibit, f: { exhibit_tags: ['tag_value'] })
|
71
70
|
expect(helper.url_to_tag_facet('tag_value')).to eq expected
|
72
71
|
end
|
@@ -156,8 +155,8 @@ describe Spotlight::ApplicationHelper, type: :helper do
|
|
156
155
|
end
|
157
156
|
|
158
157
|
it 'excludes view fields that are never visible (e.g. atom, rss)' do
|
159
|
-
blacklight_config.view.a
|
160
|
-
blacklight_config.view.b
|
158
|
+
blacklight_config.view.a(if: true)
|
159
|
+
blacklight_config.view.b(if: false)
|
161
160
|
|
162
161
|
expect(helper.available_view_fields).to include :a
|
163
162
|
expect(helper.available_view_fields).not_to include :b
|
@@ -173,9 +172,9 @@ describe Spotlight::ApplicationHelper, type: :helper do
|
|
173
172
|
# clean out the default views
|
174
173
|
blacklight_config.view.reject! { |_| true }
|
175
174
|
|
176
|
-
blacklight_config.view.a
|
177
|
-
blacklight_config.view.b
|
178
|
-
blacklight_config.view.c
|
175
|
+
blacklight_config.view.a!
|
176
|
+
blacklight_config.view.b!
|
177
|
+
blacklight_config.view.c!
|
179
178
|
allow(helper).to receive(:blacklight_config).and_return(blacklight_config)
|
180
179
|
end
|
181
180
|
|
@@ -104,7 +104,7 @@ describe Spotlight::CrudLinkHelpers, type: :helper do
|
|
104
104
|
describe '#action_default_value' do
|
105
105
|
it 'attempts i18n lookups for models' do
|
106
106
|
expect(I18n).to receive(:t).with(:'helpers.action.spotlight/feature_page.edit',
|
107
|
-
model: some_model.class.model_name.human,
|
107
|
+
model: some_model.class.model_name.human.downcase,
|
108
108
|
default: [:'helpers.action.edit', 'Edit Feature page'])
|
109
109
|
expect(helper.send(:action_default_value, some_model))
|
110
110
|
end
|
@@ -112,14 +112,14 @@ describe Spotlight::CrudLinkHelpers, type: :helper do
|
|
112
112
|
it 'attempts i18n lookups for unpersisted models' do
|
113
113
|
some_model = Spotlight::FeaturePage.new
|
114
114
|
expect(I18n).to receive(:t).with(:'helpers.action.spotlight/feature_page.create',
|
115
|
-
model: some_model.class.model_name.human,
|
115
|
+
model: some_model.class.model_name.human.downcase,
|
116
116
|
default: [:'helpers.action.create', 'Create Feature page'])
|
117
117
|
expect(helper.send(:action_default_value, some_model))
|
118
118
|
end
|
119
119
|
|
120
120
|
it 'attempts i18n lookups for models with an explicit action' do
|
121
121
|
expect(I18n).to receive(:t).with(:'helpers.action.spotlight/feature_page.custom_action',
|
122
|
-
model: some_model.class.model_name.human,
|
122
|
+
model: some_model.class.model_name.human.downcase,
|
123
123
|
default: [:'helpers.action.custom_action', 'Custom action Feature page'])
|
124
124
|
expect(helper.send(:action_default_value, some_model, :custom_action))
|
125
125
|
end
|
@@ -12,21 +12,6 @@ describe Spotlight::PagesHelper, type: :helper do
|
|
12
12
|
allow(helper).to receive_messages(blacklight_config: blacklight_config)
|
13
13
|
end
|
14
14
|
|
15
|
-
describe 'available_index_fields' do
|
16
|
-
before do
|
17
|
-
blacklight_config.index.title_field = :title_field
|
18
|
-
blacklight_config.add_index_field 'x', label: 'X'
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'lists the configured index fields' do
|
22
|
-
expect(helper.available_index_fields).to include key: 'x', label: 'X'
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'adds the title field if necessary' do
|
26
|
-
expect(helper.available_index_fields).to include key: :title_field, label: 'Title'
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
15
|
describe 'disable_save_pages_button?' do
|
31
16
|
it 'returns true if there are no pages and we are on the about pages page' do
|
32
17
|
expect(helper).to receive(:page_collection_name).and_return('about_pages')
|
@@ -106,6 +91,14 @@ describe Spotlight::PagesHelper, type: :helper do
|
|
106
91
|
it 'handles nil input' do
|
107
92
|
expect(helper.sir_trevor_markdown(nil)).to be_blank
|
108
93
|
end
|
94
|
+
|
95
|
+
it 'retains paragraphs' do
|
96
|
+
expect(helper.sir_trevor_markdown('<p>First Line</p><p>Second Line</p>').chomp).to match(%r{<p>First Line</p>\s*<p>Second Line</p>})
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'replaces line breaks with paragraphs' do
|
100
|
+
expect(helper.sir_trevor_markdown('First Line<br>Second Line').chomp).to match(%r{<p>First Line</p>\s*<p>Second Line</p>})
|
101
|
+
end
|
109
102
|
end
|
110
103
|
|
111
104
|
describe '#content_editor_class' do
|
@@ -2,6 +2,6 @@
|
|
2
2
|
|
3
3
|
describe Spotlight::RolesHelper, type: :helper do
|
4
4
|
it 'is a list of options' do
|
5
|
-
expect(helper.roles_for_select).to eq('Admin' => 'admin', 'Curator' => 'curator')
|
5
|
+
expect(helper.roles_for_select).to eq('Admin' => 'admin', 'Curator' => 'curator', 'Viewer' => 'viewer')
|
6
6
|
end
|
7
7
|
end
|
data/spec/i18n_spec.rb
CHANGED
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
describe Spotlight::AddTagsJob do
|
4
|
+
subject { described_class.new(solr_params: solr_params, exhibit: exhibit, tags: tags) }
|
5
|
+
|
6
|
+
let(:solr_params) { { q: 'map' } }
|
7
|
+
let(:exhibit) { FactoryBot.create(:exhibit) }
|
8
|
+
let(:tags) { 'hello,world' }
|
9
|
+
|
10
|
+
before do
|
11
|
+
allow(Spotlight::Engine.config).to receive_messages(bulk_actions_batch_size: 5)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'adds tags to SolrDocumentSidecar objects' do
|
15
|
+
subject.perform_now
|
16
|
+
response = exhibit.blacklight_config.repository.search(solr_params.merge('rows' => 999_999_999))
|
17
|
+
expect(response.total).to eq 55
|
18
|
+
expect(Spotlight::JobTracker.last).to have_attributes(
|
19
|
+
status: 'completed',
|
20
|
+
total: 55,
|
21
|
+
progress: 55,
|
22
|
+
job_class: 'Spotlight::AddTagsJob'
|
23
|
+
)
|
24
|
+
response.documents.each do |document|
|
25
|
+
expect(document.sidecar(exhibit).all_tags_list).to include('hello', 'world')
|
26
|
+
exhibit.tag(document.sidecar(exhibit), with: [], on: :tags)
|
27
|
+
end
|
28
|
+
exhibit.owned_tags.destroy_all
|
29
|
+
response.documents.each do |document|
|
30
|
+
document.sidecar(exhibit).destroy
|
31
|
+
document.reindex
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -48,7 +48,10 @@ describe Spotlight::AddUploadsFromCsv do
|
|
48
48
|
expect(Spotlight::IndexingCompleteMailer).to have_received(:documents_indexed).with(
|
49
49
|
data, exhibit, user,
|
50
50
|
indexed_count: 1,
|
51
|
-
errors: {
|
51
|
+
errors: {
|
52
|
+
1 => array_including(match(Regexp.union(/relative URI: x/, /URI scheme '' not in whitelist:/))),
|
53
|
+
2 => array_including(match(/Upload is invalid/))
|
54
|
+
}
|
52
55
|
)
|
53
56
|
end
|
54
57
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
describe Spotlight::ChangeVisibilityJob do
|
4
|
+
subject { described_class.new(solr_params: solr_params, exhibit: exhibit, visibility: visibility) }
|
5
|
+
|
6
|
+
let(:solr_params) { { q: 'map' } }
|
7
|
+
let(:exhibit) { FactoryBot.create(:exhibit) }
|
8
|
+
let(:visibility) { 'private' }
|
9
|
+
|
10
|
+
before do
|
11
|
+
allow(Spotlight::Engine.config).to receive_messages(bulk_actions_batch_size: 5)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'sets the items based off of the visibility' do
|
15
|
+
subject.perform_now
|
16
|
+
response = exhibit.blacklight_config.repository.search(solr_params.merge('rows' => 999_999_999))
|
17
|
+
expect(response.total).to eq 55
|
18
|
+
expect(Spotlight::JobTracker.last).to have_attributes(
|
19
|
+
status: 'completed',
|
20
|
+
total: 55,
|
21
|
+
progress: 55,
|
22
|
+
job_class: 'Spotlight::ChangeVisibilityJob'
|
23
|
+
)
|
24
|
+
response.documents.each do |document|
|
25
|
+
expect(document.private?(exhibit)).to be true
|
26
|
+
document.make_public!(exhibit)
|
27
|
+
document.reindex
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
def tag_names(exhibit, id)
|
4
|
+
exhibit.blacklight_config.repository.find(id).documents.first.sidecar(exhibit).taggings.includes(:tag).map { |tagging| tagging&.tag&.name }
|
5
|
+
end
|
6
|
+
|
7
|
+
describe Spotlight::ProcessBulkUpdatesCsvJob do
|
8
|
+
subject { described_class.new(exhibit, bulk_update) }
|
9
|
+
|
10
|
+
let(:exhibit) { FactoryBot.create(:exhibit) }
|
11
|
+
|
12
|
+
describe 'visibility' do
|
13
|
+
let(:bulk_update) { FactoryBot.create(:bulk_update, exhibit: exhibit) }
|
14
|
+
|
15
|
+
it 'is updated' do
|
16
|
+
allow(SolrDocument.index.connection).to receive(:update).and_call_original
|
17
|
+
expect(exhibit.blacklight_config.repository.find('dq287tq6352').documents.first).not_to be_private(exhibit)
|
18
|
+
|
19
|
+
subject.perform_now
|
20
|
+
|
21
|
+
expect(exhibit.blacklight_config.repository.find('dq287tq6352').documents.first).to be_private(exhibit)
|
22
|
+
expect(SolrDocument.index.connection).to have_received(:update)
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'with a row that does not change visibility' do
|
26
|
+
before do
|
27
|
+
sidecar = exhibit.solr_document_sidecars.find_or_create_by(document_type: 'SolrDocument', document_id: 'dq287tq6352')
|
28
|
+
sidecar.private!
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'does not update solr' do
|
32
|
+
allow(SolrDocument.index.connection).to receive(:update)
|
33
|
+
|
34
|
+
subject.perform_now
|
35
|
+
|
36
|
+
expect(SolrDocument.index.connection).not_to have_received(:update)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe 'tags' do
|
42
|
+
let(:bulk_update) { FactoryBot.create(:tagged_bulk_update, exhibit: exhibit) }
|
43
|
+
|
44
|
+
before do
|
45
|
+
document = exhibit.blacklight_config.repository.find('cz507zk0531').documents.first
|
46
|
+
exhibit.tag(document.sidecar(exhibit), with: 'CSV Tag1', on: :tags)
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'are added/removed' do
|
50
|
+
allow(SolrDocument.index.connection).to receive(:update).and_call_original
|
51
|
+
expect(tag_names(exhibit, 'bm387cy2596')).to be_empty
|
52
|
+
expect(tag_names(exhibit, 'cz507zk0531')).to eq(['CSV Tag1'])
|
53
|
+
expect(tag_names(exhibit, 'dq287tq6352')).to be_empty
|
54
|
+
subject.perform_now
|
55
|
+
expect(tag_names(exhibit, 'bm387cy2596')).to eq(['CSV Tag1', 'CSV Tag2'])
|
56
|
+
expect(tag_names(exhibit, 'cz507zk0531')).to eq(['CSV Tag2'])
|
57
|
+
expect(tag_names(exhibit, 'dq287tq6352')).to eq(['CSV Tag1', 'CSV Tag2'])
|
58
|
+
|
59
|
+
# 3 updates plus the final commit
|
60
|
+
expect(SolrDocument.index.connection).to have_received(:update).exactly(4).times
|
61
|
+
end
|
62
|
+
|
63
|
+
context 'with a row that does not change visibility' do
|
64
|
+
before do
|
65
|
+
# set up the documents to match what's the in the spreadsheet already
|
66
|
+
subject.perform_now
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'does not update solr' do
|
70
|
+
allow(SolrDocument.index.connection).to receive(:update)
|
71
|
+
|
72
|
+
subject.perform_now
|
73
|
+
|
74
|
+
expect(SolrDocument.index.connection).not_to have_received(:update)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
describe Spotlight::ReindexExhibitJob do
|
4
|
+
let(:exhibit) { FactoryBot.create(:exhibit) }
|
5
|
+
|
6
|
+
before do
|
7
|
+
FactoryBot.create_list(:resource, 10, exhibit: exhibit)
|
8
|
+
allow(Spotlight::ReindexJob).to receive(:perform_now)
|
9
|
+
allow(Spotlight::ReindexJob).to receive(:perform_later)
|
10
|
+
end
|
11
|
+
|
12
|
+
context 'with a single batch' do
|
13
|
+
it 'runs the index job inline' do
|
14
|
+
described_class.perform_now(exhibit, batch_count: 1)
|
15
|
+
|
16
|
+
expect(Spotlight::ReindexJob).to have_received(:perform_now).once.with(exhibit, anything)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'with a fixed batch count' do
|
21
|
+
it 'enqueues that number of batches' do
|
22
|
+
described_class.perform_now(exhibit, batch_count: 2)
|
23
|
+
|
24
|
+
expect(Spotlight::ReindexJob).to have_received(:perform_later).twice.with(exhibit, hash_including(:start, :finish))
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'with a dynamically generated batch count' do
|
29
|
+
it 'enqueues the right number of batches' do
|
30
|
+
described_class.perform_now(exhibit, batch_count: nil, batch_size: 2)
|
31
|
+
|
32
|
+
expect(Spotlight::ReindexJob).to have_received(:perform_later).exactly(5).times.with(exhibit, hash_including(:start, :finish))
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'with a dynamically generated batch size' do
|
37
|
+
it 'figues out that number of batches' do
|
38
|
+
described_class.perform_now(exhibit, batch_count: nil, batch_size: nil)
|
39
|
+
|
40
|
+
expect(Spotlight::ReindexJob).to have_received(:perform_later).exactly(3).times.with(exhibit, hash_including(:start, :finish))
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -4,67 +4,13 @@ describe Spotlight::ReindexJob do
|
|
4
4
|
include ActiveJob::TestHelper
|
5
5
|
|
6
6
|
let(:exhibit) { FactoryBot.create(:exhibit) }
|
7
|
-
let(:resource) { FactoryBot.create(:resource) }
|
7
|
+
let(:resource) { FactoryBot.create(:resource, exhibit: exhibit) }
|
8
8
|
let(:user) { FactoryBot.create(:user) }
|
9
|
-
let(:log_entry) { Spotlight::ReindexingLogEntry.create(exhibit: exhibit, user: user) }
|
10
9
|
|
11
10
|
before do
|
12
|
-
ActiveJob::Base.queue_adapter = :test
|
13
11
|
allow_any_instance_of(Spotlight::Resource).to receive(:reindex)
|
14
12
|
end
|
15
13
|
|
16
|
-
context 'with an exhibit' do
|
17
|
-
subject { described_class.new(exhibit) }
|
18
|
-
|
19
|
-
before do
|
20
|
-
exhibit.resources << resource
|
21
|
-
exhibit.save
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'attempts to reindex every resource in the exhibit' do
|
25
|
-
# ActiveJob will reload the collection, so we go through a little trouble:
|
26
|
-
expect_any_instance_of(Spotlight::Resource).to receive(:reindex) do |thingy|
|
27
|
-
expect(exhibit.resources).to include thingy
|
28
|
-
end
|
29
|
-
|
30
|
-
subject.perform_now
|
31
|
-
end
|
32
|
-
|
33
|
-
context 'with a log_entry' do
|
34
|
-
subject { described_class.new(exhibit, log_entry) }
|
35
|
-
|
36
|
-
it 'marks the log entry as started' do
|
37
|
-
expect(log_entry).to receive(:in_progress!)
|
38
|
-
subject.perform_now
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'marks the log entry as successful if there is no error' do
|
42
|
-
expect(log_entry).to receive(:succeeded!)
|
43
|
-
subject.perform_now
|
44
|
-
end
|
45
|
-
|
46
|
-
it 'marks the log entry as failed if there is an error' do
|
47
|
-
unexpected_error = StandardError.new
|
48
|
-
# it'd be more realistic to raise on resource#reindex, but that's already stubbed above, so this'll have to do
|
49
|
-
expect(subject).to receive(:perform).with(exhibit, log_entry).and_raise unexpected_error
|
50
|
-
expect(log_entry).to receive(:failed!)
|
51
|
-
expect { subject.perform_now }.to raise_error unexpected_error
|
52
|
-
end
|
53
|
-
|
54
|
-
it 'updates the items_reindexed_estimate field on the log entry' do
|
55
|
-
expect(log_entry).to receive(:update).with(items_reindexed_estimate: 1)
|
56
|
-
subject.perform_now
|
57
|
-
end
|
58
|
-
|
59
|
-
it 'passes log_entry to the resource.reindex call' do
|
60
|
-
# ActiveJob will reload the collection, so we go through a little trouble:
|
61
|
-
expect_any_instance_of(Spotlight::Resource).to receive(:reindex).with(log_entry).exactly(:once)
|
62
|
-
# expect(resource).to receive(:reindex).with(log_entry)
|
63
|
-
subject.perform_now
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
14
|
context 'with a resource' do
|
69
15
|
subject { described_class.new(resource) }
|
70
16
|
|
@@ -72,34 +18,62 @@ describe Spotlight::ReindexJob do
|
|
72
18
|
expect(resource).to receive(:reindex)
|
73
19
|
subject.perform_now
|
74
20
|
end
|
21
|
+
|
22
|
+
it 'adds some job tracking events' do
|
23
|
+
expect { subject.perform_now }.to change(Spotlight::Event, :count).by(1)
|
24
|
+
end
|
75
25
|
end
|
76
26
|
|
77
27
|
describe 'validity' do
|
78
|
-
subject { described_class.new(resource,
|
28
|
+
subject { described_class.new(resource, 'validity_token' => 'xyz') }
|
79
29
|
|
80
30
|
let(:mock_checker) { instance_double(Spotlight::ValidityChecker) }
|
81
31
|
|
82
32
|
before do
|
83
33
|
allow(described_class).to receive(:validity_checker).and_return(mock_checker)
|
84
|
-
allow(mock_checker).to receive(:mint).with(
|
34
|
+
allow(mock_checker).to receive(:mint).with(anything).and_return('xyz')
|
85
35
|
end
|
86
36
|
|
87
37
|
it 'mints a new validity token' do
|
88
|
-
expect { described_class.perform_later(resource) }.to have_enqueued_job(described_class).with(resource,
|
38
|
+
expect { described_class.perform_later(resource) }.to have_enqueued_job(described_class).with(resource, 'validity_token' => 'xyz')
|
89
39
|
end
|
90
40
|
|
91
41
|
it 'does nothing if the token is no longer valid' do
|
92
|
-
allow(mock_checker).to receive(:check).with(
|
42
|
+
allow(mock_checker).to receive(:check).with(subject, validity_token: 'xyz').and_return(false)
|
93
43
|
expect(resource).not_to receive(:reindex)
|
94
44
|
|
95
45
|
subject.perform_now
|
96
46
|
end
|
97
47
|
|
98
48
|
it 'indexes the resource if the token is valid' do
|
99
|
-
allow(mock_checker).to receive(:check).with(
|
49
|
+
allow(mock_checker).to receive(:check).with(subject, validity_token: 'xyz').and_return(true)
|
100
50
|
expect(resource).to receive(:reindex)
|
101
51
|
|
102
52
|
subject.perform_now
|
103
53
|
end
|
104
54
|
end
|
55
|
+
|
56
|
+
context 'with start and finish' do
|
57
|
+
it 'indexes the resources within that page' do
|
58
|
+
count = 0
|
59
|
+
allow_any_instance_of(Spotlight::Resource).to receive(:reindex) do
|
60
|
+
count += 1
|
61
|
+
end
|
62
|
+
|
63
|
+
described_class.perform_now(exhibit, start: 0, finish: resource.id)
|
64
|
+
|
65
|
+
expect(count).to eq 1
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'does not index resources off that page' do
|
69
|
+
count = 0
|
70
|
+
allow_any_instance_of(Spotlight::Resource).to receive(:reindex) do
|
71
|
+
count += 1
|
72
|
+
end
|
73
|
+
|
74
|
+
described_class.perform_now(exhibit, start: resource.id + 1, finish: resource.id + 500)
|
75
|
+
|
76
|
+
expect(count).to eq 0
|
77
|
+
end
|
78
|
+
end
|
105
79
|
end
|