geoblacklight 5.0.2 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +15 -0
- data/.github/workflows/ruby.yml +11 -6
- data/app/assets/stylesheets/geoblacklight/modules/item.scss +5 -1
- data/app/components/blacklight/icons/circle_info_solid_component.rb +1 -1
- data/app/components/blacklight/icons/fire_solid_component.rb +1 -1
- data/app/components/blacklight/icons/lightbulb_solid_component.rb +1 -1
- data/app/components/blacklight/icons/triangle_exclamation_solid_component.rb +1 -1
- data/app/components/geoblacklight/arcgis_component.html.erb +1 -1
- data/app/components/geoblacklight/arcgis_component.rb +1 -1
- data/app/components/geoblacklight/attribute_table_component.rb +1 -1
- data/app/components/geoblacklight/data_dictionary_download_component.rb +1 -1
- data/app/components/geoblacklight/display_note_component.rb +2 -2
- data/app/components/geoblacklight/document/sidebar_component.html.erb +5 -5
- data/app/components/geoblacklight/document/sidebar_component.rb +15 -0
- data/app/components/geoblacklight/download_links_component.rb +5 -1
- data/app/components/geoblacklight/header_icons_component.rb +4 -4
- data/app/components/geoblacklight/homepage_feature_facet_component.html.erb +1 -1
- data/app/components/geoblacklight/homepage_feature_facet_component.rb +1 -1
- data/app/components/geoblacklight/iiif_drag_drop_component.html.erb +2 -2
- data/app/components/geoblacklight/iiif_drag_drop_component.rb +1 -1
- data/app/components/geoblacklight/index_map_inspect_component.rb +1 -1
- data/app/components/geoblacklight/index_map_legend_component.rb +1 -1
- data/app/components/geoblacklight/item_map_viewer_component.html.erb +58 -0
- data/app/components/geoblacklight/item_map_viewer_component.rb +24 -13
- data/app/components/geoblacklight/location_leaflet_map_component.rb +1 -1
- data/app/components/geoblacklight/login_link_component.rb +1 -1
- data/app/components/geoblacklight/relations_component.html.erb +1 -1
- data/app/components/geoblacklight/relations_component.rb +1 -1
- data/app/components/geoblacklight/static_map_component.rb +1 -4
- data/app/components/geoblacklight/viewer_help_text_component.rb +2 -2
- data/app/components/geoblacklight/web_services_component.rb +1 -1
- data/app/components/geoblacklight/web_services_default_component.html.erb +1 -1
- data/app/components/geoblacklight/web_services_default_component.rb +1 -1
- data/app/components/geoblacklight/web_services_link_component.rb +1 -1
- data/app/components/geoblacklight/web_services_wfs_component.rb +1 -1
- data/app/components/geoblacklight/web_services_wms_component.rb +1 -1
- data/app/controllers/relation_controller.rb +1 -1
- data/app/helpers/geoblacklight_helper.rb +0 -4
- data/app/javascript/geoblacklight/controllers/downloads_controller.js +2 -2
- data/app/javascript/geoblacklight/core.js +0 -2
- data/app/javascript/geoblacklight/index.js +0 -2
- data/config/locales/geoblacklight.en.yml +1 -0
- data/lib/generators/geoblacklight/assets/importmap_generator.rb +3 -15
- data/lib/generators/geoblacklight/assets/vite_generator.rb +6 -16
- data/lib/generators/geoblacklight/assets_generator.rb +15 -0
- data/lib/generators/geoblacklight/templates/settings.yml +1 -1
- data/lib/geoblacklight/download/geojson_download.rb +1 -1
- data/lib/geoblacklight/engine.rb +1 -1
- data/lib/geoblacklight/version.rb +1 -1
- data/lib/tasks/geoblacklight.rake +15 -23
- data/package.json +6 -9
- data/solr/conf/solrconfig.xml +1 -1
- data/spec/components/blacklight/icons/triangle_exclamation_solid_component_spec.rb +1 -1
- data/spec/components/geoblacklight/document_component_spec.rb +1 -1
- data/spec/components/geoblacklight/download_links_component_spec.rb +16 -0
- data/spec/components/geoblacklight/item_map_viewer_component_spec.rb +1 -1
- data/spec/features/configurable_basemap_spec.rb +7 -4
- data/spec/features/full_screen_control_spec.rb +2 -0
- data/spec/features/home_page_spec.rb +1 -6
- data/spec/features/index_view_spec.rb +21 -21
- data/spec/features/layer_inspection_spec.rb +1 -0
- data/spec/features/relations_spec.rb +9 -9
- data/spec/features/search_spec.rb +3 -3
- data/spec/features/tms_spec.rb +2 -2
- data/spec/features/xyz_spec.rb +2 -2
- data/spec/helpers/geoblacklight_helper_spec.rb +0 -17
- data/spec/lib/geoblacklight/download/geojson_download_spec.rb +1 -0
- data/template.rb +7 -20
- metadata +4 -13
- data/.github/workflows/build-demo-app.yml +0 -156
- data/.github/workflows/prune-containers.yml +0 -19
- data/app/javascript/geoblacklight/controllers/clover_viewer_controller.js +0 -47
- data/lib/generators/geoblacklight/templates/demo-app/Dockerfile +0 -31
- data/lib/generators/geoblacklight/templates/demo-app/compose.yml +0 -26
- data/lib/generators/geoblacklight/templates/demo-app/start-server.sh +0 -21
- data/spec/features/iiif_viewer_spec.rb +0 -10
|
@@ -7,7 +7,6 @@ import initializeMetadataDownload from "geoblacklight/initializers/metadata_down
|
|
|
7
7
|
|
|
8
8
|
// Stimulus controllers
|
|
9
9
|
import ClipboardController from "geoblacklight/controllers/clipboard_controller";
|
|
10
|
-
import CloverViewerController from "geoblacklight/controllers/clover_viewer_controller";
|
|
11
10
|
import DownloadsController from "geoblacklight/controllers/downloads_controller";
|
|
12
11
|
import LeafletViewerController from "geoblacklight/controllers/leaflet_viewer_controller";
|
|
13
12
|
import OembedViewerController from "geoblacklight/controllers/oembed_viewer_controller";
|
|
@@ -54,7 +53,6 @@ Geoblacklight.onLoad(initializeMetadataDownload);
|
|
|
54
53
|
// Register our Stimulus controllers
|
|
55
54
|
if (typeof Stimulus !== "undefined") {
|
|
56
55
|
Stimulus.register("openlayers-viewer", OpenlayersViewerController);
|
|
57
|
-
Stimulus.register("clover-viewer", CloverViewerController);
|
|
58
56
|
Stimulus.register("oembed-viewer", OembedViewerController);
|
|
59
57
|
Stimulus.register("leaflet-viewer", LeafletViewerController);
|
|
60
58
|
Stimulus.register("search-results", SearchResultsController);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// Stimulus controllers
|
|
2
2
|
import OpenlayersViewerController from "geoblacklight/controllers/openlayers_viewer_controller";
|
|
3
|
-
import CloverViewerController from "geoblacklight/controllers/clover_viewer_controller";
|
|
4
3
|
import OembedViewerController from "geoblacklight/controllers/oembed_viewer_controller";
|
|
5
4
|
import LeafletViewerController from "geoblacklight/controllers/leaflet_viewer_controller";
|
|
6
5
|
import SearchResultsController from "geoblacklight/controllers/search_results_controller";
|
|
@@ -16,7 +15,6 @@ import leafletBasemaps from "geoblacklight/leaflet/basemaps";
|
|
|
16
15
|
|
|
17
16
|
export default {
|
|
18
17
|
OpenlayersViewerController,
|
|
19
|
-
CloverViewerController,
|
|
20
18
|
OembedViewerController,
|
|
21
19
|
LeafletViewerController,
|
|
22
20
|
SearchResultsController,
|
|
@@ -21,10 +21,9 @@ module Geoblacklight
|
|
|
21
21
|
delivered via CDN.
|
|
22
22
|
DESCRIPTION
|
|
23
23
|
|
|
24
|
-
#
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
run "yarn link @geoblacklight/frontend" if options[:test]
|
|
24
|
+
# Switch bootstrap import to ESM version so we can import individual parts
|
|
25
|
+
def use_bootstrap_esm
|
|
26
|
+
gsub_file "config/importmap.rb", /dist\/js\/bootstrap\.js/, "dist/js/bootstrap.esm.js"
|
|
28
27
|
end
|
|
29
28
|
|
|
30
29
|
# Add the customization overrides and insert before bootstrap import
|
|
@@ -62,17 +61,6 @@ module Geoblacklight
|
|
|
62
61
|
append_to_file "app/javascript/application.js", "import Geoblacklight from \"geoblacklight\";"
|
|
63
62
|
end
|
|
64
63
|
|
|
65
|
-
# Add pins for application dependencies to the importmap
|
|
66
|
-
def update_importmap
|
|
67
|
-
gsub_file "config/importmap.rb", "bootstrap.min.js", "https://cdn.skypack.dev/bootstrap@5.3.3"
|
|
68
|
-
append_to_file "config/importmap.rb" do
|
|
69
|
-
<<~CONTENT
|
|
70
|
-
pin "@github/auto-complete-element", to: "https://cdn.skypack.dev/@github/auto-complete-element"
|
|
71
|
-
pin "@popperjs/core", to: "https://ga.jspm.io/npm:@popperjs/core@2.11.8/dist/umd/popper.min.js"
|
|
72
|
-
CONTENT
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
64
|
# Run the build so styles are available for the first load of the app
|
|
77
65
|
def build_styles
|
|
78
66
|
run "yarn build:css"
|
|
@@ -42,23 +42,13 @@ module Geoblacklight
|
|
|
42
42
|
run "bundle exec vite install"
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
#
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
# Otherwise, pick the version from npm that matches our Geoblacklight
|
|
53
|
-
# gem version
|
|
54
|
-
else
|
|
55
|
-
run "yarn add @geoblacklight/frontend@#{Geoblacklight::VERSION}"
|
|
45
|
+
# The vite-plugin-ruby package has a breaking change in 5.1.2,
|
|
46
|
+
# so we need to resolve to a specific version to avoid issues.
|
|
47
|
+
# Remove after https://github.com/ElMassimo/vite_ruby/issues/586 is fixed.
|
|
48
|
+
def pin_vite_plugin_ruby
|
|
49
|
+
inject_into_file "package.json", before: " \"dependencies\": {" do
|
|
50
|
+
" \"resolutions\": { \"vite-plugin-ruby\": \"5.1.1\" },\n"
|
|
56
51
|
end
|
|
57
|
-
|
|
58
|
-
# If in local development or CI, also create a link. This will make it so
|
|
59
|
-
# changes made in the outer directory are picked up automatically.
|
|
60
|
-
# `yarn link` has to have already been run in the outer directory first.
|
|
61
|
-
run "yarn link @geoblacklight/frontend" if options[:test]
|
|
62
52
|
end
|
|
63
53
|
|
|
64
54
|
# The vite_rails gem doesn't currently install the vite-plugin-rails
|
|
@@ -7,6 +7,21 @@ module Geoblacklight
|
|
|
7
7
|
class_option :"asset-pipeline", type: :string, default: ENV.fetch("ASSET_PIPELINE", "vite"), desc: "Choose the asset pipeline to use (vite or importmap)"
|
|
8
8
|
class_option :test, type: :boolean, default: ENV.fetch("CI", false), aliases: "-t", desc: "Indicates that app will be installed in a test environment"
|
|
9
9
|
|
|
10
|
+
# Pick a version of the frontend asset package and install it.
|
|
11
|
+
#
|
|
12
|
+
# If a branch was specified (e.g. you are running a template.rb build
|
|
13
|
+
# against a test branch), use the latest version available on npm.
|
|
14
|
+
#
|
|
15
|
+
# Otherwise, pick the version from npm that matches our Geoblacklight
|
|
16
|
+
# gem version.
|
|
17
|
+
def add_frontend
|
|
18
|
+
if ENV["BRANCH"]
|
|
19
|
+
run "yarn add @geoblacklight/frontend@latest"
|
|
20
|
+
else
|
|
21
|
+
run "yarn add @geoblacklight/frontend@#{Geoblacklight::VERSION}"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
10
25
|
def run_asset_pipeline_specific_generator
|
|
11
26
|
generated_options = "--test=true" if options[:test]
|
|
12
27
|
generator = if options[:"asset-pipeline"]
|
|
@@ -14,7 +14,7 @@ module Geoblacklight
|
|
|
14
14
|
request_params = GEOJSON_DOWNLOAD_PARAMS.merge(typeName: document.wxs_identifier)
|
|
15
15
|
super(document, {
|
|
16
16
|
type: "geojson",
|
|
17
|
-
extension: "
|
|
17
|
+
extension: "geojson",
|
|
18
18
|
request_params: request_params,
|
|
19
19
|
content_type: "application/json",
|
|
20
20
|
service_type: "wfs"
|
data/lib/geoblacklight/engine.rb
CHANGED
|
@@ -32,7 +32,7 @@ module Geoblacklight
|
|
|
32
32
|
next unless app.config.respond_to?(:importmap) # skip for Vite
|
|
33
33
|
|
|
34
34
|
app.config.importmap.paths << Engine.root.join("config/importmap.rb")
|
|
35
|
-
app.config.importmap.cache_sweepers << Engine.root.join("app/
|
|
35
|
+
app.config.importmap.cache_sweepers << Engine.root.join("app/javascript")
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
38
|
end
|
|
@@ -13,6 +13,7 @@ end
|
|
|
13
13
|
def with_solr(&block)
|
|
14
14
|
puts "Starting Solr"
|
|
15
15
|
system_with_error_handling "docker compose up -d solr"
|
|
16
|
+
sleep 5 # give solr a few seconds to load the core config and be ready
|
|
16
17
|
yield
|
|
17
18
|
ensure
|
|
18
19
|
puts "Stopping Solr"
|
|
@@ -23,7 +24,7 @@ namespace :geoblacklight do
|
|
|
23
24
|
desc "Run Solr and GeoBlacklight for interactive development"
|
|
24
25
|
task :server, [:rails_server_args] do |_t, args|
|
|
25
26
|
with_solr do
|
|
26
|
-
Rake::Task["geoblacklight:
|
|
27
|
+
Rake::Task["geoblacklight:index:seed"].invoke
|
|
27
28
|
|
|
28
29
|
puts "Starting GeoBlacklight (Rails server)"
|
|
29
30
|
puts " "
|
|
@@ -35,26 +36,15 @@ namespace :geoblacklight do
|
|
|
35
36
|
end
|
|
36
37
|
end
|
|
37
38
|
|
|
38
|
-
#
|
|
39
|
-
# Remote fixtures: bundle exec rake "geoblacklight:index:seed[:remote]"
|
|
39
|
+
# Get fixture items bundled with the gem and index them into Solr
|
|
40
40
|
namespace :index do
|
|
41
41
|
desc "Index GBL test fixture metadata into Solr"
|
|
42
|
-
task
|
|
43
|
-
|
|
42
|
+
task seed: :environment do
|
|
43
|
+
puts "Indexing test fixtures"
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
URI.parse("https://api.github.com/repos/geoblacklight/geoblacklight/contents/spec/fixtures/solr_documents").open.read
|
|
49
|
-
).each do |fixture|
|
|
50
|
-
if fixture["name"].include?(".json")
|
|
51
|
-
docs << JSON.parse(URI.parse(fixture["download_url"]).open.read)
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
else
|
|
55
|
-
puts "Indexing - Local test fixtures"
|
|
56
|
-
docs = Dir["spec/fixtures/solr_documents/*.json"].map { |f| JSON.parse File.read(f) }.flatten
|
|
57
|
-
end
|
|
45
|
+
gem_path = Gem::Specification.find_by_name("geoblacklight").gem_dir
|
|
46
|
+
fixtures_path = File.join(gem_path, "spec", "fixtures", "solr_documents", "*.json")
|
|
47
|
+
docs = Dir[fixtures_path].flat_map { |f| JSON.parse(File.read(f)) }
|
|
58
48
|
|
|
59
49
|
Blacklight.default_index.connection.add docs
|
|
60
50
|
Blacklight.default_index.connection.commit
|
|
@@ -71,19 +61,21 @@ namespace :geoblacklight do
|
|
|
71
61
|
FileUtils.mkdir_p(Rails.root.join("tmp", "cache", "downloads"), verbose: true)
|
|
72
62
|
end
|
|
73
63
|
desc "Precaches a download"
|
|
74
|
-
task :precache, [
|
|
64
|
+
task :precache, %i[doc_id download_type timeout] => [:environment] do |_t, args|
|
|
75
65
|
unless args[:doc_id] && args[:download_type] && args[:timeout]
|
|
76
|
-
|
|
66
|
+
raise "Please supply required arguments [document_id, download_type and timeout]"
|
|
77
67
|
end
|
|
68
|
+
|
|
78
69
|
document = Geoblacklight::SolrDocument.find(args[:doc_id])
|
|
79
|
-
|
|
70
|
+
raise Blacklight::Exceptions::RecordNotFound if document[:id] != args[:doc_id]
|
|
71
|
+
|
|
80
72
|
download = "Geoblacklight::#{args[:download_type].capitalize}Download"
|
|
81
73
|
.constantize.new(document, timeout: args[:timeout].to_i)
|
|
82
74
|
download.get
|
|
83
75
|
Rails.logger.info "Successfully downloaded #{download.file_name}"
|
|
84
76
|
Rails.logger.info Geoblacklight::ShapefileDownload.file_path.to_s
|
|
85
|
-
rescue Geoblacklight::Exceptions::ExternalDownloadFailed =>
|
|
86
|
-
Rails.logger.error
|
|
77
|
+
rescue Geoblacklight::Exceptions::ExternalDownloadFailed => e
|
|
78
|
+
Rails.logger.error e.message + " " + e.url
|
|
87
79
|
rescue NameError
|
|
88
80
|
Rails.logger.error "Could not find that download type \"#{args[:download_type]}\""
|
|
89
81
|
end
|
data/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geoblacklight/frontend",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "5.0
|
|
4
|
+
"version": "5.2.0",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
@@ -22,22 +22,19 @@
|
|
|
22
22
|
"@github/auto-complete-element": "^3.6.2",
|
|
23
23
|
"@hotwired/stimulus": "^3.2.2",
|
|
24
24
|
"@popperjs/core": "^2.11.8",
|
|
25
|
-
"@samvera/clover-iiif": "^2.3.2",
|
|
26
25
|
"blacklight-frontend": "8",
|
|
27
26
|
"bootstrap": "^5.3.3",
|
|
28
27
|
"esri-leaflet": "^3.0.12",
|
|
29
28
|
"leaflet": "^1.9.4",
|
|
30
29
|
"leaflet-iiif": "^3.0.0",
|
|
31
30
|
"leaflet-fullscreen": "^1.0.2",
|
|
32
|
-
"ol": "
|
|
33
|
-
"ol-pmtiles": "^0.
|
|
34
|
-
"react": "^18.2.0",
|
|
35
|
-
"react-dom": "^18.2.0"
|
|
31
|
+
"ol": "10.7.0",
|
|
32
|
+
"ol-pmtiles": "^2.0.2"
|
|
36
33
|
},
|
|
37
34
|
"devDependencies": {
|
|
38
|
-
"jsdom": "^
|
|
35
|
+
"jsdom": "^27.3.0",
|
|
39
36
|
"rollup-plugin-includepaths": "^0.2.4",
|
|
40
|
-
"vite": "^
|
|
41
|
-
"vitest": "^
|
|
37
|
+
"vite": "^7.2.2",
|
|
38
|
+
"vitest": "^4.0.15"
|
|
42
39
|
}
|
|
43
40
|
}
|
data/solr/conf/solrconfig.xml
CHANGED
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
</query>
|
|
95
95
|
|
|
96
96
|
<requestDispatcher handleSelect="false">
|
|
97
|
-
<requestParsers
|
|
97
|
+
<requestParsers multipartUploadLimitInKB="2048000" formdataUploadLimitInKB="2048"/>
|
|
98
98
|
<httpCaching never304="true"/>
|
|
99
99
|
</requestDispatcher>
|
|
100
100
|
|
|
@@ -10,6 +10,6 @@ RSpec.describe Blacklight::Icons::TriangleExclamationSolidComponent, type: :comp
|
|
|
10
10
|
expect(rendered).to have_css("title")
|
|
11
11
|
expect(rendered).to have_css("svg")
|
|
12
12
|
expect(rendered).to have_css(".blacklight-icons")
|
|
13
|
-
expect(rendered.find("title").text).to eq "
|
|
13
|
+
expect(rendered.find("title").text).to eq "Warning"
|
|
14
14
|
end
|
|
15
15
|
end
|
|
@@ -82,6 +82,22 @@ RSpec.describe Geoblacklight::DownloadLinksComponent, type: :component do
|
|
|
82
82
|
end
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
+
describe "#iiif_jpg_url" do
|
|
86
|
+
let(:references_field) { Settings.FIELDS.REFERENCES }
|
|
87
|
+
let(:document_attributes) do
|
|
88
|
+
{
|
|
89
|
+
references_field => {
|
|
90
|
+
"http://iiif.io/api/image" => "https://example.edu/image/info.json"
|
|
91
|
+
}.to_json
|
|
92
|
+
}
|
|
93
|
+
end
|
|
94
|
+
let(:document) { SolrDocument.new(document_attributes) }
|
|
95
|
+
|
|
96
|
+
it "returns JPG download URL when given URL to a IIIF info.json" do
|
|
97
|
+
expect(component.iiif_jpg_url).to eq "https://example.edu/image/full/full/0/default.jpg"
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
85
101
|
describe "#download_link_generated" do
|
|
86
102
|
let(:download_type) { "SHAPEFILE" }
|
|
87
103
|
|
|
@@ -12,7 +12,7 @@ RSpec.describe Geoblacklight::ItemMapViewerComponent, type: :component do
|
|
|
12
12
|
let(:document) { SolrDocument.new(fixture) }
|
|
13
13
|
|
|
14
14
|
it "uses the IIIF tag" do
|
|
15
|
-
expect(rendered).to have_css("div#
|
|
15
|
+
expect(rendered).to have_css("div#mirador")
|
|
16
16
|
end
|
|
17
17
|
end
|
|
18
18
|
|
|
@@ -5,33 +5,36 @@ require "spec_helper"
|
|
|
5
5
|
feature "Configurable basemap", js: true do
|
|
6
6
|
scenario "defaults to positron" do
|
|
7
7
|
visit root_path
|
|
8
|
-
expect(page).to have_css "img[src*='carto']"
|
|
8
|
+
expect(page).to have_css "img[src*='carto']", visible: :all
|
|
9
9
|
end
|
|
10
|
+
|
|
10
11
|
feature "without provided basemap config" do
|
|
11
12
|
before do
|
|
12
13
|
CatalogController.blacklight_config.basemap_provider = nil
|
|
13
14
|
end
|
|
14
15
|
scenario "has Carto map" do
|
|
15
16
|
visit root_path
|
|
16
|
-
expect(page).to have_css "img[src*='carto']"
|
|
17
|
+
expect(page).to have_css "img[src*='carto']", visible: :all
|
|
17
18
|
end
|
|
18
19
|
end
|
|
20
|
+
|
|
19
21
|
feature "using darkMatter" do
|
|
20
22
|
before do
|
|
21
23
|
CatalogController.blacklight_config.basemap_provider = "darkMatter"
|
|
22
24
|
end
|
|
23
25
|
scenario "has darkMatter map" do
|
|
24
26
|
visit root_path
|
|
25
|
-
expect(page).to have_css "img[src*='dark_all']"
|
|
27
|
+
expect(page).to have_css "img[src*='dark_all']", visible: :all
|
|
26
28
|
end
|
|
27
29
|
end
|
|
30
|
+
|
|
28
31
|
feature "using openstreetmapHot" do
|
|
29
32
|
before do
|
|
30
33
|
CatalogController.blacklight_config.basemap_provider = "openstreetmapHot"
|
|
31
34
|
end
|
|
32
35
|
scenario "has openstreetmapHot map" do
|
|
33
36
|
visit root_path
|
|
34
|
-
expect(page).to have_css "img[src*='hot']"
|
|
37
|
+
expect(page).to have_css "img[src*='hot']", visible: :all
|
|
35
38
|
end
|
|
36
39
|
end
|
|
37
40
|
end
|
|
@@ -11,11 +11,13 @@ end
|
|
|
11
11
|
|
|
12
12
|
feature "Clover IIIF fullscreen control", js: true do
|
|
13
13
|
scenario "IIIF layer should have full screen control" do
|
|
14
|
+
skip "Clover is disabled" # see https://github.com/geoblacklight/geoblacklight/issues/1675
|
|
14
15
|
visit solr_document_path("princeton-sx61dn82p")
|
|
15
16
|
expect(page).to have_button("Toggle full page")
|
|
16
17
|
end
|
|
17
18
|
|
|
18
19
|
scenario "IIIF image should have full screen control" do
|
|
20
|
+
skip "Clover is disabled" # see https://github.com/geoblacklight/geoblacklight/issues/1675
|
|
19
21
|
visit solr_document_path("princeton-02870w62c")
|
|
20
22
|
expect(page).to have_css("[data-button='full-page']")
|
|
21
23
|
end
|
|
@@ -7,11 +7,6 @@ feature "Home page", js: true do # use js: true for tests which require js, but
|
|
|
7
7
|
visit root_path
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
scenario "navbar" do
|
|
11
|
-
expect(page).to have_css "#bookmarks_nav"
|
|
12
|
-
expect(page).to have_css "a", text: "History"
|
|
13
|
-
end
|
|
14
|
-
|
|
15
10
|
scenario "search bar" do
|
|
16
11
|
expect(page).not_to have_css "#search-navbar"
|
|
17
12
|
expect(page).to have_css "h1", text: "Explore and discover..."
|
|
@@ -31,7 +26,7 @@ feature "Home page", js: true do # use js: true for tests which require js, but
|
|
|
31
26
|
scenario "map should be visible" do
|
|
32
27
|
within "#main-container" do
|
|
33
28
|
expect(page).to have_css("#leaflet-viewer")
|
|
34
|
-
expect(page).to have_css("img.leaflet-tile",
|
|
29
|
+
expect(page).to have_css("img.leaflet-tile", visible: :all)
|
|
35
30
|
end
|
|
36
31
|
end
|
|
37
32
|
|
|
@@ -22,29 +22,29 @@ feature "Index view", js: true do
|
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
scenario "should have facets listed correctly" do
|
|
25
|
-
skip "
|
|
25
|
+
skip "Capybara thinks elements are not visible or interactable, but they are"
|
|
26
26
|
|
|
27
|
-
within "#facet-panel-collapse" do
|
|
28
|
-
expect(page).to have_css("div.card.facet-limit", text: "Year")
|
|
29
|
-
expect(page).to have_css("div.card.facet-limit", text: "Place")
|
|
30
|
-
expect(page).to have_css("div.card.facet-limit", text: "Access")
|
|
31
|
-
expect(page).to have_css("div.card.facet-limit", text: "Resource Class")
|
|
32
|
-
expect(page).to have_css("div.card.facet-limit", text: "Resource Type")
|
|
33
|
-
expect(page).to have_css("div.card.facet-limit", text: "Format")
|
|
34
|
-
expect(page).to have_css("div.card.facet-limit", text: "Subject")
|
|
35
|
-
expect(page).to have_css("div.card.facet-limit", text: "Theme")
|
|
36
|
-
expect(page).to have_css("div.card.facet-limit", text: "Creator")
|
|
37
|
-
expect(page).to have_css("div.card.facet-limit", text: "Publisher")
|
|
38
|
-
expect(page).to have_css("div.card.facet-limit", text: "Provider")
|
|
39
|
-
expect(page).to have_css("div.card.facet-limit", text: "Georeferenced")
|
|
27
|
+
within "#facet-panel-collapse", visible: :all do
|
|
28
|
+
expect(page).to have_css("div.card.facet-limit", text: "Year", visible: :all)
|
|
29
|
+
expect(page).to have_css("div.card.facet-limit", text: "Place", visible: :all)
|
|
30
|
+
expect(page).to have_css("div.card.facet-limit", text: "Access", visible: :all)
|
|
31
|
+
expect(page).to have_css("div.card.facet-limit", text: "Resource Class", visible: :all)
|
|
32
|
+
expect(page).to have_css("div.card.facet-limit", text: "Resource Type", visible: :all)
|
|
33
|
+
expect(page).to have_css("div.card.facet-limit", text: "Format", visible: :all)
|
|
34
|
+
expect(page).to have_css("div.card.facet-limit", text: "Subject", visible: :all)
|
|
35
|
+
expect(page).to have_css("div.card.facet-limit", text: "Theme", visible: :all)
|
|
36
|
+
expect(page).to have_css("div.card.facet-limit", text: "Creator", visible: :all)
|
|
37
|
+
expect(page).to have_css("div.card.facet-limit", text: "Publisher", visible: :all)
|
|
38
|
+
expect(page).to have_css("div.card.facet-limit", text: "Provider", visible: :all)
|
|
39
|
+
expect(page).to have_css("div.card.facet-limit", text: "Georeferenced", visible: :all)
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
click_button "Provider"
|
|
42
|
+
click_button "Provider", visible: :all
|
|
43
43
|
|
|
44
|
-
expect(page).to have_css("a.facet-select", text: "University of Minnesota", visible:
|
|
45
|
-
expect(page).to have_css("a.facet-select", text: "MIT", visible:
|
|
46
|
-
expect(page).to have_css("a.facet-select", text: "Stanford", visible:
|
|
47
|
-
expect(page).to have_css(".more_facets a", text: /more\sProvider\s»/, visible:
|
|
44
|
+
expect(page).to have_css("a.facet-select", text: "University of Minnesota", visible: :all)
|
|
45
|
+
expect(page).to have_css("a.facet-select", text: "MIT", visible: :all)
|
|
46
|
+
expect(page).to have_css("a.facet-select", text: "Stanford", visible: :all)
|
|
47
|
+
expect(page).to have_css(".more_facets a", text: /more\sProvider\s»/, visible: :all)
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
scenario "hover on record should produce bounding box on map" do
|
|
@@ -67,9 +67,10 @@ feature "Index view", js: true do
|
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
scenario "spatial search should reset to page one" do
|
|
70
|
+
skip "FIXME: Only works with a headful browser?"
|
|
70
71
|
visit "/?per_page=5&q=%2A&page=2"
|
|
71
72
|
find("#leaflet-viewer").double_click
|
|
72
|
-
expect(
|
|
73
|
+
expect(page).to have_css ".page-entries", text: /^1 - 5 of \d.*$/
|
|
73
74
|
end
|
|
74
75
|
|
|
75
76
|
scenario "clicking map search should retain current search parameters" do
|
|
@@ -77,7 +78,6 @@ feature "Index view", js: true do
|
|
|
77
78
|
find("#leaflet-viewer").double_click
|
|
78
79
|
within "#appliedParams" do
|
|
79
80
|
expect(page).to have_content("Subject Population")
|
|
80
|
-
expect(page).to have_css "span.filter-name", text: "Bounding Box"
|
|
81
81
|
end
|
|
82
82
|
end
|
|
83
83
|
|
|
@@ -12,6 +12,7 @@ feature "Layer inspection", js: true do
|
|
|
12
12
|
|
|
13
13
|
context "with a pmtiles layer" do
|
|
14
14
|
scenario "clicking map should trigger inspection" do
|
|
15
|
+
skip "FIXME: Only works with a headful browser?"
|
|
15
16
|
visit solr_document_path("princeton-t722hd30j")
|
|
16
17
|
expect(page).to have_css("th", text: "Attribute")
|
|
17
18
|
find("#openlayers-viewer").click
|
|
@@ -23,8 +23,8 @@ feature "Display related documents" do
|
|
|
23
23
|
|
|
24
24
|
scenario "Record with relations should render widget in catalog#show", js: true do
|
|
25
25
|
visit solr_document_path("nyu_2451_34635")
|
|
26
|
-
expect(page).to have_css(".card.relations")
|
|
27
|
-
expect(page).to have_css("div.card-header", text: "Derived records...")
|
|
26
|
+
expect(page).to have_css(".card.relations", visible: :all)
|
|
27
|
+
expect(page).to have_css("div.card-header", text: "Derived records...", visible: :all)
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
scenario "Record without relations should not render widget in catalog#show", js: true do
|
|
@@ -36,9 +36,9 @@ feature "Display related documents" do
|
|
|
36
36
|
# Wabash Topo parent record
|
|
37
37
|
visit solr_document_path("eee6150b-ce2f-4837-9d17-ce72a0c1c26f")
|
|
38
38
|
|
|
39
|
-
expect(page).to have_content("Has part...")
|
|
40
|
-
expect(page).to have_link("Browse all 4 records...")
|
|
41
|
-
click_link("Browse all 4 records...")
|
|
39
|
+
expect(page).to have_content(:all, "Has part...")
|
|
40
|
+
expect(page).to have_link("Browse all 4 records...", visible: :all)
|
|
41
|
+
click_link("Browse all 4 records...", visible: :all)
|
|
42
42
|
|
|
43
43
|
expect(page).not_to have_content("No results found for your search")
|
|
44
44
|
end
|
|
@@ -46,24 +46,24 @@ feature "Display related documents" do
|
|
|
46
46
|
scenario "Record with dct_isPartOf_sm value(s) should link to relations", js: true do
|
|
47
47
|
# All Relationships
|
|
48
48
|
visit solr_document_path("all-relationships")
|
|
49
|
-
expect(page).to have_content("Is part of...")
|
|
49
|
+
expect(page).to have_content(:all, "Is part of...")
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
scenario "Record pointed at by a parent with dct_isPartOf_sm value(s) should link back", js: true do
|
|
53
53
|
# The Related Record
|
|
54
54
|
visit solr_document_path("the-related-record")
|
|
55
|
-
expect(page).to have_content("Has part...")
|
|
55
|
+
expect(page).to have_content(:all, "Has part...")
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
scenario "Record with pcdm_memberOf_sm value(s) should link to relations", js: true do
|
|
59
59
|
# All Relationships
|
|
60
60
|
visit solr_document_path("all-relationships")
|
|
61
|
-
expect(page).to have_content("Belongs to collection...")
|
|
61
|
+
expect(page).to have_content(:all, "Belongs to collection...")
|
|
62
62
|
end
|
|
63
63
|
|
|
64
64
|
scenario "Record pointed at by a parent with pcdm_memberOf_sm value(s) should link back", js: true do
|
|
65
65
|
# The Related Record
|
|
66
66
|
visit solr_document_path("the-related-record")
|
|
67
|
-
expect(page).to have_content("Collection records...")
|
|
67
|
+
expect(page).to have_content(:all, "Collection records...")
|
|
68
68
|
end
|
|
69
69
|
end
|
|
@@ -11,11 +11,11 @@ feature "Search" do
|
|
|
11
11
|
scenario "When searching child records from a parent record, supressed records are not hidden", js: true do
|
|
12
12
|
visit "/catalog/princeton-1r66j405w"
|
|
13
13
|
|
|
14
|
-
within(".card.relations.relationship-source_descendants") do
|
|
15
|
-
expect(page).to have_link(href: /f%5Bdct_source_sm%5D
|
|
14
|
+
within(".card.relations.relationship-source_descendants", visible: :all) do
|
|
15
|
+
expect(page).to have_link(href: /f%5Bdct_source_sm%5D/, visible: :all)
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
click_link "Browse all 4 records..."
|
|
18
|
+
click_link "Browse all 4 records...", visible: :all
|
|
19
19
|
expect(page).to have_css ".document", count: 4
|
|
20
20
|
end
|
|
21
21
|
|
data/spec/features/tms_spec.rb
CHANGED
|
@@ -5,7 +5,7 @@ require "spec_helper"
|
|
|
5
5
|
feature "tms layer" do
|
|
6
6
|
scenario "displays tms layer", js: true do
|
|
7
7
|
visit solr_document_path("cugir-007957")
|
|
8
|
-
expect(page).to have_css ".leaflet-control-zoom"
|
|
9
|
-
expect(page).to have_css "img[src*='cugir.library.cornell.edu']"
|
|
8
|
+
expect(page).to have_css ".leaflet-control-zoom"
|
|
9
|
+
expect(page).to have_css "img[src*='cugir.library.cornell.edu']", visible: :all
|
|
10
10
|
end
|
|
11
11
|
end
|
data/spec/features/xyz_spec.rb
CHANGED
|
@@ -5,7 +5,7 @@ require "spec_helper"
|
|
|
5
5
|
feature "xyz layer" do
|
|
6
6
|
scenario "displays tms layer", js: true do
|
|
7
7
|
visit solr_document_path("6f47b103-9955-4bbe-a364-387039623106-xyz")
|
|
8
|
-
expect(page).to have_css ".leaflet-control-zoom"
|
|
9
|
-
expect(page).to have_css "img[src*='earthquake.usgs.gov']"
|
|
8
|
+
expect(page).to have_css ".leaflet-control-zoom"
|
|
9
|
+
expect(page).to have_css "img[src*='earthquake.usgs.gov']", visible: :all
|
|
10
10
|
end
|
|
11
11
|
end
|
|
@@ -41,23 +41,6 @@ describe GeoblacklightHelper, type: :helper do
|
|
|
41
41
|
end
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
-
describe "#iiif_jpg_url" do
|
|
45
|
-
let(:document) { SolrDocument.new(document_attributes) }
|
|
46
|
-
let(:references_field) { Settings.FIELDS.REFERENCES }
|
|
47
|
-
let(:document_attributes) do
|
|
48
|
-
{
|
|
49
|
-
references_field => {
|
|
50
|
-
"http://iiif.io/api/image" => "https://example.edu/image/info.json"
|
|
51
|
-
}.to_json
|
|
52
|
-
}
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
it "returns JPG download URL when given URL to a IIIF info.json" do
|
|
56
|
-
assign(:document, document)
|
|
57
|
-
expect(helper.iiif_jpg_url).to eq "https://example.edu/image/full/full/0/default.jpg"
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
44
|
describe "#snippit" do
|
|
62
45
|
let(:document) { SolrDocument.new(document_attributes) }
|
|
63
46
|
let(:references_field) { Settings.FIELDS.REFERENCES }
|
|
@@ -11,6 +11,7 @@ describe Geoblacklight::GeojsonDownload do
|
|
|
11
11
|
options = download.instance_variable_get(:@options)
|
|
12
12
|
expect(options[:content_type]).to eq "application/json"
|
|
13
13
|
expect(options[:request_params][:typeName]).to eq "stanford-test"
|
|
14
|
+
expect(options[:extension]).to eq "geojson"
|
|
14
15
|
end
|
|
15
16
|
it "merges custom options" do
|
|
16
17
|
download = described_class.new(document, timeout: 33)
|