geoblacklight 2.4.0 → 3.3.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.
Files changed (223) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +142 -0
  3. data/.gitignore +8 -0
  4. data/.rubocop.yml +24 -23
  5. data/.rubocop_todo.yml +398 -12
  6. data/README.md +3 -3
  7. data/Rakefile +13 -4
  8. data/app/assets/images/favicon.ico +0 -0
  9. data/app/assets/javascripts/geoblacklight/downloaders/downloader.js +1 -1
  10. data/app/assets/javascripts/geoblacklight/geoblacklight.js +18 -1
  11. data/app/assets/javascripts/geoblacklight/modules/bookmarks.js +43 -0
  12. data/app/assets/javascripts/geoblacklight/modules/metadata_download_button.js +6 -1
  13. data/app/assets/javascripts/geoblacklight/modules/results.js +7 -8
  14. data/app/assets/javascripts/geoblacklight/modules/svg_tooltips.js +31 -0
  15. data/app/assets/javascripts/geoblacklight/modules/util.js +5 -0
  16. data/app/assets/javascripts/geoblacklight/viewers/esri.js +3 -3
  17. data/app/assets/javascripts/geoblacklight/viewers/esri/tiled_map_layer.js +1 -1
  18. data/app/assets/javascripts/geoblacklight/viewers/index_map.js +1 -1
  19. data/app/assets/javascripts/geoblacklight/viewers/map.js +12 -2
  20. data/app/assets/javascripts/geoblacklight/viewers/tms.js +10 -0
  21. data/app/assets/javascripts/geoblacklight/viewers/wms.js +3 -3
  22. data/app/assets/stylesheets/geoblacklight/geoblacklight.scss +2 -0
  23. data/app/assets/stylesheets/geoblacklight/modules/_base.scss +33 -0
  24. data/app/assets/stylesheets/geoblacklight/{_blacklight_overrides.scss → modules/_blacklight_overrides.scss} +1 -1
  25. data/app/assets/stylesheets/geoblacklight/{_styles.scss → modules/_styles.scss} +1 -0
  26. data/app/assets/stylesheets/geoblacklight/modules/downloads.scss +37 -54
  27. data/app/assets/stylesheets/geoblacklight/modules/item.scss +1 -0
  28. data/app/assets/stylesheets/geoblacklight/modules/results.scss +17 -29
  29. data/app/assets/stylesheets/geoblacklight/modules/sidebar.scss +12 -42
  30. data/app/assets/stylesheets/geoblacklight/modules/toolbar.scss +17 -59
  31. data/app/controllers/download_controller.rb +12 -12
  32. data/app/controllers/relation_controller.rb +1 -0
  33. data/app/controllers/wms_controller.rb +1 -0
  34. data/app/helpers/arcgis_helper.rb +1 -0
  35. data/app/helpers/blacklight_helper.rb +1 -0
  36. data/app/helpers/carto_helper.rb +1 -0
  37. data/app/helpers/geoblacklight_helper.rb +37 -72
  38. data/app/models/concerns/geoblacklight/solr_document.rb +15 -19
  39. data/app/models/concerns/geoblacklight/solr_document/arcgis.rb +2 -1
  40. data/app/models/concerns/geoblacklight/solr_document/carto.rb +1 -13
  41. data/app/models/concerns/geoblacklight/solr_document/citation.rb +1 -0
  42. data/app/models/concerns/geoblacklight/solr_document/finder.rb +1 -0
  43. data/app/models/concerns/geoblacklight/solr_document/inspection.rb +2 -1
  44. data/app/models/concerns/geoblacklight/spatial_search_behavior.rb +6 -4
  45. data/app/presenters/geoblacklight/document_presenter.rb +2 -1
  46. data/app/views/catalog/_arcgis.html.erb +4 -0
  47. data/app/views/catalog/_carto.html.erb +4 -0
  48. data/app/views/catalog/_document_split.html.erb +1 -1
  49. data/app/views/catalog/_downloads_primary.html.erb +8 -1
  50. data/app/views/catalog/_header_icons.html.erb +3 -3
  51. data/app/views/catalog/_home_text.html.erb +3 -0
  52. data/app/views/catalog/_index_split_default.html.erb +21 -21
  53. data/app/views/catalog/_show_default_viewer_container.html.erb +1 -1
  54. data/app/views/download/hgl.html.erb +13 -11
  55. data/app/views/relation/_ancestors.html.erb +3 -6
  56. data/app/views/relation/_descendants.html.erb +4 -7
  57. data/app/views/relation/index.html.erb +20 -8
  58. data/app/views/relation/index.json.jbuilder +2 -1
  59. data/app/views/shared/_header_navbar.html.erb +0 -2
  60. data/babel.config.json +4 -0
  61. data/bin/coverage.rb +36 -0
  62. data/config/initializers/new_gbl_settings_defaults_3_3.yml +10 -0
  63. data/config/initializers/rails_config.rb +5 -0
  64. data/config/locales/geoblacklight.en.yml +7 -2
  65. data/geoblacklight.gemspec +7 -9
  66. data/jest.config.js +25 -0
  67. data/lib/generators/geoblacklight/assets_generator.rb +46 -0
  68. data/lib/generators/geoblacklight/install_generator.rb +4 -10
  69. data/lib/generators/geoblacklight/templates/assets/_blacklight.scss +1 -0
  70. data/lib/generators/geoblacklight/templates/assets/_customizations.scss +28 -0
  71. data/{app/assets/stylesheets/geoblacklight/application.scss → lib/generators/geoblacklight/templates/assets/_geoblacklight.scss} +0 -1
  72. data/lib/generators/geoblacklight/templates/assets/application.scss +7 -0
  73. data/lib/generators/geoblacklight/templates/{geoblacklight.js → assets/geoblacklight.js} +0 -0
  74. data/lib/generators/geoblacklight/templates/catalog_controller.rb +5 -3
  75. data/lib/generators/geoblacklight/templates/settings.yml +20 -17
  76. data/lib/generators/geoblacklight/webpacker_generator.rb +1 -0
  77. data/lib/geoblacklight.rb +2 -2
  78. data/lib/geoblacklight/bounding_box.rb +2 -1
  79. data/lib/geoblacklight/catalog_helper_override.rb +1 -0
  80. data/lib/geoblacklight/constants.rb +2 -0
  81. data/lib/geoblacklight/download.rb +2 -1
  82. data/lib/geoblacklight/download/geojson_download.rb +1 -0
  83. data/lib/geoblacklight/download/geotiff_download.rb +1 -0
  84. data/lib/geoblacklight/download/hgl_download.rb +1 -0
  85. data/lib/geoblacklight/download/kmz_download.rb +3 -2
  86. data/lib/geoblacklight/download/shapefile_download.rb +1 -0
  87. data/lib/geoblacklight/engine.rb +2 -2
  88. data/lib/geoblacklight/exceptions.rb +1 -0
  89. data/lib/geoblacklight/geoblacklight_helper_behavior.rb +1 -0
  90. data/lib/geoblacklight/geometry.rb +70 -0
  91. data/lib/geoblacklight/item_viewer.rb +6 -1
  92. data/lib/geoblacklight/metadata.rb +1 -0
  93. data/lib/geoblacklight/metadata/base.rb +2 -7
  94. data/lib/geoblacklight/metadata/fgdc.rb +1 -0
  95. data/lib/geoblacklight/metadata/html.rb +2 -2
  96. data/lib/geoblacklight/metadata/iso19139.rb +1 -0
  97. data/lib/geoblacklight/metadata_transformer.rb +1 -0
  98. data/lib/geoblacklight/metadata_transformer/base.rb +1 -0
  99. data/lib/geoblacklight/metadata_transformer/fgdc.rb +1 -0
  100. data/lib/geoblacklight/metadata_transformer/iso19139.rb +1 -0
  101. data/lib/geoblacklight/reference.rb +1 -0
  102. data/lib/geoblacklight/references.rb +7 -3
  103. data/lib/geoblacklight/relation/ancestors.rb +3 -2
  104. data/lib/geoblacklight/relation/descendants.rb +2 -1
  105. data/lib/geoblacklight/relation/relation_response.rb +2 -1
  106. data/lib/geoblacklight/routes.rb +1 -0
  107. data/lib/geoblacklight/routes/downloadable.rb +1 -0
  108. data/lib/geoblacklight/routes/exportable.rb +1 -0
  109. data/lib/geoblacklight/routes/wms.rb +1 -0
  110. data/lib/geoblacklight/version.rb +2 -1
  111. data/lib/geoblacklight/view_helper_override.rb +1 -0
  112. data/lib/geoblacklight/wms_layer.rb +2 -4
  113. data/lib/geoblacklight/wms_layer/feature_info_response.rb +1 -0
  114. data/lib/tasks/geoblacklight.rake +38 -32
  115. data/package.json +17 -1
  116. data/setupJest.js +14 -0
  117. data/solr/conf/schema.xml +1 -3
  118. data/spec/config/initializers/rails_config_spec.rb +14 -0
  119. data/spec/controllers/catalog_controller_spec.rb +7 -6
  120. data/spec/controllers/download_controller_spec.rb +1 -0
  121. data/spec/controllers/relation_controller_spec.rb +1 -0
  122. data/spec/controllers/wms_controller_spec.rb +1 -0
  123. data/spec/factories/user.rb +1 -0
  124. data/spec/features/bookmarks_spec.rb +1 -0
  125. data/spec/features/configurable_basemap_spec.rb +1 -0
  126. data/spec/features/data_dictionary_download_spec.rb +1 -0
  127. data/spec/features/download_layer_spec.rb +2 -1
  128. data/spec/features/empty_search_spec.rb +1 -0
  129. data/spec/features/esri_viewer_spec.rb +1 -5
  130. data/spec/features/exports_spec.rb +4 -12
  131. data/spec/features/help_text_spec.rb +1 -0
  132. data/spec/features/home_page_spec.rb +6 -0
  133. data/spec/features/iiif_viewer_spec.rb +1 -0
  134. data/spec/features/index_map_spec.rb +1 -0
  135. data/spec/features/layer_inspection_spec.rb +1 -0
  136. data/spec/features/layer_opacity_spec.rb +1 -0
  137. data/spec/features/layer_preview_spec.rb +1 -0
  138. data/spec/features/layer_with_no_references_spec.rb +1 -0
  139. data/spec/features/linkified_attribute_table_spec.rb +1 -0
  140. data/spec/features/metadata_panel_spec.rb +1 -0
  141. data/spec/features/missing_metadata_spec.rb +1 -0
  142. data/spec/features/multiple_downloads_spec.rb +15 -0
  143. data/spec/features/oembed_spec.rb +1 -0
  144. data/spec/features/relations_spec.rb +10 -29
  145. data/spec/features/saved_searches_spec.rb +1 -0
  146. data/spec/features/search_bar_spec.rb +1 -0
  147. data/spec/features/search_results_map_spec.rb +1 -6
  148. data/spec/features/search_results_overlap_ratio_spec.rb +6 -5
  149. data/spec/features/search_spec.rb +1 -0
  150. data/spec/features/show_page_metadata_spec.rb +1 -0
  151. data/spec/features/sms_spec.rb +1 -0
  152. data/spec/features/split_view.html.erb_spec.rb +3 -2
  153. data/spec/features/suppressed_records_spec.rb +1 -0
  154. data/spec/features/tms_spec.rb +10 -0
  155. data/spec/features/web_services_modal_spec.rb +1 -0
  156. data/spec/fixtures/solr_documents/multiple-downloads.json +30 -0
  157. data/spec/fixtures/solr_documents/public_iiif_princeton.json +1 -1
  158. data/spec/fixtures/solr_documents/tms.json +29 -0
  159. data/spec/helpers/arcgis_helper_spec.rb +1 -0
  160. data/spec/helpers/carto_helper_spec.rb +1 -0
  161. data/spec/helpers/geoblacklight_helper_spec.rb +73 -14
  162. data/spec/javascripts/geoblacklight_spec.js +0 -6
  163. data/spec/javascripts/metadata_download_button_spec.js +5 -3
  164. data/spec/javascripts/util_spec.js +2 -4
  165. data/spec/lib/geoblacklight/bounding_box_spec.rb +1 -0
  166. data/spec/lib/geoblacklight/document_presenter_spec.rb +3 -2
  167. data/spec/lib/geoblacklight/download/geojson_download_spec.rb +1 -0
  168. data/spec/lib/geoblacklight/download/geotiff_download_spec.rb +1 -0
  169. data/spec/lib/geoblacklight/download/hgl_download_spec.rb +1 -0
  170. data/spec/lib/geoblacklight/download/kmz_download_spec.rb +3 -2
  171. data/spec/lib/geoblacklight/download/shapefile_download_spec.rb +1 -0
  172. data/spec/lib/geoblacklight/download_spec.rb +3 -2
  173. data/spec/lib/geoblacklight/geoblacklight_helper_behavior_spec.rb +1 -0
  174. data/spec/lib/geoblacklight/geometry_spec.rb +48 -0
  175. data/spec/lib/geoblacklight/item_viewer_spec.rb +13 -0
  176. data/spec/lib/geoblacklight/metadata/base_spec.rb +1 -0
  177. data/spec/lib/geoblacklight/metadata/html_spec.rb +1 -0
  178. data/spec/lib/geoblacklight/metadata_spec.rb +1 -0
  179. data/spec/lib/geoblacklight/metadata_transformer/base_spec.rb +3 -2
  180. data/spec/lib/geoblacklight/metadata_transformer/fgdc_spec.rb +3 -2
  181. data/spec/lib/geoblacklight/metadata_transformer/iso19139_spec.rb +3 -2
  182. data/spec/lib/geoblacklight/metadata_transformer_spec.rb +4 -3
  183. data/spec/lib/geoblacklight/reference_spec.rb +1 -0
  184. data/spec/lib/geoblacklight/references_spec.rb +3 -4
  185. data/spec/lib/geoblacklight/relation/ancestors_spec.rb +2 -1
  186. data/spec/lib/geoblacklight/relation/descendants_spec.rb +2 -1
  187. data/spec/lib/geoblacklight/relation/relation_response_spec.rb +1 -0
  188. data/spec/lib/geoblacklight/view_helper_override_spec.rb +1 -0
  189. data/spec/lib/geoblacklight/wms_layer/feature_info_response_spec.rb +5 -4
  190. data/spec/lib/geoblacklight/wms_layer_spec.rb +1 -0
  191. data/spec/models/concerns/geoblacklight/solr_document/carto_spec.rb +1 -20
  192. data/spec/models/concerns/geoblacklight/solr_document/citation_spec.rb +1 -0
  193. data/spec/models/concerns/geoblacklight/solr_document/finder_spec.rb +1 -0
  194. data/spec/models/concerns/geoblacklight/solr_document/inspection_spec.rb +1 -0
  195. data/spec/models/concerns/geoblacklight/solr_document_spec.rb +1 -0
  196. data/spec/models/concerns/geoblacklight/spatial_search_behavior_spec.rb +15 -2
  197. data/spec/routing/catalog_routing_spec.rb +1 -0
  198. data/spec/spec_helper.rb +12 -9
  199. data/spec/support/backport_test_helpers.rb +1 -0
  200. data/spec/support/features.rb +1 -0
  201. data/spec/support/features/session_helpers.rb +1 -0
  202. data/spec/support/fixtures.rb +1 -0
  203. data/spec/tasks/geoblacklight_spec.rb +4 -3
  204. data/spec/test_app_templates/Gemfile.extra +1 -0
  205. data/spec/test_app_templates/lib/generators/test_app_generator.rb +2 -8
  206. data/spec/views/catalog/_document_split.html.erb_spec.rb +2 -1
  207. data/spec/views/catalog/_index_split.html.erb_spec.rb +2 -1
  208. data/spec/views/catalog/_results_pagination.html.erb_spec.rb +1 -0
  209. data/spec/views/catalog/_show_downloads.html.erb_spec.rb +1 -0
  210. data/spec/views/catalog/_show_tools.html.erb_spec.rb +3 -5
  211. data/template.rb +4 -2
  212. metadata +74 -78
  213. data/.circleci/config.yml +0 -164
  214. data/app/assets/stylesheets/geoblacklight/_geoblacklight.scss +0 -36
  215. data/app/assets/stylesheets/geoblacklight/modules/relations.scss +0 -15
  216. data/app/views/catalog/_exports.html.erb +0 -3
  217. data/app/views/catalog/_show_tools.html.erb +0 -25
  218. data/lib/generators/geoblacklight/templates/geoblacklight.scss +0 -4
  219. data/spec/javascripts/spec_helper.js +0 -32
  220. data/spec/lib/geoblacklight/controller_override_spec.rb +0 -1
  221. data/spec/teaspoon_env.rb +0 -213
  222. data/vendor/assets/javascripts/readmore.js +0 -0
  223. data/vendor/assets/javascripts/readmore.min.js +0 -0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  feature 'Search' do
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  feature 'Metadata display on show page' do
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  feature 'SMS tool', js: true do
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  feature 'Index view', js: true do
@@ -9,7 +10,7 @@ feature 'Index view', js: true do
9
10
  scenario 'should have documents and map on page' do
10
11
  visit search_catalog_path(f: { Settings.FIELDS.PROVENANCE => ['Stanford'] })
11
12
  expect(page).to have_css('#documents')
12
- expect(page).to have_css('.document', count: 5)
13
+ expect(page).to have_css('.document', count: 6)
13
14
  expect(page).to have_css('#map')
14
15
  end
15
16
 
@@ -51,7 +52,7 @@ feature 'Index view', js: true do
51
52
  end
52
53
 
53
54
  scenario 'click on a record area to expand collapse' do
54
- within('.documentHeader', match: :first) do
55
+ within('article', match: :first) do
55
56
  expect(page).not_to have_css('.collapse')
56
57
  find('button').click
57
58
  expect(page).to have_css('.collapse', visible: true)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  feature 'Suppressed records' do
@@ -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
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  feature 'web services tools' do
@@ -0,0 +1,30 @@
1
+ {
2
+ "geoblacklight_version": "1.0",
3
+ "dc_identifier_s": "https://cugir.library.cornell.edu/catalog/cugir-007950",
4
+ "dc_title_s": "Test record with additional download formats",
5
+ "dc_description_s": "This is a test record containing new-style references as nested child documents. In addition to the origianl shapefile download, the references section contains additional PDF and KMZ downloads.",
6
+ "dc_rights_s": "Public",
7
+ "dct_provenance_s": "Cornell",
8
+ "dct_references_s": "{\"http:\/\/schema.org\/downloadUrl\":[{\"url\":\"https:\/\/cugir-data.s3.amazonaws.com\/00\/79\/50\/cugir-007950.zip\",\"label\":\"Shapefile\"},{\"url\":\"https:\/\/cugir-data.s3.amazonaws.com\/00\/79\/50\/agBROO.pdf\",\"label\":\"PDF\"},{\"url\":\"https:\/\/cugir-data.s3.amazonaws.com\/00\/79\/50\/agBROO2011.kmz\",\"label\":\"KMZ\"}],\"http:\/\/www.opengis.net\/cat\/csw\/csdgm\":\"https:\/\/cugir-data.s3.amazonaws.com\/00\/79\/50\/fgdc.xml\",\"http:\/\/www.w3.org\/1999\/xhtml\":\"https:\/\/cugir-data.s3.amazonaws.com\/00\/79\/50\/fgdc.html\",\"http:\/\/www.opengis.net\/def\/serviceType\/ogc\/wfs\":\"https:\/\/cugir.library.cornell.edu\/geoserver\/cugir\/wfs\",\"http:\/\/www.opengis.net\/def\/serviceType\/ogc\/wms\":\"https:\/\/cugir.library.cornell.edu\/geoserver\/cugir\/wms\"}",
9
+ "layer_id_s": "cugir007950",
10
+ "layer_slug_s": "cugir-007950",
11
+ "dc_type_s": "Dataset",
12
+ "dc_format_s": "Shapefile",
13
+ "layer_geom_type_s": "Polygon",
14
+ "layer_modified_dt": "2019-05-24T00:00:00Z",
15
+ "dc_creator_sm": [
16
+ "Cornell Institute for Resource Information Sciences (Cornell IRIS)",
17
+ "NYS Department of Agriculture and Markets"
18
+ ],
19
+ "dc_subject_sm": [
20
+ "New York State Agricultural District boundaries",
21
+ "Agriculture and Markets",
22
+ "Agricultural Districts Mapping Program"
23
+ ],
24
+ "dct_spatial_sm": ["Broome County NY"],
25
+ "dct_issued_s": "2011-02-28",
26
+ "dct_temporal_sm": ["2011"],
27
+ "dct_isPartOf_sm": ["Agricultural Districts (NYS Ag and Markets)"],
28
+ "solr_geom": "ENVELOPE(-76.12987, -75.42034, 42.414648, 41.997963)",
29
+ "solr_year_i": 2011
30
+ }
@@ -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
+ }
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  describe ArcgisHelper, type: :helper do
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  describe CartoHelper, type: :helper do
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  describe GeoblacklightHelper, type: :helper do
@@ -8,7 +9,7 @@ describe GeoblacklightHelper, type: :helper do
8
9
  let(:subject_field) { Settings.FIELDS.SUBJECT }
9
10
  it 'contains unique links' do
10
11
  expect(self).to receive(:search_catalog_path).exactly(3).times.and_return("http://example.com/catalog?f[#{subject_field}][]=category")
11
- html = Capybara.string(render_facet_links(subject_field, %w(Test Test Earth Science)))
12
+ html = Capybara.string(render_facet_links(subject_field, %w[Test Test Earth Science]))
12
13
  expect(html).to have_css 'a', count: 3
13
14
  expect(html).to have_css 'a', text: 'Test', count: 1
14
15
  expect(html).to have_css 'a', text: 'Earth', count: 1
@@ -52,6 +53,17 @@ describe GeoblacklightHelper, type: :helper do
52
53
  end
53
54
  end
54
55
 
56
+ describe '#download_link_file' do
57
+ let(:label) { 'Test Link Text' }
58
+ let(:id) { 'test-id' }
59
+ let(:url) { 'http://example.com/urn:hul.harvard.edu:HARVARD.SDE2.TG10USAIANNH/data.zip' }
60
+
61
+ it 'generates a link to download the original file' do
62
+ puts download_link_file(label, id, url)
63
+ expect(download_link_file(label, id, url)).to eq '<a contentUrl="http://example.com/urn:hul.harvard.edu:HARVARD.SDE2.TG10USAIANNH/data.zip" class="btn btn-default download download-original" data-download="trigger" data-download-type="direct" data-download-id="test-id" href="http://example.com/urn:hul.harvard.edu:HARVARD.SDE2.TG10USAIANNH/data.zip">Test Link Text</a>'
64
+ end
65
+ end
66
+
55
67
  describe '#download_link_direct' do
56
68
  let(:text) { 'Test Link Text' }
57
69
  let(:references_field) { Settings.FIELDS.REFERENCES }
@@ -185,7 +197,7 @@ describe GeoblacklightHelper, type: :helper do
185
197
  context 'as a multivalued Array' do
186
198
  let(:document_attributes) do
187
199
  {
188
- value: %w(short description)
200
+ value: %w[short description]
189
201
  }
190
202
  end
191
203
  it 'uses both values' do
@@ -204,9 +216,9 @@ describe GeoblacklightHelper, type: :helper do
204
216
  allow(helper).to receive(:application_name).and_return('GeoBlacklight')
205
217
  end
206
218
 
207
- describe '#cartodb_link' do
219
+ describe '#carto_link' do
208
220
  it 'aliases CartoHelper#carto_link' do
209
- expect(helper.cartodb_link('http://demo.org/wfs/layer.json')).to eq(helper.carto_link('http://demo.org/wfs/layer.json'))
221
+ expect(helper.carto_link('http://demo.org/wfs/layer.json')).to eq(helper.carto_link('http://demo.org/wfs/layer.json'))
210
222
  end
211
223
  end
212
224
  end
@@ -240,7 +252,7 @@ describe GeoblacklightHelper, type: :helper do
240
252
 
241
253
  describe '#render_value_as_truncate_abstract' do
242
254
  context 'with multiple values' do
243
- let(:document) { SolrDocument.new(value: %w(short description)) }
255
+ let(:document) { SolrDocument.new(value: %w[short description]) }
244
256
  it 'wraps in correct DIV class' do
245
257
  expect(helper.render_value_as_truncate_abstract(document)).to eq '<div class="truncate-abstract">short description</div>'
246
258
  end
@@ -328,15 +340,62 @@ describe GeoblacklightHelper, type: :helper do
328
340
  end
329
341
 
330
342
  describe '#relations_icon' do
331
- it 'renders a goemetry type if configured' do
332
- allow(Settings).to receive(:USE_GEOM_FOR_RELATIONS_ICON).and_return(true)
333
- html = Capybara.string(helper.relations_icon({ 'layer_geom_type_s' => 'polygon' }, 'leaf'))
334
- expect(html.title.strip).to eq 'Polygon'
335
- end
336
- it 'renders provided icon if not configured to use geometry' do
337
- allow(Settings).to receive(:USE_GEOM_FOR_RELATIONS_ICON).and_return(false)
338
- html = Capybara.string(helper.relations_icon({ 'layer_geom_type_s' => 'polygon' }, 'leaf'))
339
- expect(html.title.strip).to eq 'Leaf'
343
+ context 'when configured to use the geometry type' do
344
+ before do
345
+ allow(Settings).to receive(:USE_GEOM_FOR_RELATIONS_ICON).and_return(true)
346
+ end
347
+
348
+ it 'renders a goemetry type as the icon' do
349
+ html = Capybara.string(helper.relations_icon({ Settings.FIELDS.GEOM_TYPE => 'polygon' }, 'leaf'))
350
+ expect(html.title.strip).to eq 'Polygon'
351
+ end
352
+
353
+ it 'has the svg_tooltip class so that the Bootstrap tooltip is applied' do
354
+ html = Capybara.string(helper.relations_icon({ Settings.FIELDS.GEOM_TYPE => 'polygon' }, 'leaf'))
355
+ expect(html).to have_css('.blacklight-icons.svg_tooltip')
356
+ end
357
+ end
358
+
359
+ context 'when not confiugred to use the geometry type' do
360
+ before do
361
+ allow(Settings).to receive(:USE_GEOM_FOR_RELATIONS_ICON).and_return(false)
362
+ end
363
+
364
+ it 'renders the provided icon' do
365
+ html = Capybara.string(helper.relations_icon({ Settings.FIELDS.GEOM_TYPE => 'polygon' }, 'leaf'))
366
+ expect(html.title.strip).to eq 'Leaf'
367
+ end
368
+
369
+ it 'does not have the svg_tooltip class' do
370
+ html = Capybara.string(helper.relations_icon({ Settings.FIELDS.GEOM_TYPE => 'polygon' }, 'leaf'))
371
+ expect(html).not_to have_css('.blacklight-icons.svg_tooltip')
372
+ end
373
+ end
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
340
399
  end
341
400
  end
342
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
  });
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  describe Geoblacklight::BoundingBox do
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  describe Geoblacklight::DocumentPresenter do
4
5
  # Please see https://github.com/projectblacklight/blacklight/blob/v6.15.0/spec/presenters/index_presenter_spec.rb#L4
6
+ subject { presenter }
5
7
  let(:request_context) { double(document_index_view_type: 'list') }
6
8
  let(:blacklight_config) do
7
9
  Blacklight::Configuration.new.configure do |config|
@@ -12,7 +14,6 @@ describe Geoblacklight::DocumentPresenter do
12
14
  end
13
15
  end
14
16
  let(:solr_fields) { Settings.FIELDS }
15
- subject { presenter }
16
17
  let(:presenter) do
17
18
  described_class.new(document, request_context, blacklight_config)
18
19
  end
@@ -23,7 +24,7 @@ describe Geoblacklight::DocumentPresenter do
23
24
  layer_id_s: 'druid:abc123',
24
25
  non_index_field: 'do not render',
25
26
  period: 'Ends with period.',
26
- multi_display: %w(blue blah)
27
+ multi_display: %w[blue blah]
27
28
  )
28
29
  end
29
30
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  describe Geoblacklight::GeojsonDownload do
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  describe Geoblacklight::GeotiffDownload do
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  describe Geoblacklight::HglDownload do
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  describe Geoblacklight::KmzDownload do
4
- 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)') }
5
6
  let(:download) { described_class.new(document) }
6
7
  describe '#initialize' do
7
8
  it 'initializes as a KmzDownload object with specific options' do
@@ -9,7 +10,7 @@ describe Geoblacklight::KmzDownload do
9
10
  options = download.instance_variable_get(:@options)
10
11
  expect(options[:content_type]).to eq 'application/vnd.google-earth.kmz'
11
12
  expect(options[:request_params][:layers]).to eq 'stanford-test'
12
- 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'
13
14
  end
14
15
  it 'merges custom options' do
15
16
  download = described_class.new(document, timeout: 33)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  describe Geoblacklight::ShapefileDownload do
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  describe Geoblacklight::Download do
@@ -6,7 +7,7 @@ describe Geoblacklight::Download do
6
7
  let(:faraday_connection) { instance_double(Faraday::Connection) }
7
8
  let(:faraday_response) { instance_double(Faraday::Response) }
8
9
  let(:references_field) { Settings.FIELDS.REFERENCES }
9
- 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) }
10
11
  let(:options) { { type: 'shapefile', extension: 'zip', service_type: 'wms', content_type: 'application/zip' } }
11
12
 
12
13
  describe '#initialize' do
@@ -31,7 +32,7 @@ describe Geoblacklight::Download do
31
32
  end
32
33
  describe '#file_path' do
33
34
  it 'returns the path with name and extension' do
34
- expect(download.class.file_path).to eq "#{Rails.root}/tmp/cache/downloads"
35
+ expect(download.class.file_path).to eq Rails.root.join('tmp', 'cache', 'downloads')
35
36
  end
36
37
  it 'is configurable' do
37
38
  expect(Settings).to receive(:DOWNLOAD_PATH).and_return('configured/path')
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  describe Geoblacklight::GeoblacklightHelperBehavior 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