geoblacklight 2.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 (418) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +195 -0
  3. data/.github/ISSUE_TEMPLATE.md +17 -0
  4. data/.gitignore +21 -0
  5. data/.gitmodules +0 -0
  6. data/.hound.yml +8 -0
  7. data/.jshintignore +2 -0
  8. data/.jshintrc +67 -0
  9. data/.rubocop.yml +99 -0
  10. data/.rubocop_todo.yml +196 -0
  11. data/.solr_wrapper +5 -0
  12. data/CODE_OF_CONDUCT.md +76 -0
  13. data/CONTRIBUTING.md +49 -0
  14. data/Gemfile +39 -0
  15. data/LICENSE.txt +13 -0
  16. data/README.md +39 -0
  17. data/Rakefile +125 -0
  18. data/app/assets/images/blacklight/arrow-circle-down.svg +4 -0
  19. data/app/assets/images/blacklight/baruch-cuny.svg +6 -0
  20. data/app/assets/images/blacklight/berkeley.svg +7 -0
  21. data/app/assets/images/blacklight/book.svg +6 -0
  22. data/app/assets/images/blacklight/bookmark.svg +6 -0
  23. data/app/assets/images/blacklight/cd-rom.svg +6 -0
  24. data/app/assets/images/blacklight/chicago.svg +7 -0
  25. data/app/assets/images/blacklight/columbia.svg +6 -0
  26. data/app/assets/images/blacklight/cornell.svg +8 -0
  27. data/app/assets/images/blacklight/dvd-rom.svg +6 -0
  28. data/app/assets/images/blacklight/email.svg +6 -0
  29. data/app/assets/images/blacklight/esri-globe.svg +34 -0
  30. data/app/assets/images/blacklight/geoblacklight-icons.json +2079 -0
  31. data/app/assets/images/blacklight/globe.svg +4 -0
  32. data/app/assets/images/blacklight/harvard.svg +6 -0
  33. data/app/assets/images/blacklight/home.svg +4 -0
  34. data/app/assets/images/blacklight/illinois.svg +7 -0
  35. data/app/assets/images/blacklight/image.svg +6 -0
  36. data/app/assets/images/blacklight/indiana.svg +6 -0
  37. data/app/assets/images/blacklight/iowa.svg +6 -0
  38. data/app/assets/images/blacklight/leaf.svg +6 -0
  39. data/app/assets/images/blacklight/lewis-clark.svg +8 -0
  40. data/app/assets/images/blacklight/line.svg +7 -0
  41. data/app/assets/images/blacklight/logo.svg +1 -0
  42. data/app/assets/images/blacklight/map-marker.svg +6 -0
  43. data/app/assets/images/blacklight/map.svg +6 -0
  44. data/app/assets/images/blacklight/maryland.svg +6 -0
  45. data/app/assets/images/blacklight/massgis.svg +6 -0
  46. data/app/assets/images/blacklight/metadata.svg +6 -0
  47. data/app/assets/images/blacklight/michigan-state.svg +7 -0
  48. data/app/assets/images/blacklight/michigan.svg +6 -0
  49. data/app/assets/images/blacklight/minnesota.svg +6 -0
  50. data/app/assets/images/blacklight/mit.svg +6 -0
  51. data/app/assets/images/blacklight/mixed.svg +8 -0
  52. data/app/assets/images/blacklight/multilinestring.svg +9 -0
  53. data/app/assets/images/blacklight/multipoint.svg +6 -0
  54. data/app/assets/images/blacklight/multipolygon.svg +9 -0
  55. data/app/assets/images/blacklight/nyu.svg +9 -0
  56. data/app/assets/images/blacklight/ohio-state.svg +8 -0
  57. data/app/assets/images/blacklight/pagelines-brands.svg +6 -0
  58. data/app/assets/images/blacklight/paper-map.svg +6 -0
  59. data/app/assets/images/blacklight/penn-state.svg +7 -0
  60. data/app/assets/images/blacklight/point.svg +6 -0
  61. data/app/assets/images/blacklight/polygon.svg +7 -0
  62. data/app/assets/images/blacklight/polyline.svg +9 -0
  63. data/app/assets/images/blacklight/princeton.svg +6 -0
  64. data/app/assets/images/blacklight/public.svg +6 -0
  65. data/app/assets/images/blacklight/purdue.svg +7 -0
  66. data/app/assets/images/blacklight/raster.svg +6 -0
  67. data/app/assets/images/blacklight/restricted.svg +6 -0
  68. data/app/assets/images/blacklight/sms.svg +6 -0
  69. data/app/assets/images/blacklight/stanford.svg +6 -0
  70. data/app/assets/images/blacklight/table.svg +6 -0
  71. data/app/assets/images/blacklight/tags.svg +4 -0
  72. data/app/assets/images/blacklight/texas.svg +6 -0
  73. data/app/assets/images/blacklight/tufts.svg +6 -0
  74. data/app/assets/images/blacklight/ucla.svg +6 -0
  75. data/app/assets/images/blacklight/uva.svg +6 -0
  76. data/app/assets/images/blacklight/web_services.svg +6 -0
  77. data/app/assets/images/blacklight/wisconsin.svg +6 -0
  78. data/app/assets/javascripts/geoblacklight/basemaps.js +85 -0
  79. data/app/assets/javascripts/geoblacklight/controls.js +1 -0
  80. data/app/assets/javascripts/geoblacklight/controls/opacity.js +6 -0
  81. data/app/assets/javascripts/geoblacklight/downloaders.js +1 -0
  82. data/app/assets/javascripts/geoblacklight/downloaders/downloader.js +61 -0
  83. data/app/assets/javascripts/geoblacklight/downloaders/hgl_downloader.js +32 -0
  84. data/app/assets/javascripts/geoblacklight/geoblacklight.js +42 -0
  85. data/app/assets/javascripts/geoblacklight/modules.js +1 -0
  86. data/app/assets/javascripts/geoblacklight/modules/collapse.js +7 -0
  87. data/app/assets/javascripts/geoblacklight/modules/download.js +11 -0
  88. data/app/assets/javascripts/geoblacklight/modules/geosearch.js +133 -0
  89. data/app/assets/javascripts/geoblacklight/modules/help_text.js +7 -0
  90. data/app/assets/javascripts/geoblacklight/modules/home.js +16 -0
  91. data/app/assets/javascripts/geoblacklight/modules/item.js +13 -0
  92. data/app/assets/javascripts/geoblacklight/modules/layer_opacity.js +68 -0
  93. data/app/assets/javascripts/geoblacklight/modules/metadata.js +15 -0
  94. data/app/assets/javascripts/geoblacklight/modules/metadata_download_button.js +53 -0
  95. data/app/assets/javascripts/geoblacklight/modules/relations.js +14 -0
  96. data/app/assets/javascripts/geoblacklight/modules/results.js +82 -0
  97. data/app/assets/javascripts/geoblacklight/modules/util.js +38 -0
  98. data/app/assets/javascripts/geoblacklight/templates/index_map_download.hbs +19 -0
  99. data/app/assets/javascripts/geoblacklight/templates/index_map_info.hbs +40 -0
  100. data/app/assets/javascripts/geoblacklight/viewers.js +1 -0
  101. data/app/assets/javascripts/geoblacklight/viewers/esri.js +77 -0
  102. data/app/assets/javascripts/geoblacklight/viewers/esri/dynamic_map_layer.js +85 -0
  103. data/app/assets/javascripts/geoblacklight/viewers/esri/feature_layer.js +76 -0
  104. data/app/assets/javascripts/geoblacklight/viewers/esri/image_map_layer.js +14 -0
  105. data/app/assets/javascripts/geoblacklight/viewers/esri/tiled_map_layer.js +50 -0
  106. data/app/assets/javascripts/geoblacklight/viewers/iiif.js +25 -0
  107. data/app/assets/javascripts/geoblacklight/viewers/index_map.js +70 -0
  108. data/app/assets/javascripts/geoblacklight/viewers/map.js +67 -0
  109. data/app/assets/javascripts/geoblacklight/viewers/oembed.js +13 -0
  110. data/app/assets/javascripts/geoblacklight/viewers/viewer.js +65 -0
  111. data/app/assets/javascripts/geoblacklight/viewers/wms.js +74 -0
  112. data/app/assets/stylesheets/geoblacklight/_blacklight_overrides.scss +51 -0
  113. data/app/assets/stylesheets/geoblacklight/_geoblacklight.scss +36 -0
  114. data/app/assets/stylesheets/geoblacklight/_styles.scss +4 -0
  115. data/app/assets/stylesheets/geoblacklight/application.scss +2 -0
  116. data/app/assets/stylesheets/geoblacklight/modules/downloads.scss +93 -0
  117. data/app/assets/stylesheets/geoblacklight/modules/facets.scss +5 -0
  118. data/app/assets/stylesheets/geoblacklight/modules/geosearch.scss +29 -0
  119. data/app/assets/stylesheets/geoblacklight/modules/home.scss +28 -0
  120. data/app/assets/stylesheets/geoblacklight/modules/icon-customization.scss +50 -0
  121. data/app/assets/stylesheets/geoblacklight/modules/index_maps.scss +7 -0
  122. data/app/assets/stylesheets/geoblacklight/modules/item.scss +26 -0
  123. data/app/assets/stylesheets/geoblacklight/modules/layer_opacity.scss +87 -0
  124. data/app/assets/stylesheets/geoblacklight/modules/metadata.scss +31 -0
  125. data/app/assets/stylesheets/geoblacklight/modules/metadata_content.scss +43 -0
  126. data/app/assets/stylesheets/geoblacklight/modules/metadata_markup.scss +9 -0
  127. data/app/assets/stylesheets/geoblacklight/modules/metadata_missing.scss +7 -0
  128. data/app/assets/stylesheets/geoblacklight/modules/mixins.scss +5 -0
  129. data/app/assets/stylesheets/geoblacklight/modules/modal.scss +14 -0
  130. data/app/assets/stylesheets/geoblacklight/modules/relations.scss +15 -0
  131. data/app/assets/stylesheets/geoblacklight/modules/results.scss +68 -0
  132. data/app/assets/stylesheets/geoblacklight/modules/search_widgets.scss +5 -0
  133. data/app/assets/stylesheets/geoblacklight/modules/sidebar.scss +60 -0
  134. data/app/assets/stylesheets/geoblacklight/modules/toolbar.scss +70 -0
  135. data/app/assets/stylesheets/geoblacklight/modules/web_services.scss +5 -0
  136. data/app/controllers/download_controller.rb +114 -0
  137. data/app/controllers/relation_controller.rb +20 -0
  138. data/app/controllers/wms_controller.rb +15 -0
  139. data/app/helpers/arcgis_helper.rb +12 -0
  140. data/app/helpers/blacklight_helper.rb +9 -0
  141. data/app/helpers/carto_helper.rb +29 -0
  142. data/app/helpers/geoblacklight_helper.rb +323 -0
  143. data/app/models/concerns/geoblacklight/solr_document.rb +113 -0
  144. data/app/models/concerns/geoblacklight/solr_document/arcgis.rb +10 -0
  145. data/app/models/concerns/geoblacklight/solr_document/carto.rb +28 -0
  146. data/app/models/concerns/geoblacklight/solr_document/finder.rb +38 -0
  147. data/app/models/concerns/geoblacklight/solr_document/inspection.rb +15 -0
  148. data/app/models/concerns/geoblacklight/spatial_search_behavior.rb +69 -0
  149. data/app/presenters/geoblacklight/document_presenter.rb +23 -0
  150. data/app/views/catalog/_data_dictionary.html.erb +6 -0
  151. data/app/views/catalog/_document_action.html.erb +6 -0
  152. data/app/views/catalog/_document_split.html.erb +6 -0
  153. data/app/views/catalog/_download_generated_link.html.erb +4 -0
  154. data/app/views/catalog/_download_link.html.erb +3 -0
  155. data/app/views/catalog/_downloads_generated.html.erb +6 -0
  156. data/app/views/catalog/_downloads_primary.html.erb +14 -0
  157. data/app/views/catalog/_downloads_secondary.html.erb +39 -0
  158. data/app/views/catalog/_exports.html.erb +3 -0
  159. data/app/views/catalog/_facet_tag_item.html.erb +3 -0
  160. data/app/views/catalog/_facet_tag_layout.html.erb +2 -0
  161. data/app/views/catalog/_header_icons.html.erb +3 -0
  162. data/app/views/catalog/_home_text.html.erb +43 -0
  163. data/app/views/catalog/_icon_facet.html.erb +16 -0
  164. data/app/views/catalog/_index_split_default.html.erb +22 -0
  165. data/app/views/catalog/_metadata.html.erb +27 -0
  166. data/app/views/catalog/_relations_container.html.erb +1 -0
  167. data/app/views/catalog/_results_pagination.html.erb +12 -0
  168. data/app/views/catalog/_show_default_attribute_table.html.erb +19 -0
  169. data/app/views/catalog/_show_default_viewer_container.html.erb +12 -0
  170. data/app/views/catalog/_show_default_viewer_information.html.erb +4 -0
  171. data/app/views/catalog/_show_downloads.html.erb +34 -0
  172. data/app/views/catalog/_show_header_default.html.erb +4 -0
  173. data/app/views/catalog/_show_sidebar.html.erb +12 -0
  174. data/app/views/catalog/_show_tools.html.erb +25 -0
  175. data/app/views/catalog/_web_services.html.erb +8 -0
  176. data/app/views/catalog/_web_services_default.html.erb +8 -0
  177. data/app/views/catalog/_web_services_wfs.html.erb +8 -0
  178. data/app/views/catalog/_web_services_wms.html.erb +8 -0
  179. data/app/views/catalog/index.html.erb +13 -0
  180. data/app/views/catalog/metadata.html.erb +11 -0
  181. data/app/views/catalog/metadata/_content.html.erb +3 -0
  182. data/app/views/catalog/metadata/_markup.html.erb +8 -0
  183. data/app/views/catalog/metadata/_missing.html.erb +6 -0
  184. data/app/views/catalog/web_services.html.erb +10 -0
  185. data/app/views/download/hgl.html.erb +25 -0
  186. data/app/views/relation/_ancestors.html.erb +11 -0
  187. data/app/views/relation/_descendants.html.erb +18 -0
  188. data/app/views/relation/index.html.erb +13 -0
  189. data/app/views/relation/index.json.jbuilder +3 -0
  190. data/app/views/shared/_header_navbar.html.erb +38 -0
  191. data/config/initializers/rails_config.rb +3 -0
  192. data/config/locales/geoblacklight.en.yml +163 -0
  193. data/geoblacklight.gemspec +49 -0
  194. data/lib/generators/geoblacklight/install_generator.rb +105 -0
  195. data/lib/generators/geoblacklight/templates/Procfile +3 -0
  196. data/lib/generators/geoblacklight/templates/catalog_controller.rb +272 -0
  197. data/lib/generators/geoblacklight/templates/geoblacklight.js +10 -0
  198. data/lib/generators/geoblacklight/templates/geoblacklight.scss +4 -0
  199. data/lib/generators/geoblacklight/templates/package.json +14 -0
  200. data/lib/generators/geoblacklight/templates/settings.yml +127 -0
  201. data/lib/generators/geoblacklight/templates/webpacker.yml +67 -0
  202. data/lib/generators/geoblacklight/webpacker_generator.rb +35 -0
  203. data/lib/geoblacklight.rb +50 -0
  204. data/lib/geoblacklight/bounding_box.rb +45 -0
  205. data/lib/geoblacklight/catalog_helper_override.rb +13 -0
  206. data/lib/geoblacklight/constants.rb +28 -0
  207. data/lib/geoblacklight/download.rb +108 -0
  208. data/lib/geoblacklight/download/geojson_download.rb +22 -0
  209. data/lib/geoblacklight/download/geotiff_download.rb +20 -0
  210. data/lib/geoblacklight/download/hgl_download.rb +18 -0
  211. data/lib/geoblacklight/download/kmz_download.rb +22 -0
  212. data/lib/geoblacklight/download/shapefile_download.rb +20 -0
  213. data/lib/geoblacklight/engine.rb +27 -0
  214. data/lib/geoblacklight/exceptions.rb +27 -0
  215. data/lib/geoblacklight/geoblacklight_helper_behavior.rb +14 -0
  216. data/lib/geoblacklight/item_viewer.rb +54 -0
  217. data/lib/geoblacklight/metadata.rb +18 -0
  218. data/lib/geoblacklight/metadata/base.rb +93 -0
  219. data/lib/geoblacklight/metadata/fgdc.rb +14 -0
  220. data/lib/geoblacklight/metadata/html.rb +13 -0
  221. data/lib/geoblacklight/metadata/iso19139.rb +14 -0
  222. data/lib/geoblacklight/metadata_transformer.rb +33 -0
  223. data/lib/geoblacklight/metadata_transformer/base.rb +42 -0
  224. data/lib/geoblacklight/metadata_transformer/fgdc.rb +8 -0
  225. data/lib/geoblacklight/metadata_transformer/iso19139.rb +8 -0
  226. data/lib/geoblacklight/reference.rb +45 -0
  227. data/lib/geoblacklight/references.rb +132 -0
  228. data/lib/geoblacklight/relation/ancestors.rb +27 -0
  229. data/lib/geoblacklight/relation/descendants.rb +27 -0
  230. data/lib/geoblacklight/relation/relation_response.rb +24 -0
  231. data/lib/geoblacklight/routes.rb +7 -0
  232. data/lib/geoblacklight/routes/downloadable.rb +14 -0
  233. data/lib/geoblacklight/routes/exportable.rb +17 -0
  234. data/lib/geoblacklight/routes/wms.rb +13 -0
  235. data/lib/geoblacklight/version.rb +3 -0
  236. data/lib/geoblacklight/view_helper_override.rb +40 -0
  237. data/lib/geoblacklight/wms_layer.rb +35 -0
  238. data/lib/geoblacklight/wms_layer/feature_info_response.rb +32 -0
  239. data/lib/tasks/geoblacklight.rake +108 -0
  240. data/package.json +4 -0
  241. data/schema/format-values.md +50 -0
  242. data/schema/geoblacklight-schema-deprecated.md +39 -0
  243. data/schema/geoblacklight-schema.json +214 -0
  244. data/schema/geoblacklight-schema.md +323 -0
  245. data/schema/geometry-type-values.md +11 -0
  246. data/schema/references.md +23 -0
  247. data/schema/schema-commentary.md +198 -0
  248. data/schema/subjects.md +41 -0
  249. data/schema/type-values.md +10 -0
  250. data/solr/conf/_rest_managed.json +3 -0
  251. data/solr/conf/admin-extra.html +31 -0
  252. data/solr/conf/core.properties +5 -0
  253. data/solr/conf/elevate.xml +36 -0
  254. data/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
  255. data/solr/conf/protwords.txt +21 -0
  256. data/solr/conf/schema.xml +198 -0
  257. data/solr/conf/scripts.conf +24 -0
  258. data/solr/conf/solrconfig.xml +243 -0
  259. data/solr/conf/spellings.txt +2 -0
  260. data/solr/conf/stopwords.txt +58 -0
  261. data/solr/conf/stopwords_en.txt +58 -0
  262. data/solr/conf/synonyms.txt +31 -0
  263. data/solr/conf/xslt/example.xsl +132 -0
  264. data/solr/conf/xslt/example_atom.xsl +67 -0
  265. data/solr/conf/xslt/example_rss.xsl +66 -0
  266. data/solr/conf/xslt/luke.xsl +337 -0
  267. data/spec/controllers/catalog_controller_spec.rb +82 -0
  268. data/spec/controllers/download_controller_spec.rb +120 -0
  269. data/spec/controllers/relation_controller_spec.rb +11 -0
  270. data/spec/controllers/wms_controller_spec.rb +34 -0
  271. data/spec/factories/user.rb +7 -0
  272. data/spec/features/bookmarks_spec.rb +10 -0
  273. data/spec/features/configurable_basemap_spec.rb +35 -0
  274. data/spec/features/data_dictionary_download_spec.rb +16 -0
  275. data/spec/features/download_layer_spec.rb +93 -0
  276. data/spec/features/empty_search_spec.rb +11 -0
  277. data/spec/features/esri_viewer_spec.rb +42 -0
  278. data/spec/features/exports_spec.rb +36 -0
  279. data/spec/features/help_text_spec.rb +8 -0
  280. data/spec/features/home_page_spec.rb +40 -0
  281. data/spec/features/iiif_viewer_spec.rb +8 -0
  282. data/spec/features/index_map_spec.rb +31 -0
  283. data/spec/features/layer_inspection_spec.rb +10 -0
  284. data/spec/features/layer_opacity_spec.rb +20 -0
  285. data/spec/features/layer_preview_spec.rb +17 -0
  286. data/spec/features/layer_with_no_references_spec.rb +8 -0
  287. data/spec/features/linkified_attribute_table_spec.rb +11 -0
  288. data/spec/features/metadata_panel_spec.rb +78 -0
  289. data/spec/features/missing_metadata_spec.rb +24 -0
  290. data/spec/features/oembed_spec.rb +9 -0
  291. data/spec/features/relations_spec.rb +51 -0
  292. data/spec/features/saved_searches_spec.rb +13 -0
  293. data/spec/features/search_bar_spec.rb +12 -0
  294. data/spec/features/search_results_map_spec.rb +55 -0
  295. data/spec/features/search_results_overlap_ratio_spec.rb +55 -0
  296. data/spec/features/search_spec.rb +14 -0
  297. data/spec/features/show_page_metadata_spec.rb +12 -0
  298. data/spec/features/sms_spec.rb +15 -0
  299. data/spec/features/split_view.html.erb_spec.rb +75 -0
  300. data/spec/features/suppressed_records_spec.rb +14 -0
  301. data/spec/features/web_services_modal_spec.rb +25 -0
  302. data/spec/fixtures/fgdc/harvard-g7064-s2-1834-k3.xml +1 -0
  303. data/spec/fixtures/iso19139/stanford-cg357zz0321.xml +581 -0
  304. data/spec/fixtures/mods/fb897vt9938.mods +111 -0
  305. data/spec/fixtures/mods/stanford-cg357zz0321.mods +113 -0
  306. data/spec/fixtures/solr_documents/README.md +40 -0
  307. data/spec/fixtures/solr_documents/actual-papermap1.json +23 -0
  308. data/spec/fixtures/solr_documents/actual-point1.json +37 -0
  309. data/spec/fixtures/solr_documents/actual-polygon1.json +23 -0
  310. data/spec/fixtures/solr_documents/actual-raster1.json +38 -0
  311. data/spec/fixtures/solr_documents/baruch_ancestor1.json +46 -0
  312. data/spec/fixtures/solr_documents/baruch_ancestor2.json +46 -0
  313. data/spec/fixtures/solr_documents/baruch_documentation_download.json +49 -0
  314. data/spec/fixtures/solr_documents/bbox-spans-180.json +20 -0
  315. data/spec/fixtures/solr_documents/cornell_html_metadata.json +42 -0
  316. data/spec/fixtures/solr_documents/esri-dynamic-layer-all-layers.json +38 -0
  317. data/spec/fixtures/solr_documents/esri-dynamic-layer-single-layer.json +40 -0
  318. data/spec/fixtures/solr_documents/esri-feature-layer.json +46 -0
  319. data/spec/fixtures/solr_documents/esri-image-map-layer.json +42 -0
  320. data/spec/fixtures/solr_documents/esri-tiled_map_layer.json +22 -0
  321. data/spec/fixtures/solr_documents/esri-wms-layer.json +33 -0
  322. data/spec/fixtures/solr_documents/harvard_raster.json +44 -0
  323. data/spec/fixtures/solr_documents/iiif-eastern-hemisphere.json +30 -0
  324. data/spec/fixtures/solr_documents/index-map-polygon-no-downloadurl.json +37 -0
  325. data/spec/fixtures/solr_documents/index-map-polygon.json +37 -0
  326. data/spec/fixtures/solr_documents/index-map-stanford.json +37 -0
  327. data/spec/fixtures/solr_documents/index_map_point.json +27 -0
  328. data/spec/fixtures/solr_documents/metadata_no_dct_provenance_s.json +30 -0
  329. data/spec/fixtures/solr_documents/metadata_no_layer_geom_type_s.json +17 -0
  330. data/spec/fixtures/solr_documents/metadata_no_solr_geom.json +23 -0
  331. data/spec/fixtures/solr_documents/no_spatial.json +21 -0
  332. data/spec/fixtures/solr_documents/oembed.json +24 -0
  333. data/spec/fixtures/solr_documents/princeton-child1.json +30 -0
  334. data/spec/fixtures/solr_documents/princeton-child2.json +30 -0
  335. data/spec/fixtures/solr_documents/princeton-child3.json +30 -0
  336. data/spec/fixtures/solr_documents/princeton-child4.json +30 -0
  337. data/spec/fixtures/solr_documents/princeton-parent.json +25 -0
  338. data/spec/fixtures/solr_documents/public_direct_download.json +34 -0
  339. data/spec/fixtures/solr_documents/public_iiif_princeton.json +36 -0
  340. data/spec/fixtures/solr_documents/public_polygon_mit.json +27 -0
  341. data/spec/fixtures/solr_documents/restricted-line.json +37 -0
  342. data/spec/fixtures/solr_documents/umn_metro_result1.json +41 -0
  343. data/spec/fixtures/solr_documents/umn_state_result1.json +38 -0
  344. data/spec/fixtures/solr_documents/umn_state_result2.json +38 -0
  345. data/spec/fixtures/solr_documents/uva_slug_colon.json +25 -0
  346. data/spec/helpers/arcgis_helper_spec.rb +14 -0
  347. data/spec/helpers/carto_helper_spec.rb +11 -0
  348. data/spec/helpers/geoblacklight_helper_spec.rb +329 -0
  349. data/spec/javascripts/geoblacklight_spec.js +21 -0
  350. data/spec/javascripts/metadata_download_button_spec.js +14 -0
  351. data/spec/javascripts/spec_helper.js +32 -0
  352. data/spec/javascripts/util_spec.js +12 -0
  353. data/spec/lib/geoblacklight/bounding_box_spec.rb +27 -0
  354. data/spec/lib/geoblacklight/controller_override_spec.rb +1 -0
  355. data/spec/lib/geoblacklight/document_presenter_spec.rb +61 -0
  356. data/spec/lib/geoblacklight/download/geojson_download_spec.rb +19 -0
  357. data/spec/lib/geoblacklight/download/geotiff_download_spec.rb +20 -0
  358. data/spec/lib/geoblacklight/download/hgl_download_spec.rb +60 -0
  359. data/spec/lib/geoblacklight/download/kmz_download_spec.rb +20 -0
  360. data/spec/lib/geoblacklight/download/shapefile_download_spec.rb +19 -0
  361. data/spec/lib/geoblacklight/download_spec.rb +177 -0
  362. data/spec/lib/geoblacklight/geoblacklight_helper_behavior_spec.rb +30 -0
  363. data/spec/lib/geoblacklight/item_viewer_spec.rb +63 -0
  364. data/spec/lib/geoblacklight/metadata/base_spec.rb +157 -0
  365. data/spec/lib/geoblacklight/metadata/html_spec.rb +18 -0
  366. data/spec/lib/geoblacklight/metadata_spec.rb +42 -0
  367. data/spec/lib/geoblacklight/metadata_transformer/base_spec.rb +35 -0
  368. data/spec/lib/geoblacklight/metadata_transformer/fgdc_spec.rb +23 -0
  369. data/spec/lib/geoblacklight/metadata_transformer/iso19139_spec.rb +23 -0
  370. data/spec/lib/geoblacklight/metadata_transformer_spec.rb +69 -0
  371. data/spec/lib/geoblacklight/reference_spec.rb +64 -0
  372. data/spec/lib/geoblacklight/references_spec.rb +216 -0
  373. data/spec/lib/geoblacklight/relation/ancestors_spec.rb +32 -0
  374. data/spec/lib/geoblacklight/relation/descendants_spec.rb +32 -0
  375. data/spec/lib/geoblacklight/relation/relation_response_spec.rb +43 -0
  376. data/spec/lib/geoblacklight/view_helper_override_spec.rb +37 -0
  377. data/spec/lib/geoblacklight/wms_layer/feature_info_response_spec.rb +50 -0
  378. data/spec/lib/geoblacklight/wms_layer_spec.rb +99 -0
  379. data/spec/models/concerns/geoblacklight/solr_document/carto_spec.rb +61 -0
  380. data/spec/models/concerns/geoblacklight/solr_document/finder_spec.rb +40 -0
  381. data/spec/models/concerns/geoblacklight/solr_document/inspection_spec.rb +16 -0
  382. data/spec/models/concerns/geoblacklight/solr_document_spec.rb +251 -0
  383. data/spec/models/concerns/geoblacklight/spatial_search_behavior_spec.rb +84 -0
  384. data/spec/routing/catalog_routing_spec.rb +8 -0
  385. data/spec/spec_helper.rb +79 -0
  386. data/spec/support/backport_test_helpers.rb +45 -0
  387. data/spec/support/features.rb +5 -0
  388. data/spec/support/features/session_helpers.rb +20 -0
  389. data/spec/teaspoon_env.rb +213 -0
  390. data/spec/test_app_templates/Gemfile.extra +1 -0
  391. data/spec/test_app_templates/lib/generators/test_app_generator.rb +49 -0
  392. data/spec/test_app_templates/metadata/fgdc.html +129 -0
  393. data/spec/test_app_templates/metadata/fgdc.xml +145 -0
  394. data/spec/test_app_templates/metadata/iso.html +275 -0
  395. data/spec/test_app_templates/metadata/iso.xml +511 -0
  396. data/spec/test_app_templates/solr_documents +1 -0
  397. data/spec/views/catalog/_document_split.html.erb_spec.rb +5 -0
  398. data/spec/views/catalog/_index_split.html.erb_spec.rb +5 -0
  399. data/spec/views/catalog/_results_pagination.html.erb_spec.rb +9 -0
  400. data/spec/views/catalog/_show_downloads.html.erb_spec.rb +41 -0
  401. data/spec/views/catalog/_show_tools.html.erb_spec.rb +39 -0
  402. data/template.rb +19 -0
  403. data/vendor/assets/images/layers-2x.png +0 -0
  404. data/vendor/assets/images/layers.png +0 -0
  405. data/vendor/assets/images/marker-icon-2x.png +0 -0
  406. data/vendor/assets/images/marker-icon.png +0 -0
  407. data/vendor/assets/images/marker-shadow.png +0 -0
  408. data/vendor/assets/javascripts/esri-leaflet.js +5 -0
  409. data/vendor/assets/javascripts/esri-leaflet.js.map +1 -0
  410. data/vendor/assets/javascripts/leaflet-iiif.js +302 -0
  411. data/vendor/assets/javascripts/leaflet-src.js.map +1 -0
  412. data/vendor/assets/javascripts/leaflet.js.erb +13922 -0
  413. data/vendor/assets/javascripts/native.history.js +1 -0
  414. data/vendor/assets/javascripts/readmore.js +618 -0
  415. data/vendor/assets/javascripts/readmore.js.map +1 -0
  416. data/vendor/assets/stylesheets/leaflet-label.css +54 -0
  417. data/vendor/assets/stylesheets/leaflet.css +635 -0
  418. metadata +967 -0
@@ -0,0 +1,27 @@
1
+ {
2
+ "dc_creator_sm": [
3
+ "United States. Bureau of the Census"
4
+ ],
5
+ "dc_format_s": "Shapefile",
6
+ "dc_publisher_s": "United States. Bureau of the Census",
7
+ "dc_rights_s": "Public",
8
+ "dc_subject_sm": [
9
+ "Zip codes",
10
+ "Census data",
11
+ "Demographic surveys",
12
+ "Population"
13
+ ],
14
+ "dc_title_s": "Massachusetts (ZCTA - 5 digit zip code tabulation area, 2000)",
15
+ "dc_type_s": "Dataset",
16
+ "dct_provenance_s": "MIT",
17
+ "dct_spatial_sm": [
18
+ "Massachusetts"
19
+ ],
20
+ "dct_references_s": "{\"http://www.opengis.net/def/serviceType/ogc/wms\": \"https://geodata.mit.edu/geoserver/wms\", \"http://www.opengis.net/def/serviceType/ogc/wfs\": \"https://geodata.mit.edu/geoserver/wfs\"}",
21
+ "layer_geom_type_s": "Polygon",
22
+ "layer_id_s": "mit:SDE_DATA_US_MA_E25ZCTA5DCT_2000",
23
+ "layer_modified_dt": "2018-05-15T20:00:25Z",
24
+ "layer_slug_s": "mit-f6rqs4ucovjk2",
25
+ "solr_geom": "ENVELOPE(-73.533237, -69.898565, 42.888068, 41.230345)",
26
+ "geoblacklight_version": "1.0"
27
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "dc_identifier_s": "http://purl.stanford.edu/cg357zz0321",
3
+ "dc_title_s": "10 Meter Contours: Russian River Basin, California",
4
+ "dc_description_s": "This line shapefile contains contours that were derived from a mosiac of 10 meter digital elevation models for the extent of the Russian River basin, located in Sonoma and Mendocino Counties, California.This layer can be used for watershed analysis and planning in the Russian River region of California.",
5
+ "dc_rights_s": "Restricted",
6
+ "dct_provenance_s": "Stanford",
7
+ "dct_references_s": "{\"http://schema.org/url\":\"http://purl.stanford.edu/cg357zz0321\",\"http://schema.org/downloadUrl\":\"http://stacks.stanford.edu/file/druid:cg357zz0321/data.zip\",\"http://www.loc.gov/mods/v3\":\"http://purl.stanford.edu/cg357zz0321.mods\",\"http://www.isotc211.org/schemas/2005/gmd/\":\"https://raw.githubusercontent.com/OpenGeoMetadata/edu.stanford.purl/master/cg/357/zz/0321/iso19139.xml\",\"http://www.opengis.net/def/serviceType/ogc/wfs\":\"https://geowebservices-restricted.stanford.edu/geoserver/wfs\",\"http://www.opengis.net/def/serviceType/ogc/wms\":\"https://geowebservices-restricted.stanford.edu/geoserver/wms\"}",
8
+ "layer_id_s": "druid:cg357zz0321",
9
+ "layer_slug_s": "stanford-cg357zz0321",
10
+ "layer_geom_type_s": "Line",
11
+ "layer_modified_dt": "2016-04-25T17:13:35Z",
12
+ "dc_format_s": "Shapefile",
13
+ "dc_language_s": "English",
14
+ "dc_type_s": "Dataset",
15
+ "dc_publisher_s": "Circuit Rider Productions",
16
+ "dc_creator_sm": [
17
+ "United States. National Oceanic and Atmospheric Administration",
18
+ "Circuit Rider Productions"
19
+ ],
20
+ "dc_subject_sm": [
21
+ "Contours (Cartography)",
22
+ "Elevation",
23
+ "Inland Waters"
24
+ ],
25
+ "dct_issued_s": "2002",
26
+ "dct_temporal_sm": [
27
+ "2002"
28
+ ],
29
+ "dct_spatial_sm": [
30
+ "Sonoma County (Calif.)",
31
+ "Mendocino County (Calif.)"
32
+ ],
33
+ "solr_geom": "ENVELOPE(-123.387366, -122.52958, 39.398403, 38.302994)",
34
+ "solr_year_i": 2002,
35
+ "stanford_rights_metadata_s": "<?xml version=\"1.0\"?>\n<rightsMetadata>\n <access type=\"discover\">\n <machine>\n <world/>\n </machine>\n </access>\n <access type=\"read\">\n <machine>\n <group>Stanford</group>\n </machine>\n </access>\n <use>\n <human type=\"useAndReproduction\">These data are licensed by Stanford Libraries and are available to Stanford University affiliates only. Affiliates are limited to current faculty, staff and students. These data may not be reproduced or used for any purpose without permission. For more information please contact brannerlibrary@stanford.edu.</human>\n <human type=\"creativeCommons\"/>\n <machine type=\"creativeCommons\"/>\n </use>\n <copyright>\n <human>Copyright ownership resides with the originator.</human>\n </copyright>\n</rightsMetadata>\n",
36
+ "geoblacklight_version": "1.0"
37
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "dc_identifier_s": "02236876-9c21-42f6-9870-d2562da8e44f",
3
+ "dc_title_s": "2030 Regional Development Framework Planning Areas: Metro Twin Cities, Minnesota, 2011",
4
+ "dc_description_s": "The 2030 Regional Development Framework Planning Areas - 2011 updates the 2030 Regional Development Framework Planning Areas initially adopted on January 14, 2004 and ammended in 2006. This dataset reflect the agreed upon planning areas between a community and the Metropolitan Council and defined in the communities' 2030 Comprehensive Plan Update and is intended to supplement the 2030 Regional Development Framework - the planning guide for the 7-county Twin Cities metropolitan area of Minneapolis and Saint Paul, Minnesota. Planning area definitions and strategies for the planning areas are available in the 2030 Regional Development Framework document at http://www.metrocouncil.org/Planning/Planning/2030-Regional-Development-Framework.aspx (See Chapter 3). For questions about how decisions were made regarding individual communities' geographic planning areas, please contact the Metropolitan Council Regional Framework Development staff, Dan Marckel, 651-602-1548. See Currentness Reference and Lineage in Data Quality Section of this metadata for more information.",
5
+ "dc_rights_s": "Public",
6
+ "dc_format_s": "Shapefile",
7
+ "dc_language_sm": [
8
+ "English"
9
+ ],
10
+ "dc_type_sm": [
11
+ "Dataset",
12
+ "Service"
13
+ ],
14
+ "dc_publisher_sm": [
15
+ "Metropolitan Council"
16
+ ],
17
+ "dc_creator_sm": [
18
+ "Metropolitan Council"
19
+ ],
20
+ "dc_subject_sm": [
21
+ "Planning and Cadastral"
22
+ ],
23
+ "dct_provenance_s": "Minnesota",
24
+ "dct_references_s": "{\"http://schema.org/url\":\"https://gisdata.mn.gov/dataset/02236876-9c21-42f6-9870-d2562da8e44f\",\"http://schema.org/downloadUrl\":\"ftp://ftp.gisdata.mn.gov/pub/gdrs/data/pub/us_mn_state_metc/plan_frmwrk2030dev_plan_ar2011/shp_plan_frmwrk2030dev_plan_ar2011.zip\",\"urn:x-esri:serviceType:ArcGIS#DynamicMapLayer\":\"https://gis2.metc.state.mn.us/arcgis/rest/services/MetroGIS/Planning/MapServer/3\",\"http://www.opengis.net/cat/csw/csdgm\":\"https://btaagdp.org/metadata/05a-01/pub/gdrs/data/pub/us_mn_state_metc/plan_frmwrk2030dev_plan_ar2011/metadata/metadata.xml\"}",
25
+ "dct_isPartOf_sm": [
26
+ "Minnesota Geospatial Commons"
27
+ ],
28
+ "dct_issued_s": "2015-10-01T10:01:54.499443",
29
+ "dct_temporal_sm": [
30
+ "2014"
31
+ ],
32
+ "dct_spatial_sm": [
33
+ "Minnesota, United States"
34
+ ],
35
+ "layer_slug_s": "02236876-9c21-42f6-9870-d2562da8e44f",
36
+ "layer_geom_type_s": "Polygon",
37
+ "layer_modified_dt": "2018-08-02T17:42:57Z",
38
+ "solr_geom": "ENVELOPE(-94.012, -92.732, 45.415, 44.471)",
39
+ "solr_year_i": 2014,
40
+ "geoblacklight_version": "1.0"
41
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "dc_identifier_s": "2eddde2f-c222-41ca-bd07-2fd74a21f4de",
3
+ "dc_title_s": "1:100k Digital Raster Graphic - Collars Removed: Minnesota",
4
+ "dc_description_s": "A digital raster graphic (DRG) is a scanned image of an U.S. Geological Survey (USGS) standard series topographic map, including all map collar information. The image inside the map neatline is georeferenced to the surface of the earth and fit to the Universal Transverse Mercator projection. The horizontal positional accuracy and datum of the DRG matches the accuracy and datum of the source map. The map is scanned at a minimum resolution of 250 dots per inch. DRG's are created by scanning published paper maps on high-resolution scanners. The raster image is georeferenced and fit to the UTM projection. Colors are standardized to remove scanner limitations and artifacts. The average data set size is about 6 megabytes in Tagged Image File Format (TIFF) with PackBits compression. DRG's can be easily combined with other digital cartographic products such as digital elevation models (DEM) and digital orthophoto quadrangles (DOQ). DRG's are stored as rectified TIFF files in geoTIFF format. GeoTIFF is a relatively new TIFF image storage format that incorporates georeferencing information in the header. This allows software, such as ArcView, ARC/INFO, or EPPL7 to reference the image without an additional header or world file. Within the Minnesota Department of Natural Resources Core GIS data set the DRG's have been processed to be in compliance with departmental data standards (UTM Extended Zone 15, NAD83 datum) and the map collar information has been removed to facilitate the display of the DRG's in a seamless fashion. These DRG's were clipped and transformed to UTM Zone 15 using EPPL7 Raster GIS.",
5
+ "dc_rights_s": "Public",
6
+ "dc_format_s": "ArcGRID",
7
+ "dc_language_sm": "English",
8
+ "dc_type_sm": [
9
+ "Dataset"
10
+ ],
11
+ "dc_publisher_sm": [
12
+ "Minnesota Department of Natural Resources (DNR)"
13
+ ],
14
+ "dc_creator_sm": [
15
+ "U.S. Geological Survey (USGS) and Minnesota Department of Natural Resources (DNR)"
16
+ ],
17
+ "dc_subject_sm": [
18
+ "Imagery and Base Maps"
19
+ ],
20
+ "dct_provenance_s": "Minnesota",
21
+ "dct_references_s": "{\"http://schema.org/url\":\"https://gisdata.mn.gov/dataset/2eddde2f-c222-41ca-bd07-2fd74a21f4de\",\"http://schema.org/downloadUrl\":\"ftp://gdrs.dnr.state.mn.us/gdrs/data/pub/us_mn_state_dnr/fgdb_base_usgs_scanned_topo_100k_drg.zip\",\"http://schema.org/image\":\"https://btaagdp.org/thumbnails/05a-01/pub/gdrs/data/pub/us_mn_state_dnr/base_usgs_scanned_topo_100k_drg/metadata/preview.jpg\",\"http://www.opengis.net/cat/csw/csdgm\":\"https://btaagdp.org/metadata/05a-01/pub/gdrs/data/pub/us_mn_state_dnr/base_usgs_scanned_topo_100k_drg/metadata/metadata.xml\"}",
22
+ "dct_isPartOf_sm": [
23
+ "Minnesota Geospatial Commons"
24
+ ],
25
+ "dct_issued_s": "2015-11-18T11:02:15.705119",
26
+ "dct_temporal_sm": [
27
+ "2015"
28
+ ],
29
+ "dct_spatial_sm": [
30
+ "Minnesota, United States"
31
+ ],
32
+ "layer_slug_s": "2eddde2f-c222-41ca-bd07-2fd74a21f4de",
33
+ "layer_geom_type_s": "Raster",
34
+ "layer_modified_dt": "2018-08-02T17:47:58Z",
35
+ "solr_geom": "ENVELOPE(-97.612501, -88.842351, 49.464145, 42.906949)",
36
+ "solr_year_i": 2015,
37
+ "geoblacklight_version": "1.0"
38
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "dc_identifier_s": "e9c71086-6b25-4950-8e1c-84c2794e3382",
3
+ "dc_title_s": "1:250k Digital Raster Graphic - Collars Removed: Minnesota",
4
+ "dc_description_s": "A digital raster graphic (DRG) is a scanned image of an U.S. Geological Survey (USGS) standard series topographic map, including all map collar information. The image inside the map neatline is georeferenced to the surface of the earth and fit to the Universal Transverse Mercator projection. The horizontal positional accuracy and datum of the DRG matches the accuracy and datum of the source map. The map is scanned at a minimum resolution of 250 dots per inch. DRG's are created by scanning published paper maps on high-resolution scanners. The raster image is georeferenced and fit to the UTM projection. Colors are standardized to remove scanner limitations and artifacts. The average data set size is about 6 megabytes in Tagged Image File Format (TIFF) with PackBits compression. DRG's can be easily combined with other digital cartographic products such as digital elevation models (DEM) and digital orthophoto quadrangles (DOQ). DRG's are stored as rectified TIFF files in geoTIFF format. GeoTIFF is a relatively new TIFF image storage format that incorporates georeferencing information in the header. This allows software, such as ArcView, ARC/INFO, or EPPL7 to reference the image without an additional header or world file. Within the Minnesota Department of Natural Resources Core GIS data set the DRG's have been processed to be in compliance with departmental data standards (UTM Extended Zone 15, NAD83 datum) and the map collar information has been removed to facilitate the display of the DRG's in a seamless fashion. These DRG's were clipped and transformed to UTM Zone 15 using EPPL7 Raster GIS.",
5
+ "dc_rights_s": "Public",
6
+ "dc_format_s": "GeoTIFF",
7
+ "dc_language_sm": "English",
8
+ "dc_type_sm": [
9
+ "Dataset"
10
+ ],
11
+ "dc_publisher_sm": [
12
+ "Minnesota Department of Natural Resources (DNR)"
13
+ ],
14
+ "dc_creator_sm": [
15
+ "U.S. Geological Survey and Minnesota DNR"
16
+ ],
17
+ "dc_subject_sm": [
18
+ "Imagery and Base Maps"
19
+ ],
20
+ "dct_provenance_s": "Minnesota",
21
+ "dct_references_s": "{\"http://schema.org/url\":\"https://gisdata.mn.gov/dataset/e9c71086-6b25-4950-8e1c-84c2794e3382\",\"http://schema.org/downloadUrl\":\"ftp://ftp.gisdata.mn.gov/pub/gdrs/data/pub/us_mn_state_dnr/base_usgs_scanned_topo_250k_drg/fgdb_base_usgs_scanned_topo_250k_drg.zip\",\"http://schema.org/image\":\"https://btaagdp.org/thumbnails/05a-01/pub/gdrs/data/pub/us_mn_state_dnr/base_usgs_scanned_topo_250k_drg/metadata/preview.jpg\",\"http://www.opengis.net/cat/csw/csdgm\":\"https://btaagdp.org/metadata/05a-01/pub/gdrs/data/pub/us_mn_state_dnr/base_usgs_scanned_topo_250k_drg/metadata/metadata.xml\"}",
22
+ "dct_isPartOf_sm": [
23
+ "Minnesota Geospatial Commons"
24
+ ],
25
+ "dct_issued_s": "2015-11-18T11:02:15.187331",
26
+ "dct_temporal_sm": [
27
+ "1998"
28
+ ],
29
+ "dct_spatial_sm": [
30
+ "Minnesota, United States"
31
+ ],
32
+ "layer_slug_s": "e9c71086-6b25-4950-8e1c-84c2794e3382",
33
+ "layer_geom_type_s": "Raster",
34
+ "layer_modified_dt": "2018-08-02T17:49:48Z",
35
+ "solr_geom": "ENVELOPE(-97.991522, -87.177541, 49.892443, 42.891013)",
36
+ "solr_year_i": 1998,
37
+ "geoblacklight_version": "1.0"
38
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "dc_description_s": "Police stations for Norfolk, Virginia.",
3
+ "dc_format_s": "Shapefile",
4
+ "dc_identifier_s": "315fc8ee-3b57-4ebb-aa24-4300f1c42dc9-13",
5
+ "dc_language_s": "eng",
6
+ "dc_rights_s": "Public",
7
+ "dc_subject_sm": [
8
+ "Location"
9
+ ],
10
+ "dc_title_s": "Norfolk 2005 Police Stations",
11
+ "dct_issued_s": "2008-10-17",
12
+ "dct_provenance_s": "UVa",
13
+ "dct_references_s": "{\"http://www.opengis.net/def/serviceType/ogc/wms\":\"http://gis.lib.virginia.edu/geoserver/wms\",\"http://www.opengis.net/def/serviceType/ogc/wfs\":\"http://gis.lib.virginia.edu/geoserver/wfs\",\"http://www.opengis.net/def/serviceType/ogc/wcs\":\"http://gis.lib.virginia.edu/geoserver/wcs\",\"http://schema.org/downloadUrl\":\"http://gis.lib.virginia.edu/geoserver/ows?service=WFS\\u0026typeName=Norfolk:police_point\\u0026request=GetFeature\\u0026outputFormat=shape-zip\",\"http://www.isotc211.org/schemas/2005/gmd/\":\"https://opengeometadata.github.io/edu.virginia/382/13/iso19139.xml\"}",
14
+ "dct_temporal_sm": [
15
+ "2005-2005"
16
+ ],
17
+ "georss_polygon_s": "36.82 -76.346 36.971 -76.346 36.971 -76.176 36.82 -76.176 36.82 -76.346",
18
+ "layer_geom_type_s": "MultiPoint",
19
+ "layer_id_s": "Norfolk:police_point",
20
+ "layer_modified_dt": "2008-11-12T15:29:47Z",
21
+ "layer_slug_s": "uva-Norfolk:police_point",
22
+ "solr_geom": "ENVELOPE(-76.346, -76.176, 36.971, 36.82)",
23
+ "solr_year_i": 2005,
24
+ "geoblacklight_version": "1.0"
25
+ }
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe ArcgisHelper, type: :helper do
4
+ describe '#arcgis_link' do
5
+ let(:application_name) { 'My GeoBlacklight Deployment' }
6
+
7
+ it 'creates a valid ArcGIS online url with correct params' do
8
+ expect(arcgis_link('http://example.com/foo/MapServer')).to eq 'https://www.arcgis.com/home/webmap/viewer.html?urls=http%3A%2F%2Fexample.com%2Ffoo%2FMapServer'
9
+ end
10
+ it 'handles multiple urls' do
11
+ expect(arcgis_link(['http://example.com/foo/MapServer', 'http://example.com/foo/FeatureServer'])).to eq 'https://www.arcgis.com/home/webmap/viewer.html?urls=http%3A%2F%2Fexample.com%2Ffoo%2FMapServer&urls=http%3A%2F%2Fexample.com%2Ffoo%2FFeatureServer'
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe CartoHelper, type: :helper do
4
+ describe '#carto_link' do
5
+ let(:application_name) { 'My GeoBlacklight Deployment' }
6
+
7
+ it 'removes spaces from application_name to produce valid Carto request URL' do
8
+ expect(carto_link('http://demo.org/wfs/layer.json')).to eq 'http://oneclick.carto.com/?file=http%3A%2F%2Fdemo.org%2Fwfs%2Flayer.json&provider=MyGeoBlacklightDeployment&logo=http%3A%2F%2Fgeoblacklight.org%2Fimages%2Fgeoblacklight-logo.png'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,329 @@
1
+ require 'spec_helper'
2
+
3
+ describe GeoblacklightHelper, type: :helper do
4
+ include BlacklightHelper
5
+ include ActionView::Helpers::UrlHelper
6
+ include ActionView::Helpers::TranslationHelper
7
+ describe '#render_facet_links' do
8
+ let(:subject_field) { Settings.FIELDS.SUBJECT }
9
+ it 'contains unique links' do
10
+ 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
+ expect(html).to have_css 'a', count: 3
13
+ expect(html).to have_css 'a', text: 'Test', count: 1
14
+ expect(html).to have_css 'a', text: 'Earth', count: 1
15
+ expect(html).to have_css 'a', text: 'Science', count: 1
16
+ end
17
+ end
18
+
19
+ describe '#geoblacklight_icon' do
20
+ it 'supports in use cases' do
21
+ {
22
+ 'Paper map' => 'paper-map',
23
+ 'Michigan State' => 'michigan-state',
24
+ 'CD ROM' => 'cd-rom',
25
+ 'Lewis & Clark' => 'lewis-clark'
26
+ }.each_key do |key|
27
+ html = Capybara.string(geoblacklight_icon(key))
28
+ expect(html).to have_xpath "//*[local-name() = 'svg']"
29
+ end
30
+ end
31
+ it 'handles nil values' do
32
+ html = Capybara.string(geoblacklight_icon(nil))
33
+ expect(html).to have_css '.icon-missing'
34
+ end
35
+ end
36
+
37
+ describe '#proper_case_format' do
38
+ it 'returns a properly cased format' do
39
+ expect(proper_case_format('GEOJSON')).to eq 'GeoJSON'
40
+ end
41
+ end
42
+
43
+ describe '#download_text' do
44
+ it 'returns download text concatenated with proper case format' do
45
+ expect(download_text('GEOJSON')).to eq 'Original GeoJSON'
46
+ end
47
+ end
48
+
49
+ describe '#download_text' do
50
+ it 'returns download text concatenated with proper case format' do
51
+ expect(download_text('GEOJSON')).to eq 'Original GeoJSON'
52
+ end
53
+ end
54
+
55
+ describe '#download_link_direct' do
56
+ let(:text) { 'Test Link Text' }
57
+ let(:references_field) { Settings.FIELDS.REFERENCES }
58
+ let(:document_attributes) do
59
+ {
60
+ references_field => {
61
+ 'http://schema.org/downloadUrl' => 'http://example.com/urn:hul.harvard.edu:HARVARD.SDE2.TG10USAIANNH/data.zip'
62
+ }.to_json
63
+ }
64
+ end
65
+ let(:document) { SolrDocument.new(document_attributes) }
66
+ before do
67
+ allow_any_instance_of(Geoblacklight::Reference).to receive(:to_hash).and_return(download: 'http://example.com/urn:hul.harvard.edu:HARVARD.SDE2.TG10USAIANNH/data.zip')
68
+ end
69
+ it 'generates a link to download the original file' do
70
+ expect(download_link_direct(text, document)).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" href="http://example.com/urn:hul.harvard.edu:HARVARD.SDE2.TG10USAIANNH/data.zip">Test Link Text</a>'
71
+ end
72
+ end
73
+
74
+ describe '#download_link_hgl' do
75
+ let(:text) { 'Test Link Text' }
76
+ let(:document) { instance_double(SolrDocument) }
77
+
78
+ before do
79
+ allow(document).to receive(:id).and_return('test-id')
80
+ allow(document).to receive(:to_s).and_return('test-id')
81
+ end
82
+
83
+ it 'generates a link to the HGL route' do
84
+ expect(download_link_hgl(text, document)).to eq '<a class="btn btn-default download download-original" data-blacklight-modal="trigger" data-download="trigger" data-download-type="harvard-hgl" data-download-id="test-id" href="/download/hgl/test-id">Test Link Text</a>'
85
+ end
86
+ end
87
+
88
+ describe '#download_link_iiif' do
89
+ let(:references_field) { Settings.FIELDS.REFERENCES }
90
+ let(:document_attributes) do
91
+ {
92
+ references_field => {
93
+ 'http://iiif.io/api/image' => 'https://example.edu/image/info.json'
94
+ }.to_json
95
+ }
96
+ end
97
+ let(:document) { SolrDocument.new(document_attributes) }
98
+
99
+ before do
100
+ allow_any_instance_of(Geoblacklight::Reference).to receive(:to_hash).and_return(iiif: 'https://example.edu/image/info.json')
101
+ end
102
+
103
+ it 'generates a link to download the JPG file from the IIIF server' do
104
+ assign(:document, document)
105
+ expect(helper.download_link_iiif).to eq '<a contentUrl="https://example.edu/image/full/full/0/default.jpg" class="btn btn-default download download-generated" data-download="trigger" href="https://example.edu/image/full/full/0/default.jpg">Original JPG</a>'
106
+ end
107
+ end
108
+
109
+ describe '#download_link_generated' do
110
+ let(:download_type) { 'SHAPEFILE' }
111
+ let(:document) { instance_double(SolrDocument) }
112
+
113
+ before do
114
+ allow(document).to receive(:id).and_return('test-id')
115
+ allow(document).to receive(:to_s).and_return('test-id')
116
+ end
117
+
118
+ it 'generates a link to download the JPG file from the IIIF server' do
119
+ expect(download_link_generated(download_type, document)).to eq '<a class="btn btn-default download download-generated" data-download-path="/download/test-id?type=SHAPEFILE" data-download="trigger" data-download-type="SHAPEFILE" data-download-id="test-id" href="">Export</a>'
120
+ end
121
+ end
122
+
123
+ describe '#geoblacklight_basemap' do
124
+ let(:blacklight_config) { double }
125
+ it 'without configuration' do
126
+ expect(blacklight_config).to receive(:basemap_provider).and_return(nil)
127
+ expect(geoblacklight_basemap).to eq 'positron'
128
+ end
129
+ it 'with custom configuration' do
130
+ expect(blacklight_config).to receive(:basemap_provider).and_return('positron')
131
+ expect(geoblacklight_basemap).to eq 'positron'
132
+ end
133
+ end
134
+
135
+ describe '#iiif_jpg_url' do
136
+ let(:document) { SolrDocument.new(document_attributes) }
137
+ let(:references_field) { Settings.FIELDS.REFERENCES }
138
+ let(:document_attributes) do
139
+ {
140
+ references_field => {
141
+ 'http://iiif.io/api/image' => 'https://example.edu/image/info.json'
142
+ }.to_json
143
+ }
144
+ end
145
+
146
+ it 'returns JPG download URL when given URL to a IIIF info.json' do
147
+ assign(:document, document)
148
+ expect(helper.iiif_jpg_url).to eq 'https://example.edu/image/full/full/0/default.jpg'
149
+ end
150
+ end
151
+
152
+ describe '#snippit' do
153
+ let(:document) { SolrDocument.new(document_attributes) }
154
+ let(:references_field) { Settings.FIELDS.REFERENCES }
155
+ context 'as a String' do
156
+ let(:document_attributes) do
157
+ {
158
+ value: 'This is a really long string that should get truncated when it gets rendered'\
159
+ 'in the index view to give a brief description of the contents of a particular document'\
160
+ 'indexed into Solr'
161
+ }
162
+ end
163
+ it 'truncates longer strings to 150 characters' do
164
+ expect(helper.snippit(document).length).to eq 150
165
+ end
166
+ it 'truncated string ends with ...' do
167
+ expect(helper.snippit(document)[-3..-1]).to eq '...'
168
+ end
169
+ end
170
+ context 'as an Array' do
171
+ let(:document_attributes) do
172
+ {
173
+ value: ['This is a really long string that should get truncated when it gets rendered'\
174
+ 'in the index view to give a brief description of the contents of a particular document'\
175
+ 'indexed into Solr']
176
+ }
177
+ end
178
+ it 'truncates longer strings to 150 characters' do
179
+ expect(helper.snippit(document).length).to eq 150
180
+ end
181
+ it 'truncated string ends with ...' do
182
+ expect(helper.snippit(document)[-3..-1]).to eq '...'
183
+ end
184
+ end
185
+ context 'as a multivalued Array' do
186
+ let(:document_attributes) do
187
+ {
188
+ value: %w(short description)
189
+ }
190
+ end
191
+ it 'uses both values' do
192
+ expect(helper.snippit(document)).to eq 'short description'
193
+ end
194
+ it 'does not truncate' do
195
+ expect(helper.snippit(document)[-3..-1]).not_to eq '...'
196
+ end
197
+ end
198
+ end
199
+
200
+ context 'when CartoHelper methods are within scope' do
201
+ include CartoHelper
202
+
203
+ before do
204
+ allow(helper).to receive(:application_name).and_return('GeoBlacklight')
205
+ end
206
+
207
+ describe '#cartodb_link' do
208
+ 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'))
210
+ end
211
+ end
212
+ end
213
+
214
+ describe '#render_web_services' do
215
+ let(:reference) { instance_double(Geoblacklight::Reference, type: 'wms') }
216
+ it 'with a reference to a defined partial' do
217
+ expect(helper).to receive(:render)
218
+ .with(partial: 'web_services_wms', locals: { reference: reference })
219
+ helper.render_web_services(reference)
220
+ end
221
+ context 'when the partial is missing' do
222
+ let(:reference) { instance_double(Geoblacklight::Reference, type: 'iiif') }
223
+
224
+ it 'with a reference to a missing partial' do
225
+ expect(helper).to receive(:render)
226
+ .with(partial: 'web_services_iiif', locals: { reference: reference })
227
+ .and_raise ActionView::MissingTemplate.new({}, '', '', '', '')
228
+ expect(helper).to receive(:render)
229
+ .with(partial: 'web_services_default', locals: { reference: reference })
230
+ helper.render_web_services(reference)
231
+ end
232
+ end
233
+ end
234
+
235
+ describe '#leaflet_options' do
236
+ it 'returns a hash of options for leaflet' do
237
+ expect(leaflet_options[:VIEWERS][:WMS][:CONTROLS]).to eq(['Opacity'])
238
+ end
239
+ end
240
+
241
+ describe '#render_value_as_truncate_abstract' do
242
+ context 'with multiple values' do
243
+ let(:document) { SolrDocument.new(value: %w(short description)) }
244
+ it 'wraps in correct DIV class' do
245
+ expect(helper.render_value_as_truncate_abstract(document)).to eq '<div class="truncate-abstract">short description</div>'
246
+ end
247
+ end
248
+ end
249
+
250
+ describe '#render_transformed_metadata' do
251
+ let(:metadata) { instance_double(Geoblacklight::Metadata::Base) }
252
+ context 'with valid XML data' do
253
+ before do
254
+ allow(metadata).to receive(:transform).and_return('<div>test</div>')
255
+ end
256
+
257
+ it 'renders the partial with metadata content' do
258
+ expect(helper).to receive(:render)
259
+ .with(partial: 'catalog/metadata/content', locals: { content: '<div>test</div>' })
260
+ helper.render_transformed_metadata(metadata)
261
+ end
262
+ end
263
+
264
+ context 'with valid XML data without an HTML transform' do
265
+ before do
266
+ allow(metadata).to receive(:transform).and_raise(Geoblacklight::MetadataTransformer::TransformError)
267
+ allow(metadata).to receive(:to_xml).and_return('<data></data>')
268
+ end
269
+
270
+ it 'renders the partial with metadata content' do
271
+ expect(helper).to receive(:render).with(partial: 'catalog/metadata/markup', locals: { content: '<data></data>' })
272
+ helper.render_transformed_metadata(metadata)
273
+ end
274
+ end
275
+
276
+ context 'without XML data' do
277
+ before do
278
+ allow(metadata).to receive(:transform).and_raise(Geoblacklight::MetadataTransformer::ParseError)
279
+ end
280
+
281
+ it 'renders the partial with metadata content' do
282
+ expect(helper).to receive(:render).with(partial: 'catalog/metadata/missing')
283
+ helper.render_transformed_metadata(metadata)
284
+ end
285
+ end
286
+ end
287
+
288
+ describe '#first_metadata?' do
289
+ let(:metadata) { instance_double(Geoblacklight::Metadata::Base) }
290
+ let(:references) { instance_double(Geoblacklight::References) }
291
+ let(:document) { instance_double(SolrDocument) }
292
+
293
+ before do
294
+ allow(document).to receive(:references).and_return(references)
295
+ allow(references).to receive(:shown_metadata).and_return([metadata])
296
+ allow(metadata).to receive(:type).and_return('fgdc')
297
+ end
298
+
299
+ it 'confirms that a metadata resource is the first item reference' do
300
+ expect(helper.first_metadata?(document, metadata)).to be true
301
+ end
302
+ end
303
+
304
+ describe '#show_help_text?' do
305
+ let(:feature) { 'viewer_protocol' }
306
+ let(:translation_key) { 'wms' }
307
+
308
+ it 'confirms help text is available' do
309
+ expect(helper.show_help_text?(feature, translation_key)).to be true
310
+ end
311
+ end
312
+
313
+ describe '#render_help_text_entry' do
314
+ let(:feature) { 'viewer_protocol' }
315
+ let(:translation_key) { 'wms' }
316
+
317
+ context 'valid entry' do
318
+ it 'renders help text entry for the wms viewer protocol' do
319
+ expect(helper.render_help_text_entry(feature, translation_key)).to eq '<h3 class="help-text viewer_protocol h6"><a data-toggle="popover" data-title="Web Map Service (WMS)" data-content="A Web Map Service displays a geospatial dataset as map images.">Web Map Service (WMS)</a></h3>'
320
+ end
321
+ end
322
+
323
+ context 'invalid entry' do
324
+ it 'renders an empty span' do
325
+ expect(helper.render_help_text_entry('foo', 'bar')).to eq '<span class="help-text translation-missing"></span>'
326
+ end
327
+ end
328
+ end
329
+ end