geoblacklight 3.2.0 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +142 -0
  3. data/.gitignore +8 -0
  4. data/.rubocop.yml +9 -10
  5. data/.rubocop_todo.yml +356 -26
  6. data/README.md +2 -2
  7. data/Rakefile +12 -4
  8. data/app/assets/images/favicon.ico +0 -0
  9. data/app/assets/javascripts/geoblacklight/geoblacklight.js +18 -1
  10. data/app/assets/javascripts/geoblacklight/modules/bookmarks.js +43 -0
  11. data/app/assets/javascripts/geoblacklight/modules/metadata_download_button.js +6 -1
  12. data/app/assets/javascripts/geoblacklight/modules/results.js +7 -8
  13. data/app/assets/javascripts/geoblacklight/modules/util.js +5 -0
  14. data/app/assets/javascripts/geoblacklight/viewers/esri.js +1 -1
  15. data/app/assets/javascripts/geoblacklight/viewers/index_map.js +1 -1
  16. data/app/assets/javascripts/geoblacklight/viewers/map.js +12 -2
  17. data/app/assets/javascripts/geoblacklight/viewers/tms.js +10 -0
  18. data/app/assets/javascripts/geoblacklight/viewers/wms.js +1 -1
  19. data/app/assets/stylesheets/geoblacklight/modules/results.scss +1 -1
  20. data/app/helpers/geoblacklight_helper.rb +13 -1
  21. data/app/models/concerns/geoblacklight/solr_document.rb +8 -13
  22. data/app/models/concerns/geoblacklight/spatial_search_behavior.rb +3 -3
  23. data/app/views/catalog/_document_split.html.erb +1 -1
  24. data/app/views/catalog/_index_split_default.html.erb +1 -1
  25. data/app/views/catalog/_show_default_viewer_container.html.erb +1 -1
  26. data/app/views/download/hgl.html.erb +13 -11
  27. data/app/views/relation/_ancestors.html.erb +2 -2
  28. data/app/views/relation/_descendants.html.erb +2 -2
  29. data/babel.config.json +4 -0
  30. data/config/initializers/new_gbl_settings_defaults_3_3.yml +10 -0
  31. data/config/initializers/rails_config.rb +4 -0
  32. data/config/locales/geoblacklight.en.yml +4 -0
  33. data/geoblacklight.gemspec +4 -2
  34. data/jest.config.js +25 -0
  35. data/lib/generators/geoblacklight/install_generator.rb +1 -1
  36. data/lib/generators/geoblacklight/templates/catalog_controller.rb +1 -1
  37. data/lib/generators/geoblacklight/templates/settings.yml +20 -11
  38. data/lib/geoblacklight.rb +1 -2
  39. data/lib/geoblacklight/bounding_box.rb +1 -1
  40. data/lib/geoblacklight/constants.rb +1 -0
  41. data/lib/geoblacklight/download/kmz_download.rb +1 -1
  42. data/lib/geoblacklight/geometry.rb +70 -0
  43. data/lib/geoblacklight/item_viewer.rb +5 -1
  44. data/lib/geoblacklight/metadata/base.rb +1 -7
  45. data/lib/geoblacklight/relation/ancestors.rb +2 -2
  46. data/lib/geoblacklight/relation/descendants.rb +1 -1
  47. data/lib/geoblacklight/version.rb +1 -1
  48. data/lib/geoblacklight/wms_layer.rb +1 -4
  49. data/lib/tasks/geoblacklight.rake +5 -0
  50. data/package.json +17 -1
  51. data/setupJest.js +14 -0
  52. data/solr/conf/schema.xml +1 -3
  53. data/spec/config/initializers/rails_config_spec.rb +14 -0
  54. data/spec/controllers/catalog_controller_spec.rb +6 -6
  55. data/spec/features/download_layer_spec.rb +1 -1
  56. data/spec/features/relations_spec.rb +1 -1
  57. data/spec/features/search_results_overlap_ratio_spec.rb +2 -2
  58. data/spec/features/split_view.html.erb_spec.rb +1 -1
  59. data/spec/features/tms_spec.rb +10 -0
  60. data/spec/fixtures/solr_documents/public_iiif_princeton.json +1 -1
  61. data/spec/fixtures/solr_documents/tms.json +29 -0
  62. data/spec/helpers/geoblacklight_helper_spec.rb +30 -4
  63. data/spec/javascripts/geoblacklight_spec.js +0 -6
  64. data/spec/javascripts/metadata_download_button_spec.js +5 -3
  65. data/spec/javascripts/util_spec.js +2 -4
  66. data/spec/lib/geoblacklight/download/kmz_download_spec.rb +2 -2
  67. data/spec/lib/geoblacklight/download_spec.rb +1 -1
  68. data/spec/lib/geoblacklight/geometry_spec.rb +48 -0
  69. data/spec/lib/geoblacklight/item_viewer_spec.rb +12 -0
  70. data/spec/lib/geoblacklight/references_spec.rb +1 -1
  71. data/spec/lib/geoblacklight/relation/ancestors_spec.rb +1 -1
  72. data/spec/lib/geoblacklight/relation/descendants_spec.rb +1 -1
  73. data/spec/test_app_templates/Gemfile.extra +1 -0
  74. data/spec/test_app_templates/lib/generators/test_app_generator.rb +0 -7
  75. data/spec/views/catalog/_document_split.html.erb_spec.rb +1 -1
  76. data/spec/views/catalog/_index_split.html.erb_spec.rb +1 -1
  77. data/template.rb +1 -0
  78. metadata +62 -26
  79. data/.circleci/config.yml +0 -256
  80. data/spec/javascripts/geoblacklight/viewers/esri/tiled_map_layer_spec.js +0 -12
  81. data/spec/javascripts/spec_helper.js +0 -32
  82. data/spec/lib/geoblacklight/controller_override_spec.rb +0 -2
  83. data/spec/teaspoon_env.rb +0 -214
@@ -72,12 +72,12 @@ describe CatalogController, type: :controller do
72
72
  expect(response.body).not_to be_empty
73
73
  response_values = JSON.parse(response.body)
74
74
  expect(response_values).to include 'geoblacklight_version' => '1.0'
75
- expect(response_values).to include 'dc_title_s' => '100 Foot Grid Cambridge MA 2004'
76
- expect(response_values).to include 'dc_identifier_s' => 'urn:geodata.tufts.edu:Tufts.CambridgeGrid100_04'
77
- expect(response_values).to include 'dc_rights_s' => 'Public'
78
- expect(response_values).to include 'dct_provenance_s' => 'Tufts'
79
- expect(response_values).to include 'layer_slug_s' => 'tufts-cambridgegrid100-04'
80
- expect(response_values).to include 'solr_geom' => 'ENVELOPE(-71.163984, -71.052581, 42.408316, 42.34757)'
75
+ expect(response_values).to include Settings.FIELDS.TITLE => '100 Foot Grid Cambridge MA 2004'
76
+ expect(response_values).to include Settings.FIELDS.IDENTIFIER => 'urn:geodata.tufts.edu:Tufts.CambridgeGrid100_04'
77
+ expect(response_values).to include Settings.FIELDS.RIGHTS => 'Public'
78
+ expect(response_values).to include Settings.FIELDS.PROVENANCE => 'Tufts'
79
+ expect(response_values).to include Settings.FIELDS.UNIQUE_KEY => 'tufts-cambridgegrid100-04'
80
+ expect(response_values).to include Settings.FIELDS.GEOMETRY => 'ENVELOPE(-71.163984, -71.052581, 42.408316, 42.34757)'
81
81
  end
82
82
  end
83
83
  end
@@ -41,7 +41,7 @@ feature 'Download layer' do
41
41
  end
42
42
  scenario 'clicking jpg download button should redirect to external image' do
43
43
  visit solr_document_path('princeton-02870w62c')
44
- expect(page).to have_css("a.btn.btn-default[href='https://libimages.princeton.edu/loris/pudl0076/map_pownall/00000001.jp2/full/full/0/default.jpg']", text: 'Original JPG')
44
+ expect(page).to have_css("a.btn.btn-default[href='https://iiif-cloud.princeton.edu/iiif/2/6c%2F52%2F12%2F6c5212e81bc845f59bb1cdc740a88bad%2Fintermediate_file/full/full/0/default.jpg']", text: 'Original JPG')
45
45
  end
46
46
  scenario 'options should be available under toggle' do
47
47
  visit solr_document_path('mit-f6rqs4ucovjk2')
@@ -16,7 +16,7 @@ feature 'Display related documents' do
16
16
  visit relations_solr_document_path('nyu_2451_34635', format: 'json')
17
17
  response = JSON.parse(page.body)
18
18
  expect(response['ancestors']['numFound']).to eq 0
19
- expect(response['descendants']['docs'].first['layer_slug_s']).to eq 'nyu_2451_34502'
19
+ expect(response['descendants']['docs'].first[Settings.FIELDS.UNIQUE_KEY]).to eq 'nyu_2451_34502'
20
20
  expect(response['current_doc']).to eq 'nyu_2451_34635'
21
21
  end
22
22
 
@@ -8,7 +8,7 @@ feature 'spatial search results overlap ratio' do
8
8
  # BBox param is the US upper midwest and Canada, roughly centered on the state of Minnesota
9
9
  visit search_catalog_path(
10
10
  bbox: '-103.196521 39.21962 -84.431873 53.63497',
11
- 'f[dct_provenance_s][]': 'Minnesota'
11
+ "f[#{Settings.FIELDS.PROVENANCE}][]": 'Minnesota'
12
12
  )
13
13
 
14
14
  # MN State result
@@ -30,7 +30,7 @@ feature 'spatial search results overlap ratio' do
30
30
  # BBox param is the center to western edge of New York state and Canada, roughly centered on Lake Ontario
31
31
  visit search_catalog_path(
32
32
  bbox: '-83.750499 40.41709 -74.368175 47.963663',
33
- 'f[dct_provenance_s][]': 'Cornell'
33
+ "f[#{Settings.FIELDS.PROVENANCE}][]": 'Cornell'
34
34
  )
35
35
 
36
36
  # NY State result
@@ -10,7 +10,7 @@ feature 'Index view', js: true do
10
10
  scenario 'should have documents and map on page' do
11
11
  visit search_catalog_path(f: { Settings.FIELDS.PROVENANCE => ['Stanford'] })
12
12
  expect(page).to have_css('#documents')
13
- expect(page).to have_css('.document', count: 5)
13
+ expect(page).to have_css('.document', count: 6)
14
14
  expect(page).to have_css('#map')
15
15
  end
16
16
 
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+ require 'spec_helper'
3
+
4
+ feature 'tms layer' do
5
+ scenario 'displays tms layer', js: true do
6
+ visit solr_document_path('6f47b103-9955-4bbe-a364-387039623106')
7
+ expect(page).to have_css '.leaflet-control-zoom', visible: true
8
+ expect(page).to have_css "img[src*='earthquake.usgs.gov']"
9
+ end
10
+ end
@@ -16,7 +16,7 @@
16
16
  "Rogers, Henry Darwin",
17
17
  "Pownall, Thomas"
18
18
  ],
19
- "dct_references_s": "{\"http://schema.org/url\":\"http://arks.princeton.edu/ark:/88435/02870w62c\",\"http://schema.org/thumbnailUrl\":\"https://libimages.princeton.edu/loris2/pudl0076%2Fmap_pownall%2F00000001.jp2/full/50,/0/default.jpg\",\"http://iiif.io/api/image\":\"https://libimages.princeton.edu/loris/pudl0076/map_pownall/00000001.jp2/info.json\"}",
19
+ "dct_references_s": "{\"http://schema.org/url\":\"http://arks.princeton.edu/ark:/88435/02870w62c\",\"http://schema.org/thumbnailUrl\":\"https://iiif-cloud.princeton.edu/iiif/2/6c%2F52%2F12%2F6c5212e81bc845f59bb1cdc740a88bad%2Fintermediate_file/full/!200,150/0/default.jpg\",\"http://iiif.io/api/image\":\"https://iiif-cloud.princeton.edu/iiif/2/6c%2F52%2F12%2F6c5212e81bc845f59bb1cdc740a88bad%2Fintermediate_file/info.json\"}",
20
20
  "dct_spatial_sm": [
21
21
  "New York (State)",
22
22
  "New Jersey",
@@ -0,0 +1,29 @@
1
+ {
2
+ "dc_identifier_s": "6f47b103-9955-4bbe-a364-387039623106",
3
+ "dc_title_s": "Quaternary Fault and Fold Database of the United States",
4
+ "dc_description_s": "Quaternary Fault and Fold Database of the United States",
5
+ "dc_rights_s": "Public",
6
+ "dct_provenance_s": "Stanford",
7
+ "dct_references_s": "{\"http://schema.org/url\":\"https://www.usgs.gov/natural-hazards/earthquake-hazards/faults\",\"https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification\":\"https://earthquake.usgs.gov/basemap/tiles/faults/{z}/{x}/{y}.png\",\"http://schema.org/downloadUrl\":\"https://earthquake.usgs.gov/static/lfs/nshm/qfaults/Qfaults_GIS.zip\"}",
8
+ "layer_slug_s": "6f47b103-9955-4bbe-a364-387039623106",
9
+ "layer_geom_type_s": "Polyline",
10
+ "dc_format_s": "Shapefile",
11
+ "dc_language_s": "English",
12
+ "dc_type_s": "Dataset",
13
+ "dc_publisher_s": "Geological Survey (U.S.)",
14
+ "dc_subject_sm": [
15
+ "Earthquakes",
16
+ "Faults"
17
+ ],
18
+ "dct_issued_s": "2020",
19
+ "dct_temporal_sm": [
20
+ "2020"
21
+ ],
22
+ "dct_spatial_sm": [
23
+ "Earth (Planet)",
24
+ "North America"
25
+ ],
26
+ "solr_geom": "ENVELOPE(-156.02, -70.80, 65.59, 18.93)",
27
+ "solr_year_i": 2020,
28
+ "geoblacklight_version": "1.0"
29
+ }
@@ -346,12 +346,12 @@ describe GeoblacklightHelper, type: :helper do
346
346
  end
347
347
 
348
348
  it 'renders a goemetry type as the icon' do
349
- html = Capybara.string(helper.relations_icon({ 'layer_geom_type_s' => 'polygon' }, 'leaf'))
349
+ html = Capybara.string(helper.relations_icon({ Settings.FIELDS.GEOM_TYPE => 'polygon' }, 'leaf'))
350
350
  expect(html.title.strip).to eq 'Polygon'
351
351
  end
352
352
 
353
353
  it 'has the svg_tooltip class so that the Bootstrap tooltip is applied' do
354
- html = Capybara.string(helper.relations_icon({ 'layer_geom_type_s' => 'polygon' }, 'leaf'))
354
+ html = Capybara.string(helper.relations_icon({ Settings.FIELDS.GEOM_TYPE => 'polygon' }, 'leaf'))
355
355
  expect(html).to have_css('.blacklight-icons.svg_tooltip')
356
356
  end
357
357
  end
@@ -362,14 +362,40 @@ describe GeoblacklightHelper, type: :helper do
362
362
  end
363
363
 
364
364
  it 'renders the provided icon' do
365
- html = Capybara.string(helper.relations_icon({ 'layer_geom_type_s' => 'polygon' }, 'leaf'))
365
+ html = Capybara.string(helper.relations_icon({ Settings.FIELDS.GEOM_TYPE => 'polygon' }, 'leaf'))
366
366
  expect(html.title.strip).to eq 'Leaf'
367
367
  end
368
368
 
369
369
  it 'does not have the svg_tooltip class' do
370
- html = Capybara.string(helper.relations_icon({ 'layer_geom_type_s' => 'polygon' }, 'leaf'))
370
+ html = Capybara.string(helper.relations_icon({ Settings.FIELDS.GEOM_TYPE => 'polygon' }, 'leaf'))
371
371
  expect(html).not_to have_css('.blacklight-icons.svg_tooltip')
372
372
  end
373
373
  end
374
374
  end
375
+
376
+ describe '#results_js_map_selector' do
377
+ context 'viewing bookmarks' do
378
+ let(:controller_name) { 'bookmarks' }
379
+
380
+ it 'returns bookmarks data-map selector' do
381
+ expect(results_js_map_selector(controller_name)).to eq 'bookmarks'
382
+ end
383
+ end
384
+
385
+ context 'viewing catalog results' do
386
+ let(:controller_name) { 'catalog' }
387
+
388
+ it 'returns index data-map selector' do
389
+ expect(results_js_map_selector(controller_name)).to eq 'index'
390
+ end
391
+ end
392
+
393
+ context 'calling outside of intended scope' do
394
+ let(:controller_name) { 'outside' }
395
+
396
+ it 'returns default data-map value' do
397
+ expect(results_js_map_selector(controller_name)).to eq 'index'
398
+ end
399
+ end
400
+ end
375
401
  end
@@ -1,5 +1,3 @@
1
- //= require geoblacklight
2
-
3
1
  describe('GeoBlacklight', function() {
4
2
  describe('loads and makes available libraries', function() {
5
3
  it('Leaflet is defined', function() {
@@ -9,9 +7,5 @@ describe('GeoBlacklight', function() {
9
7
  it('History.js is defined', function() {
10
8
  expect(History).toBeDefined();
11
9
  });
12
-
13
- it('MetadataDownloadButton is defined', function() {
14
- expect(GeoBlacklight.MetadataDownloadButton).toBeDefined();
15
- });
16
10
  });
17
11
  });
@@ -1,11 +1,13 @@
1
- //= require geoblacklight
1
+ const MetadataDownloadButton = require('../../app/assets/javascripts/geoblacklight/modules/metadata_download_button');
2
2
 
3
3
  describe('MetadataDownloadButton', function() {
4
4
  describe('initialize', function() {
5
- fixture.set('<button id="foo" data-ref-endpoint="http://testdomain" data-ref-download="#bar">test element</button><a href="http://testdomain" id="bar">another test element</a>');
5
+ beforeEach(() => {
6
+ document.body.innerHTML = '<button id="foo" data-ref-endpoint="http://testdomain" data-ref-download="#bar">test element</button><a href="http://testdomain" id="bar">another test element</a>';
7
+ });
6
8
 
7
9
  it('creates a new instance and sets the download button @href value', function() {
8
- var button = new GeoBlacklight.MetadataDownloadButton('#foo');
10
+ var button = new MetadataDownloadButton('#foo');
9
11
  expect(button.$el.attr('id')).toBe('foo');
10
12
  expect(button.$download.attr('id')).toBe('bar');
11
13
  expect(button.$download.attr('href')).toBe('http://testdomain');
@@ -1,11 +1,9 @@
1
- //= require geoblacklight
2
-
3
- 'use strict';
1
+ const Util = require('../../app/assets/javascripts/geoblacklight/modules/util');
4
2
 
5
3
  describe('GeoBlacklight.Util', function() {
6
4
  describe('linkify', function() {
7
5
  it('returns a linkified string', function() {
8
- expect(GeoBlacklight.Util.linkify('http://www.example.com'))
6
+ expect(Util.linkify('http://www.example.com'))
9
7
  .toEqual("<a href='http://www.example.com'>http://www.example.com</a>");
10
8
  });
11
9
  });
@@ -2,7 +2,7 @@
2
2
  require 'spec_helper'
3
3
 
4
4
  describe Geoblacklight::KmzDownload do
5
- let(:document) { SolrDocument.new(layer_slug_s: 'test', solr_wfs_url: 'http://www.example.com/wfs', layer_id_s: 'stanford-test', solr_geom: 'ENVELOPE(-180, 180, 90, -90)') }
5
+ let(:document) { SolrDocument.new(Settings.FIELDS.UNIQUE_KEY => 'test', solr_wfs_url: 'http://www.example.com/wfs', Settings.FIELDS.WXS_IDENTIFIER => 'stanford-test', Settings.FIELDS.GEOMETRY => 'ENVELOPE(-180, 180, 90, -90)') }
6
6
  let(:download) { described_class.new(document) }
7
7
  describe '#initialize' do
8
8
  it 'initializes as a KmzDownload object with specific options' do
@@ -10,7 +10,7 @@ describe Geoblacklight::KmzDownload do
10
10
  options = download.instance_variable_get(:@options)
11
11
  expect(options[:content_type]).to eq 'application/vnd.google-earth.kmz'
12
12
  expect(options[:request_params][:layers]).to eq 'stanford-test'
13
- expect(options[:request_params][:bbox]).to eq '-180, -90, 180, 90'
13
+ expect(options[:request_params][:bbox]).to eq '-180.0, -90.0, 180.0, 90.0'
14
14
  end
15
15
  it 'merges custom options' do
16
16
  download = described_class.new(document, timeout: 33)
@@ -7,7 +7,7 @@ describe Geoblacklight::Download do
7
7
  let(:faraday_connection) { instance_double(Faraday::Connection) }
8
8
  let(:faraday_response) { instance_double(Faraday::Response) }
9
9
  let(:references_field) { Settings.FIELDS.REFERENCES }
10
- let(:document) { SolrDocument.new(layer_slug_s: 'test', references_field => { 'http://www.opengis.net/def/serviceType/ogc/wms' => 'http://www.example.com/wms' }.to_json) }
10
+ let(:document) { SolrDocument.new("#{Settings.FIELDS.UNIQUE_KEY}": 'test', references_field => { 'http://www.opengis.net/def/serviceType/ogc/wms' => 'http://www.example.com/wms' }.to_json) }
11
11
  let(:options) { { type: 'shapefile', extension: 'zip', service_type: 'wms', content_type: 'application/zip' } }
12
12
 
13
13
  describe '#initialize' do
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+ require 'spec_helper'
3
+
4
+ describe Geoblacklight::Geometry do
5
+ let(:wkt_geom) { 'MULTIPOLYGON(((-180 81.66, -180 -12.93, -168.35 -12.93, -168.35 81.66, -180 81.66)), ((180 81.66, 25 81.66, 25 -12.93, 180 -12.93, 180 81.66)))' }
6
+ let(:envelope_geom) { 'ENVELOPE(25, -168.35, 81.66, -12.93)' }
7
+ let(:invalid_geom) { 'INVALID' }
8
+
9
+ describe '#geojson' do
10
+ context 'with standard WKT geometry' do
11
+ it 'returns geojson' do
12
+ expect(described_class.new(wkt_geom).geojson).to include('MultiPolygon', 'coordinates', '[[[[-180.0,81.66]')
13
+ end
14
+ end
15
+
16
+ context 'with envelope syntax geometry' do
17
+ it 'returns geojson' do
18
+ expect(described_class.new(envelope_geom).geojson).to include('Polygon', 'coordinates', '[[[25.0,81.66]')
19
+ end
20
+ end
21
+
22
+ context 'with an invalid geometry' do
23
+ it 'returns an empty string' do
24
+ expect(described_class.new(invalid_geom).geojson).to eq ''
25
+ end
26
+ end
27
+ end
28
+
29
+ describe '#bounding_box' do
30
+ context 'with standard WKT geometry' do
31
+ it 'returns a bounding_box' do
32
+ expect(described_class.new(wkt_geom).bounding_box).to eq '-180.0, -12.93, 180.0, 81.66'
33
+ end
34
+ end
35
+
36
+ context 'with envelope syntax geometry' do
37
+ it 'returns a bounding_box' do
38
+ expect(described_class.new(envelope_geom).bounding_box).to eq '-168.35, -12.93, 25.0, 81.66'
39
+ end
40
+ end
41
+
42
+ context 'with an invalid geometry' do
43
+ it 'returns an empty string' do
44
+ expect(described_class.new(invalid_geom).bounding_box).to eq ''
45
+ end
46
+ end
47
+ end
48
+ end
@@ -26,6 +26,18 @@ describe Geoblacklight::ItemViewer do
26
26
  expect(item_viewer.viewer_preference).to eq wms: 'http://www.example.com/wms'
27
27
  end
28
28
  end
29
+ describe 'for tms reference' do
30
+ let(:document_attributes) do
31
+ {
32
+ references_field => {
33
+ 'https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification' => 'http://www.example.com/tms'
34
+ }.to_json
35
+ }
36
+ end
37
+ it 'tms if tms is present' do
38
+ expect(item_viewer.viewer_preference).to eq tms: 'http://www.example.com/tms'
39
+ end
40
+ end
29
41
  describe 'for iiif only reference' do
30
42
  let(:document_attributes) do
31
43
  {
@@ -76,7 +76,7 @@ describe Geoblacklight::References do
76
76
  file_format_field => 'Raster',
77
77
  references_field => {
78
78
  'http://schema.org/url' => 'http://arks.princeton.edu/ark:/88435/02870w62c',
79
- 'http://iiif.io/api/image' => 'http://libimages.princeton.edu/loris2/pudl0076%2Fmap_pownall%2F00000001.jp2/info.json'
79
+ 'http://iiif.io/api/image' => 'https://iiif-cloud.princeton.edu/iiif/2/6c%2F52%2F12%2F6c5212e81bc845f59bb1cdc740a88bad%2Fintermediate_file/info.json'
80
80
  }.to_json
81
81
  )
82
82
  )
@@ -8,7 +8,7 @@ describe Geoblacklight::Relation::Ancestors do
8
8
 
9
9
  describe '#create_search_params' do
10
10
  it 'assembles the correct search params for finding ancestor documents' do
11
- expect(ancestors.create_search_params).to eq(fq: ["{!join from=#{Settings.FIELDS.SOURCE} to=layer_slug_s}layer_slug_s:nyu_2451_34502"], fl: [Settings.FIELDS.TITLE.to_s, 'layer_slug_s', 'layer_geom_type_s'])
11
+ expect(ancestors.create_search_params).to eq(fq: ["{!join from=#{Settings.FIELDS.SOURCE} to=#{Settings.FIELDS.UNIQUE_KEY}}#{Settings.FIELDS.UNIQUE_KEY}:nyu_2451_34502"], fl: [Settings.FIELDS.TITLE.to_s, Settings.FIELDS.UNIQUE_KEY, Settings.FIELDS.GEOM_TYPE])
12
12
  end
13
13
  end
14
14
 
@@ -8,7 +8,7 @@ describe Geoblacklight::Relation::Descendants do
8
8
 
9
9
  describe '#create_search_params' do
10
10
  it 'assembles the correct search params for finding descendant documents' do
11
- expect(descendants.create_search_params).to eq(fq: "#{Settings.FIELDS.SOURCE}:nyu_2451_34636", fl: [Settings.FIELDS.TITLE.to_s, 'layer_slug_s', 'layer_geom_type_s'])
11
+ expect(descendants.create_search_params).to eq(fq: "#{Settings.FIELDS.SOURCE}:nyu_2451_34636", fl: [Settings.FIELDS.TITLE.to_s, Settings.FIELDS.UNIQUE_KEY, Settings.FIELDS.GEOM_TYPE])
12
12
  end
13
13
  end
14
14
 
@@ -1 +1,2 @@
1
1
  gem 'sprockets', '< 4'
2
+ gem 'view_component', '!= 2.26.0'
@@ -14,8 +14,6 @@ class TestAppGenerator < Rails::Generators::Base
14
14
 
15
15
  def add_gems
16
16
  gem 'blacklight'
17
- gem 'teaspoon'
18
- gem 'teaspoon-jasmine'
19
17
  gem 'webpacker' unless Rails.version.to_s.start_with? '6.1.'
20
18
  Bundler.with_clean_env do
21
19
  run 'bundle install'
@@ -42,9 +40,4 @@ class TestAppGenerator < Rails::Generators::Base
42
40
  FileUtils.mkdir_p 'spec/fixtures/metadata'
43
41
  directory 'metadata', 'spec/fixtures/metadata'
44
42
  end
45
-
46
- def install_teaspoon
47
- # Implicit copy of GeoBlacklight checked-in teaspoon_env.rb
48
- copy_file '../teaspoon_env.rb', 'spec/teaspoon_env.rb'
49
- end
50
43
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  require 'spec_helper'
3
3
 
4
- describe 'catalog/_document_split.html.erb' do
4
+ describe 'catalog/_document_split.html.erb', type: :view do
5
5
  # TODO: js plugin refactor really needs to be redone so that the views can be testable
6
6
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  require 'spec_helper'
3
3
 
4
- describe 'catalog/_document_split.html.erb' do
4
+ describe 'catalog/_document_split.html.erb', type: :view do
5
5
  # TODO: js plugin refactor really needs to be redone so that the views can be testable
6
6
  end
data/template.rb CHANGED
@@ -2,6 +2,7 @@
2
2
  gem 'blacklight', '~> 7.0'
3
3
  gem 'geoblacklight', '~> 3.0'
4
4
  gem 'webpacker' unless Rails.version.to_s.start_with? '6.1.'
5
+ gem 'sprockets', '< 4.0' # Use sprockets less than 4.0, let webpacker users set this up themselves
5
6
 
6
7
  # Hack for https://github.com/rails/rails/issues/35153
7
8
  # Adapted from https://github.com/projectblacklight/blacklight/pull/2065
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geoblacklight
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Graves
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2021-02-04 00:00:00.000000000 Z
14
+ date: 2021-03-08 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rails
@@ -159,6 +159,20 @@ dependencies:
159
159
  - - ">="
160
160
  - !ruby/object:Gem::Version
161
161
  version: '0'
162
+ - !ruby/object:Gem::Dependency
163
+ name: rgeo-geojson
164
+ requirement: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ type: :runtime
170
+ prerelease: false
171
+ version_requirements: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
162
176
  - !ruby/object:Gem::Dependency
163
177
  name: solr_wrapper
164
178
  requirement: !ruby/object:Gem::Requirement
@@ -272,7 +286,21 @@ dependencies:
272
286
  - !ruby/object:Gem::Version
273
287
  version: '1.3'
274
288
  - !ruby/object:Gem::Dependency
275
- name: bixby
289
+ name: simplecov
290
+ requirement: !ruby/object:Gem::Requirement
291
+ requirements:
292
+ - - "~>"
293
+ - !ruby/object:Gem::Version
294
+ version: 0.17.1
295
+ type: :development
296
+ prerelease: false
297
+ version_requirements: !ruby/object:Gem::Requirement
298
+ requirements:
299
+ - - "~>"
300
+ - !ruby/object:Gem::Version
301
+ version: 0.17.1
302
+ - !ruby/object:Gem::Dependency
303
+ name: foreman
276
304
  requirement: !ruby/object:Gem::Requirement
277
305
  requirements:
278
306
  - - ">="
@@ -286,47 +314,47 @@ dependencies:
286
314
  - !ruby/object:Gem::Version
287
315
  version: '0'
288
316
  - !ruby/object:Gem::Dependency
289
- name: simplecov
317
+ name: rubocop
290
318
  requirement: !ruby/object:Gem::Requirement
291
319
  requirements:
292
320
  - - "~>"
293
321
  - !ruby/object:Gem::Version
294
- version: 0.17.1
322
+ version: '1.10'
295
323
  type: :development
296
324
  prerelease: false
297
325
  version_requirements: !ruby/object:Gem::Requirement
298
326
  requirements:
299
327
  - - "~>"
300
328
  - !ruby/object:Gem::Version
301
- version: 0.17.1
329
+ version: '1.10'
302
330
  - !ruby/object:Gem::Dependency
303
- name: foreman
331
+ name: rubocop-rails
304
332
  requirement: !ruby/object:Gem::Requirement
305
333
  requirements:
306
- - - ">="
334
+ - - "~>"
307
335
  - !ruby/object:Gem::Version
308
- version: '0'
336
+ version: '2.9'
309
337
  type: :development
310
338
  prerelease: false
311
339
  version_requirements: !ruby/object:Gem::Requirement
312
340
  requirements:
313
- - - ">="
341
+ - - "~>"
314
342
  - !ruby/object:Gem::Version
315
- version: '0'
343
+ version: '2.9'
316
344
  - !ruby/object:Gem::Dependency
317
- name: teaspoon
345
+ name: rubocop-rspec
318
346
  requirement: !ruby/object:Gem::Requirement
319
347
  requirements:
320
- - - ">="
348
+ - - "~>"
321
349
  - !ruby/object:Gem::Version
322
- version: '0'
350
+ version: '2.2'
323
351
  type: :development
324
352
  prerelease: false
325
353
  version_requirements: !ruby/object:Gem::Requirement
326
354
  requirements:
327
- - - ">="
355
+ - - "~>"
328
356
  - !ruby/object:Gem::Version
329
- version: '0'
357
+ version: '2.2'
330
358
  description: GeoBlacklight provides a world-class discovery platform for geospatial
331
359
  (GIS) holdings. It is an open collaborative project aiming to build off of the successes
332
360
  of the Blacklight Solr-powered discovery interface and the multi-institutional OpenGeoportal
@@ -341,8 +369,8 @@ executables:
341
369
  extensions: []
342
370
  extra_rdoc_files: []
343
371
  files:
344
- - ".circleci/config.yml"
345
372
  - ".github/ISSUE_TEMPLATE.md"
373
+ - ".github/workflows/ruby.yml"
346
374
  - ".gitignore"
347
375
  - ".gitmodules"
348
376
  - ".hound.yml"
@@ -419,6 +447,7 @@ files:
419
447
  - app/assets/images/blacklight/uva.svg
420
448
  - app/assets/images/blacklight/web_services.svg
421
449
  - app/assets/images/blacklight/wisconsin.svg
450
+ - app/assets/images/favicon.ico
422
451
  - app/assets/javascripts/geoblacklight/basemaps.js
423
452
  - app/assets/javascripts/geoblacklight/controls.js
424
453
  - app/assets/javascripts/geoblacklight/controls/opacity.js
@@ -427,6 +456,7 @@ files:
427
456
  - app/assets/javascripts/geoblacklight/downloaders/hgl_downloader.js
428
457
  - app/assets/javascripts/geoblacklight/geoblacklight.js
429
458
  - app/assets/javascripts/geoblacklight/modules.js
459
+ - app/assets/javascripts/geoblacklight/modules/bookmarks.js
430
460
  - app/assets/javascripts/geoblacklight/modules/download.js
431
461
  - app/assets/javascripts/geoblacklight/modules/geosearch.js
432
462
  - app/assets/javascripts/geoblacklight/modules/help_text.js
@@ -451,6 +481,7 @@ files:
451
481
  - app/assets/javascripts/geoblacklight/viewers/index_map.js
452
482
  - app/assets/javascripts/geoblacklight/viewers/map.js
453
483
  - app/assets/javascripts/geoblacklight/viewers/oembed.js
484
+ - app/assets/javascripts/geoblacklight/viewers/tms.js
454
485
  - app/assets/javascripts/geoblacklight/viewers/viewer.js
455
486
  - app/assets/javascripts/geoblacklight/viewers/wms.js
456
487
  - app/assets/stylesheets/geoblacklight/geoblacklight.scss
@@ -533,10 +564,13 @@ files:
533
564
  - app/views/relation/index.html.erb
534
565
  - app/views/relation/index.json.jbuilder
535
566
  - app/views/shared/_header_navbar.html.erb
567
+ - babel.config.json
536
568
  - bin/coverage.rb
569
+ - config/initializers/new_gbl_settings_defaults_3_3.yml
537
570
  - config/initializers/rails_config.rb
538
571
  - config/locales/geoblacklight.en.yml
539
572
  - geoblacklight.gemspec
573
+ - jest.config.js
540
574
  - lib/generators/geoblacklight/assets_generator.rb
541
575
  - lib/generators/geoblacklight/install_generator.rb
542
576
  - lib/generators/geoblacklight/templates/Procfile
@@ -563,6 +597,7 @@ files:
563
597
  - lib/geoblacklight/engine.rb
564
598
  - lib/geoblacklight/exceptions.rb
565
599
  - lib/geoblacklight/geoblacklight_helper_behavior.rb
600
+ - lib/geoblacklight/geometry.rb
566
601
  - lib/geoblacklight/item_viewer.rb
567
602
  - lib/geoblacklight/metadata.rb
568
603
  - lib/geoblacklight/metadata/base.rb
@@ -597,6 +632,7 @@ files:
597
632
  - schema/schema-commentary.md
598
633
  - schema/subjects.md
599
634
  - schema/type-values.md
635
+ - setupJest.js
600
636
  - solr/conf/_rest_managed.json
601
637
  - solr/conf/admin-extra.html
602
638
  - solr/conf/core.properties
@@ -614,6 +650,7 @@ files:
614
650
  - solr/conf/xslt/example_atom.xsl
615
651
  - solr/conf/xslt/example_rss.xsl
616
652
  - solr/conf/xslt/luke.xsl
653
+ - spec/config/initializers/rails_config_spec.rb
617
654
  - spec/controllers/catalog_controller_spec.rb
618
655
  - spec/controllers/download_controller_spec.rb
619
656
  - spec/controllers/relation_controller_spec.rb
@@ -649,6 +686,7 @@ files:
649
686
  - spec/features/sms_spec.rb
650
687
  - spec/features/split_view.html.erb_spec.rb
651
688
  - spec/features/suppressed_records_spec.rb
689
+ - spec/features/tms_spec.rb
652
690
  - spec/features/web_services_modal_spec.rb
653
691
  - spec/fixtures/fgdc/harvard-g7064-s2-1834-k3.xml
654
692
  - spec/fixtures/iso19139/stanford-cg357zz0321.xml
@@ -691,6 +729,7 @@ files:
691
729
  - spec/fixtures/solr_documents/public_iiif_princeton.json
692
730
  - spec/fixtures/solr_documents/public_polygon_mit.json
693
731
  - spec/fixtures/solr_documents/restricted-line.json
732
+ - spec/fixtures/solr_documents/tms.json
694
733
  - spec/fixtures/solr_documents/umn_metro_result1.json
695
734
  - spec/fixtures/solr_documents/umn_state_result1.json
696
735
  - spec/fixtures/solr_documents/umn_state_result2.json
@@ -698,13 +737,10 @@ files:
698
737
  - spec/helpers/arcgis_helper_spec.rb
699
738
  - spec/helpers/carto_helper_spec.rb
700
739
  - spec/helpers/geoblacklight_helper_spec.rb
701
- - spec/javascripts/geoblacklight/viewers/esri/tiled_map_layer_spec.js
702
740
  - spec/javascripts/geoblacklight_spec.js
703
741
  - spec/javascripts/metadata_download_button_spec.js
704
- - spec/javascripts/spec_helper.js
705
742
  - spec/javascripts/util_spec.js
706
743
  - spec/lib/geoblacklight/bounding_box_spec.rb
707
- - spec/lib/geoblacklight/controller_override_spec.rb
708
744
  - spec/lib/geoblacklight/document_presenter_spec.rb
709
745
  - spec/lib/geoblacklight/download/geojson_download_spec.rb
710
746
  - spec/lib/geoblacklight/download/geotiff_download_spec.rb
@@ -713,6 +749,7 @@ files:
713
749
  - spec/lib/geoblacklight/download/shapefile_download_spec.rb
714
750
  - spec/lib/geoblacklight/download_spec.rb
715
751
  - spec/lib/geoblacklight/geoblacklight_helper_behavior_spec.rb
752
+ - spec/lib/geoblacklight/geometry_spec.rb
716
753
  - spec/lib/geoblacklight/item_viewer_spec.rb
717
754
  - spec/lib/geoblacklight/metadata/base_spec.rb
718
755
  - spec/lib/geoblacklight/metadata/html_spec.rb
@@ -742,7 +779,6 @@ files:
742
779
  - spec/support/features/session_helpers.rb
743
780
  - spec/support/fixtures.rb
744
781
  - spec/tasks/geoblacklight_spec.rb
745
- - spec/teaspoon_env.rb
746
782
  - spec/test_app_templates/Gemfile.extra
747
783
  - spec/test_app_templates/lib/generators/test_app_generator.rb
748
784
  - spec/test_app_templates/metadata/fgdc.html
@@ -788,11 +824,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
788
824
  - !ruby/object:Gem::Version
789
825
  version: 2.5.2
790
826
  requirements: []
791
- rubygems_version: 3.1.4
827
+ rubygems_version: 3.2.3
792
828
  signing_key:
793
829
  specification_version: 4
794
830
  summary: A discovery platform for geospatial holdings
795
831
  test_files:
832
+ - spec/config/initializers/rails_config_spec.rb
796
833
  - spec/controllers/catalog_controller_spec.rb
797
834
  - spec/controllers/download_controller_spec.rb
798
835
  - spec/controllers/relation_controller_spec.rb
@@ -828,6 +865,7 @@ test_files:
828
865
  - spec/features/sms_spec.rb
829
866
  - spec/features/split_view.html.erb_spec.rb
830
867
  - spec/features/suppressed_records_spec.rb
868
+ - spec/features/tms_spec.rb
831
869
  - spec/features/web_services_modal_spec.rb
832
870
  - spec/fixtures/fgdc/harvard-g7064-s2-1834-k3.xml
833
871
  - spec/fixtures/iso19139/stanford-cg357zz0321.xml
@@ -870,6 +908,7 @@ test_files:
870
908
  - spec/fixtures/solr_documents/public_iiif_princeton.json
871
909
  - spec/fixtures/solr_documents/public_polygon_mit.json
872
910
  - spec/fixtures/solr_documents/restricted-line.json
911
+ - spec/fixtures/solr_documents/tms.json
873
912
  - spec/fixtures/solr_documents/umn_metro_result1.json
874
913
  - spec/fixtures/solr_documents/umn_state_result1.json
875
914
  - spec/fixtures/solr_documents/umn_state_result2.json
@@ -877,13 +916,10 @@ test_files:
877
916
  - spec/helpers/arcgis_helper_spec.rb
878
917
  - spec/helpers/carto_helper_spec.rb
879
918
  - spec/helpers/geoblacklight_helper_spec.rb
880
- - spec/javascripts/geoblacklight/viewers/esri/tiled_map_layer_spec.js
881
919
  - spec/javascripts/geoblacklight_spec.js
882
920
  - spec/javascripts/metadata_download_button_spec.js
883
- - spec/javascripts/spec_helper.js
884
921
  - spec/javascripts/util_spec.js
885
922
  - spec/lib/geoblacklight/bounding_box_spec.rb
886
- - spec/lib/geoblacklight/controller_override_spec.rb
887
923
  - spec/lib/geoblacklight/document_presenter_spec.rb
888
924
  - spec/lib/geoblacklight/download/geojson_download_spec.rb
889
925
  - spec/lib/geoblacklight/download/geotiff_download_spec.rb
@@ -892,6 +928,7 @@ test_files:
892
928
  - spec/lib/geoblacklight/download/shapefile_download_spec.rb
893
929
  - spec/lib/geoblacklight/download_spec.rb
894
930
  - spec/lib/geoblacklight/geoblacklight_helper_behavior_spec.rb
931
+ - spec/lib/geoblacklight/geometry_spec.rb
895
932
  - spec/lib/geoblacklight/item_viewer_spec.rb
896
933
  - spec/lib/geoblacklight/metadata/base_spec.rb
897
934
  - spec/lib/geoblacklight/metadata/html_spec.rb
@@ -921,7 +958,6 @@ test_files:
921
958
  - spec/support/features/session_helpers.rb
922
959
  - spec/support/fixtures.rb
923
960
  - spec/tasks/geoblacklight_spec.rb
924
- - spec/teaspoon_env.rb
925
961
  - spec/test_app_templates/Gemfile.extra
926
962
  - spec/test_app_templates/lib/generators/test_app_generator.rb
927
963
  - spec/test_app_templates/metadata/fgdc.html