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,36 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Export features' do
4
+ feature 'when item is public and wfs is available' do
5
+ feature 'Open in Carto' do
6
+ scenario 'shows up in tools' do
7
+ visit solr_document_path 'tufts-cambridgegrid100-04'
8
+ expect(page).to have_css 'li.exports a', text: 'Open in Carto'
9
+ click_link 'Open in Carto'
10
+ end
11
+ end
12
+ end
13
+ feature 'when esri web services are available' do
14
+ feature 'Open in ArcGIS Online' do
15
+ scenario 'shows up in tools' do
16
+ visit solr_document_path '90f14ff4-1359-4beb-b931-5cb41d20ab90'
17
+ expect(page).to have_css 'li.exports a', text: 'Open in ArcGIS Online'
18
+ end
19
+ end
20
+ end
21
+ feature 'when restricted or no wfs' do
22
+ scenario 'is not in tools' do
23
+ visit solr_document_path 'princeton-02870w62c'
24
+ expect(page).not_to have_css 'li.exports a', text: 'Open in Carto'
25
+ end
26
+ end
27
+ context 'when carto is configured not to display' do
28
+ before do
29
+ allow(Settings).to receive(:CARTO_HIDE).and_return(true)
30
+ end
31
+ it 'will not display the carto link' do
32
+ visit solr_document_path 'tufts-cambridgegrid100-04'
33
+ expect(page).not_to have_css 'li.exports a', text: 'Open in Carto'
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Help Text' do
4
+ scenario 'Displays help text entry' do
5
+ visit '/catalog/stanford-cg357zz0321'
6
+ expect(page).to have_css '.help-text', count: 1
7
+ end
8
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Home page', js: true do # use js: true for tests which require js, but it slows things down
4
+ before do
5
+ visit root_path
6
+ end
7
+ scenario 'navbar' do
8
+ expect(page).to have_css '#bookmarks_nav'
9
+ expect(page).to have_css 'a', text: 'History'
10
+ end
11
+ scenario 'search bar' do
12
+ expect(page).not_to have_css '#search-navbar'
13
+ within '.jumbotron' do
14
+ expect(page).to have_css 'h2', text: 'Explore and discover...'
15
+ expect(page).to have_css 'h3', text: 'Find the maps and data you need'
16
+ expect(page).to have_css 'form.search-query-form'
17
+ end
18
+ end
19
+ scenario 'find by category' do
20
+ expect(page).to have_css '.category-block', count: 4
21
+ expect(page).to have_css '.home-facet-link', count: 36
22
+ expect(page).to have_css 'a.more_facets_link', count: 4
23
+ click_link 'Elevation'
24
+ expect(page).to have_css '.filter-name', text: 'Subject'
25
+ expect(page).to have_css '.filter-value', text: 'Elevation'
26
+ end
27
+ scenario 'map should be visible' do
28
+ within '#main-container' do
29
+ expect(page).to have_css('#map')
30
+ expect(page).to have_css('img.leaflet-tile', minimum: 3)
31
+ end
32
+ end
33
+ scenario 'clicking map search should create a spatial search' do
34
+ within '#map' do
35
+ find('.search-control a').click
36
+ expect(page.current_url).to match(/bbox=/)
37
+ end
38
+ expect(page).to have_css '#documents'
39
+ end
40
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'iiif reference' do
4
+ scenario 'displays leaflet viewer', js: true do
5
+ visit solr_document_path('princeton-02870w62c')
6
+ expect(page).to have_css '.leaflet-control-zoom', visible: true
7
+ end
8
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Index map' do
4
+ # Colors
5
+ default_color = '#1eb300'
6
+ selected_color = '#006bde'
7
+ scenario 'displays index map viewer (polygon)', js: true do
8
+ visit solr_document_path('stanford-fb897vt9938')
9
+ # Wait until SVG elements are added
10
+ expect(page).to have_css '.leaflet-overlay-pane svg'
11
+ within '#map' do
12
+ expect(page).to have_css "svg g path:nth-child(2)[fill='#{default_color}']"
13
+ find('svg g path:nth-child(2)').click
14
+ expect(page).to have_css "svg g path:nth-child(2)[fill='#{selected_color}']"
15
+ first('svg g path').click
16
+ expect(page).to have_css "svg g path:nth-child(2)[fill='#{default_color}']"
17
+ end
18
+ end
19
+ scenario 'displays index map viewer (points)', js: true do
20
+ visit solr_document_path('cornell-ny-aerial-photos-1960s')
21
+ # Wait until SVG elements are added
22
+ expect(page).to have_css '.leaflet-overlay-pane svg'
23
+ within '#map' do
24
+ expect(page).to have_css "svg g path:nth-child(2)[fill='#{default_color}']"
25
+ find('svg g path:nth-child(2)').click
26
+ expect(page).to have_css "svg g path:nth-child(2)[fill='#{selected_color}']"
27
+ first('svg g path').click
28
+ expect(page).to have_css "svg g path:nth-child(2)[fill='#{default_color}']"
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Layer inspection', js: true do
4
+ scenario 'clicking map should trigger inspection' do
5
+ visit solr_document_path('mit-f6rqs4ucovjk2')
6
+ expect(page).to have_css('th', text: 'Attribute')
7
+ find('#map').click
8
+ expect(page).not_to have_css('td.default-text')
9
+ end
10
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Layer opacity', js: true do
4
+ scenario 'WMS layer should have opacity control' do
5
+ visit solr_document_path('mit-f6rqs4ucovjk2')
6
+ expect(page).to have_css('div.opacity-text', text: '75%')
7
+ expect(page.all('div.leaflet-layer')[1][:style]).to match(/opacity: 0.75;/)
8
+ end
9
+
10
+ scenario 'ESRI image service layer should have opacity control' do
11
+ visit solr_document_path('32653ed6-8d83-4692-8a06-bf13ffe2c018')
12
+ expect(page).to have_css('div.opacity-text', text: '75%')
13
+ expect(page.find('img.leaflet-image-layer', match: :first)[:style]).to match(/opacity: 0.75;/)
14
+ end
15
+
16
+ scenario 'IIIF layer should not have opacity control' do
17
+ visit solr_document_path('princeton-02870w62c')
18
+ expect(page).not_to have_css('div.opacity-text', text: '75%')
19
+ end
20
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Layer preview', js: true do
4
+ scenario 'Restricted layer should show bounding box' do
5
+ visit solr_document_path('stanford-cg357zz0321')
6
+ within('#map') do
7
+ expect(page).to have_css('path')
8
+ end
9
+ end
10
+
11
+ scenario 'Public layer should show wms layer not bounding box' do
12
+ visit solr_document_path('mit-f6rqs4ucovjk2')
13
+ within '.leaflet-tile-pane' do
14
+ expect(page).to have_css('.leaflet-layer', count: 2)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'layer with no wms or iiif' do
4
+ scenario 'has map with bounding box' do
5
+ pending 'waiting on #201, need example metadata record'
6
+ fail
7
+ end
8
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Attribute table values', js: true do
4
+ xscenario 'are linkified' do
5
+ # ArcGIS server returning an error. Wait until SVG elements are added
6
+ visit solr_document_path 'f406332e63eb4478a9560ad86ae90327_18'
7
+ expect(page).to have_css '.leaflet-overlay-pane svg'
8
+ page.first('svg g path').click
9
+ expect(page).to have_css 'td a[href="http://www.minneapolismn.gov/fire/stations/fire_station28"]', text: 'http://www.minneapolismn.gov/fire/stations/fire_station28'
10
+ end
11
+ end
@@ -0,0 +1,78 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Metadata tools' do
4
+ feature 'when metadata references are available', js: :true do
5
+ let(:iso19139) { File.read(Rails.root.join('..', 'spec', 'fixtures', 'iso19139', 'stanford-cg357zz0321.xml')) }
6
+ let(:fgdc) { File.read(Rails.root.join('..', 'spec', 'fixtures', 'fgdc', 'harvard-g7064-s2-1834-k3.xml')) }
7
+ let(:mods) { File.read(Rails.root.join('..', 'spec', 'fixtures', 'mods', 'stanford-cg357zz0321.mods')) }
8
+ let(:fgdc_response) { instance_double(Faraday::Response) }
9
+ let(:fgdc_connection) { instance_double(Faraday::Connection) }
10
+ let(:iso19139_response) { instance_double(Faraday::Response) }
11
+ let(:iso19139_connection) { instance_double(Faraday::Connection) }
12
+ let(:response) { instance_double(Faraday::Response) }
13
+ let(:connection) { instance_double(Faraday::Connection) }
14
+
15
+ before do
16
+ allow(iso19139_response).to receive(:body).and_return(iso19139)
17
+ allow(iso19139_response).to receive(:status).and_return(200)
18
+ allow(iso19139_connection).to receive(:get).and_return(iso19139_response)
19
+ allow(Faraday).to receive(:new).with(url: 'https://raw.githubusercontent.com/OpenGeoMetadata/edu.stanford.purl/master/cg/357/zz/0321/iso19139.xml').and_return(iso19139_connection)
20
+
21
+ allow(fgdc_response).to receive(:body).and_return(fgdc)
22
+ allow(fgdc_response).to receive(:status).and_return(200)
23
+ allow(fgdc_connection).to receive(:get).and_return(fgdc_response)
24
+ allow(Faraday).to receive(:new).with(url: 'https://raw.githubusercontent.com/OpenGeoMetadata/edu.harvard/master/217/121/227/77/fgdc.xml').and_return(fgdc_connection)
25
+
26
+ allow(response).to receive(:body).and_return(mods)
27
+ allow(response).to receive(:status).and_return(200)
28
+ allow(connection).to receive(:get).and_return(response)
29
+ allow(Faraday).to receive(:new).with(url: 'http://purl.stanford.edu/cg357zz0321.mods').and_return(connection)
30
+
31
+ allow(Faraday).to receive(:new).with(hash_including(url: 'http://127.0.0.1:8983/solr/blacklight-core/')).and_call_original
32
+ end
33
+
34
+ scenario 'shows up as HTML' do
35
+ visit solr_document_path 'harvard-g7064-s2-1834-k3'
36
+ expect(page).to have_css 'li.metadata a', text: 'Metadata'
37
+ click_link 'Metadata'
38
+ using_wait_time 15 do
39
+ within '.metadata-view' do
40
+ expect(page).to have_css '.pill-metadata', text: 'FGDC'
41
+ expect(page).to have_css 'dt', text: 'Identification Information'
42
+ expect(page).to have_css 'dt', text: 'Metadata Reference Information'
43
+ end
44
+ end
45
+ end
46
+ context 'when the metadata is in the XML' do
47
+ let(:mods) { File.read(Rails.root.join('..', 'spec', 'fixtures', 'mods', 'fb897vt9938.mods')) }
48
+ let(:response) { instance_double(Faraday::Response) }
49
+ let(:connection) { instance_double(Faraday::Connection) }
50
+
51
+ before do
52
+ allow(response).to receive(:body).and_return(mods)
53
+ allow(response).to receive(:status).and_return(200)
54
+ allow(connection).to receive(:get).and_return(response)
55
+ allow(Faraday).to receive(:new).with(url: 'http://purl.stanford.edu/fb897vt9938.mods').and_return(connection)
56
+ allow(Faraday).to receive(:new).and_call_original
57
+ end
58
+
59
+ scenario 'shows up as XML' do
60
+ visit solr_document_path 'stanford-cg357zz0321'
61
+ expect(page).to have_css 'li.metadata a', text: 'Metadata'
62
+ click_link 'Metadata'
63
+ using_wait_time 15 do
64
+ within '.metadata-view' do
65
+ expect(page).to have_css '.pill-metadata', text: 'MODS'
66
+ expect(page).to have_css '.CodeRay'
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+ feature 'when metadata references are not available' do
73
+ scenario 'is not in tools' do
74
+ visit solr_document_path 'mit-f6rqs4ucovjk2'
75
+ expect(page).not_to have_css 'li.metadata a', text: 'Metadata'
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Missing metadata', js: true do
4
+ scenario 'Yields error free results page for no spatial' do
5
+ visit search_catalog_path(q: 'ASTER Global Emissivity')
6
+ expect(page).to have_css('#map')
7
+ end
8
+ scenario 'Yields error free show page for no wxs_identifier or spatial' do
9
+ visit solr_document_path('aster-global-emissivity-dataset-1-kilometer-v003-ag1kmcad20')
10
+ expect(page).to have_css('#map')
11
+ end
12
+ scenario 'Yields error free show page for no layer_geom_type_s' do
13
+ visit solr_document_path('05d-03-noGeomType')
14
+ expect(page).to have_css('#map')
15
+ end
16
+ scenario 'Yields error free show page for no dct_provenance_s' do
17
+ visit solr_document_path('99-0001-noProvenance')
18
+ expect(page).to have_css('#map')
19
+ end
20
+ scenario 'Yields error free show page for no solr_geom' do
21
+ visit solr_document_path('05d-p16022coll246-noGeo')
22
+ expect(page).to have_css('#map')
23
+ end
24
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Oembed layer' do
4
+ scenario 'Should show oembed content and map' do
5
+ visit solr_document_path('stanford-dc482zx1528')
6
+ expect(page).to have_css '#map'
7
+ expect(page).to have_css '[data-protocol="Oembed"]'
8
+ end
9
+ end
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Display related documents' do
4
+ let(:expected_json_resp) do
5
+ {
6
+ 'ancestors' =>
7
+ {
8
+ 'numFound' => 0,
9
+ 'start' => 0,
10
+ 'docs' => []
11
+ },
12
+ 'descendants' =>
13
+ {
14
+ 'numFound' => 1,
15
+ 'start' => 0,
16
+ 'docs' =>
17
+ [
18
+ {
19
+ 'dc_title_s' => '2015 New York City Subway Complexes and Ridership',
20
+ 'layer_slug_s' => 'nyu_2451_34502'
21
+ }
22
+ ]
23
+ },
24
+ 'current_doc' => 'nyu_2451_34635'
25
+ }
26
+ end
27
+ scenario 'Record with dc_source_sm value(s) should have parent(s)' do
28
+ visit relations_solr_document_path('nyu_2451_34502')
29
+ expect(page).to have_css('ul b', text: 'Source Datasets')
30
+ end
31
+
32
+ scenario 'Record that is pointed to by others should have children' do
33
+ visit relations_solr_document_path('nyu_2451_34635')
34
+ expect(page).to have_css('ul b', text: 'Derived Datasets')
35
+ end
36
+
37
+ scenario 'Relations should respond to json' do
38
+ visit relations_solr_document_path('nyu_2451_34635', format: 'json')
39
+ expect(page.body).to eq(expected_json_resp.to_json)
40
+ end
41
+
42
+ scenario 'Record with relations should render widget in catalog#show', js: true do
43
+ visit solr_document_path('nyu_2451_34635')
44
+ expect(page).to have_css('div.card-header', text: 'Data Relations')
45
+ end
46
+
47
+ scenario 'Record without relations should not render widget in catalog#show', js: true do
48
+ visit solr_document_path('harvard-g7064-s2-1834-k3')
49
+ expect(page).to have_no_css('div.panel-heading', text: 'Data Relations')
50
+ end
51
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'saved searches' do
4
+ scenario 'list spatial search', js: true do
5
+ visit root_path
6
+ within '#map' do
7
+ find('.search-control a').click
8
+ expect(page.current_url).to match(/bbox=/)
9
+ end
10
+ visit blacklight.search_history_path
11
+ expect(page).to have_css 'td.query a', text: /#{I18n.t('geoblacklight.bbox_label')}:/
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'search bar' do
4
+ scenario 'present on a spatial search' do
5
+ visit search_catalog_path(bbox: '25 3 75 35')
6
+ expect(page).to have_css '.navbar-search'
7
+ end
8
+ scenario 'present on a text search' do
9
+ visit search_catalog_path(q: 'test')
10
+ expect(page).to have_css '.navbar-search'
11
+ end
12
+ end
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'search results map', js: true do
4
+ scenario 'present on a search result page' do
5
+ visit search_catalog_path(q: 'Minnesota')
6
+ expect(page).to have_css '#map'
7
+ end
8
+ scenario 'present on a search result page' do
9
+ visit root_path
10
+ click_link 'Minnesota, United States'
11
+ results = page.all(:css, 'article.document')
12
+ expect(results.count).to equal(3)
13
+ end
14
+ scenario 'view is scoped to Minnesota' do
15
+ visit root_path
16
+ click_link 'Minnesota, United States'
17
+ expect(page).to have_css '#map'
18
+ bbox = page.find('#map')['data-js-map-render-bbox']
19
+
20
+ # Example bbox for Place > Minnesota, United States:
21
+ # "-101.90917968749999,38.75408327579141,-83.27636718749999,53.27835301753182"
22
+ left, bottom, right, top = bbox.split(',')
23
+ expect(left.to_f).to be_within(2).of(-101)
24
+ expect(bottom.to_f).to be_within(3).of(38)
25
+ expect(right.to_f).to be_within(2).of(-83)
26
+ expect(top.to_f).to be_within(2).of(53)
27
+ end
28
+ scenario 'view is scoped to Twin Cities metro area' do
29
+ visit search_catalog_path(q: 'Minneapolis')
30
+ expect(page).to have_css '#map'
31
+ bbox = page.find('#map')['data-js-map-render-bbox']
32
+
33
+ # Example bbox for q: Minneapolis
34
+ # "-94.537353515625,44.004669106432225,-92.208251953125,45.87088761346192"
35
+ left, bottom, right, top = bbox.split(',')
36
+ expect(left.to_f).to be_within(1).of(-94)
37
+ expect(bottom.to_f).to be_within(1).of(44)
38
+ expect(right.to_f).to be_within(1).of(-92)
39
+ expect(top.to_f).to be_within(1).of(45)
40
+ end
41
+ scenario 'view is scoped to NYC' do
42
+ visit root_path
43
+ click_link 'New York, New York, United States'
44
+ expect(page).to have_css '#map'
45
+ bbox = page.find('#map')['data-js-map-render-bbox']
46
+
47
+ # Example bbox for Place > New York, New York, United States
48
+ # "-74.26895141601562,40.455307212131494,-73.68667602539061,40.95501133048621"
49
+ left, bottom, right, top = bbox.split(',')
50
+ expect(left.to_f).to be_within(2).of(-74)
51
+ expect(bottom.to_f).to be_within(2).of(40)
52
+ expect(right.to_f).to be_within(2).of(-73)
53
+ expect(top.to_f).to be_within(2).of(40)
54
+ end
55
+ end