geoblacklight 2.4.0 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
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