geoblacklight 0.12.1 → 1.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/.hound.yml +8 -0
  3. data/.jshintignore +2 -0
  4. data/.jshintrc +67 -0
  5. data/.rubocop.yml +29 -3
  6. data/Gemfile +20 -16
  7. data/README.md +1 -0
  8. data/Rakefile +3 -2
  9. data/app/assets/javascripts/geoblacklight/basemaps.js +0 -9
  10. data/app/assets/javascripts/geoblacklight/controls.js +1 -0
  11. data/app/assets/javascripts/geoblacklight/controls/opacity.js +8 -0
  12. data/app/assets/javascripts/geoblacklight/geoblacklight.js +3 -2
  13. data/app/assets/javascripts/geoblacklight/viewers.js +1 -1
  14. data/app/assets/javascripts/geoblacklight/viewers/esri.js +2 -3
  15. data/app/assets/javascripts/geoblacklight/viewers/esri/dynamic_map_layer.js +2 -2
  16. data/app/assets/javascripts/geoblacklight/viewers/esri/feature_layer.js +1 -5
  17. data/app/assets/javascripts/geoblacklight/viewers/iiif.js +1 -1
  18. data/app/assets/javascripts/geoblacklight/viewers/map.js +1 -9
  19. data/app/assets/javascripts/geoblacklight/viewers/viewer.js +42 -1
  20. data/app/assets/javascripts/geoblacklight/viewers/wms.js +1 -1
  21. data/app/assets/stylesheets/geoblacklight/modules/toolbar.scss +4 -0
  22. data/app/helpers/geoblacklight_helper.rb +28 -14
  23. data/app/models/concerns/geoblacklight/solr_document.rb +20 -11
  24. data/{lib/geoblacklight/search_builder.rb → app/models/concerns/geoblacklight/spatial_search_behavior.rb} +6 -8
  25. data/app/presenters/geoblacklight/document_presenter.rb +14 -7
  26. data/app/views/catalog/_document_split.html.erb +1 -1
  27. data/app/views/catalog/_downloads.html.erb +46 -38
  28. data/app/views/catalog/_facet_tag_item.html.erb +1 -1
  29. data/app/views/catalog/_facet_tag_layout.html.erb +1 -1
  30. data/app/views/catalog/_header_icons.html.erb +3 -0
  31. data/app/views/catalog/_home_text.html.erb +5 -5
  32. data/app/views/catalog/_index_split_default.html.erb +5 -7
  33. data/app/views/catalog/_search_form_no_navbar.html.erb +2 -2
  34. data/app/views/catalog/_show_default_viewer_container.html.erb +2 -2
  35. data/app/views/catalog/_show_header_default.html.erb +1 -3
  36. data/app/views/catalog/_web_services_wfs.html.erb +1 -1
  37. data/app/views/catalog/_web_services_wms.html.erb +1 -1
  38. data/config/jetty.yml +1 -1
  39. data/config/locales/geoblacklight.en.yml +1 -0
  40. data/geoblacklight.gemspec +4 -4
  41. data/lib/generators/geoblacklight/install_generator.rb +34 -3
  42. data/lib/generators/geoblacklight/templates/catalog_controller.rb +36 -31
  43. data/lib/generators/geoblacklight/templates/config/jetty.yml +1 -1
  44. data/lib/generators/geoblacklight/templates/geoblacklight.js +1 -0
  45. data/lib/generators/geoblacklight/templates/{geoblacklight.css.scss → geoblacklight.scss} +0 -0
  46. data/lib/generators/geoblacklight/templates/settings.yml +42 -2
  47. data/lib/geoblacklight.rb +1 -2
  48. data/lib/geoblacklight/constants.rb +1 -1
  49. data/lib/geoblacklight/download.rb +8 -7
  50. data/lib/geoblacklight/download/geojson_download.rb +1 -1
  51. data/lib/geoblacklight/download/geotiff_download.rb +1 -1
  52. data/lib/geoblacklight/download/kmz_download.rb +1 -1
  53. data/lib/geoblacklight/download/shapefile_download.rb +1 -1
  54. data/lib/geoblacklight/geoblacklight_helper_behavior.rb +4 -10
  55. data/lib/geoblacklight/metadata.rb +3 -6
  56. data/lib/geoblacklight/references.rb +2 -2
  57. data/lib/geoblacklight/routes.rb +3 -17
  58. data/lib/geoblacklight/routes/downloadable.rb +14 -0
  59. data/lib/geoblacklight/routes/exportable.rb +16 -0
  60. data/lib/geoblacklight/routes/wms.rb +13 -0
  61. data/lib/geoblacklight/version.rb +1 -1
  62. data/spec/controllers/catalog_controller_spec.rb +1 -1
  63. data/spec/controllers/download_controller_spec.rb +7 -1
  64. data/spec/features/bookmarks_spec.rb +1 -1
  65. data/spec/features/configurable_basemap_spec.rb +9 -8
  66. data/spec/features/download_layer_spec.rb +33 -15
  67. data/spec/features/esri_viewer_spec.rb +9 -8
  68. data/spec/features/exports_spec.rb +3 -3
  69. data/spec/features/home_page_spec.rb +1 -1
  70. data/spec/features/iiif_viewer_spec.rb +1 -1
  71. data/spec/features/layer_inspection_spec.rb +2 -2
  72. data/spec/features/layer_opacity_spec.rb +7 -2
  73. data/spec/features/layer_preview_spec.rb +2 -2
  74. data/spec/features/metadata_panel_spec.rb +3 -3
  75. data/spec/features/saved_searches_spec.rb +1 -1
  76. data/spec/features/search_bar_spec.rb +2 -2
  77. data/spec/features/show_page_metadata_spec.rb +1 -1
  78. data/spec/features/split_view.html.erb_spec.rb +6 -5
  79. data/spec/features/web_services_modal_spec.rb +3 -3
  80. data/spec/helpers/geoblacklight_helpers_spec.rb +71 -3
  81. data/spec/lib/geoblacklight/document_presenter_spec.rb +41 -13
  82. data/spec/lib/geoblacklight/download_spec.rb +9 -1
  83. data/spec/lib/geoblacklight/geoblacklight_helper_behavior_spec.rb +12 -9
  84. data/spec/lib/geoblacklight/item_viewer_spec.rb +4 -3
  85. data/spec/lib/geoblacklight/references_spec.rb +22 -18
  86. data/spec/lib/geoblacklight/view_helper_override_spec.rb +1 -1
  87. data/spec/lib/geoblacklight/wms_layer/feature_info_response_spec.rb +1 -1
  88. data/spec/lib/geoblacklight/wms_layer_spec.rb +1 -1
  89. data/spec/models/concerns/geoblacklight/solr_document/carto_db_spec.rb +7 -1
  90. data/spec/models/concerns/geoblacklight/solr_document_spec.rb +34 -11
  91. data/spec/{lib/geoblacklight/search_builder_spec.rb → models/concerns/geoblacklight/spatial_search_behavior_spec.rb} +10 -15
  92. data/spec/spec_helper.rb +6 -6
  93. data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
  94. metadata +25 -22
@@ -2,30 +2,58 @@ require 'spec_helper'
2
2
 
3
3
  describe Geoblacklight::DocumentPresenter do
4
4
  let(:request_context) { double(add_facet_params: '') }
5
- let(:config) { Blacklight::Configuration.new }
5
+ let(:blacklight_config) do
6
+ Blacklight::Configuration.new.configure do |config|
7
+ config.add_index_field 'layer_id_s'
8
+ config.add_index_field 'index_display'
9
+ config.add_index_field 'period'
10
+ config.add_index_field 'multi_display'
11
+ end
12
+ end
13
+ let(:solr_fields) { Settings.FIELDS }
6
14
  subject { presenter }
7
15
  let(:presenter) do
8
- described_class.new(document, request_context, config)
16
+ described_class.new(document, request_context, blacklight_config)
9
17
  end
10
18
 
11
19
  let(:document) do
12
- SolrDocument.new(id: 1, layer_id_s: 'druid:abc123')
20
+ SolrDocument.new(
21
+ id: 1,
22
+ layer_id_s: 'druid:abc123',
23
+ non_index_field: 'do not render',
24
+ period: 'Ends with period.',
25
+ multi_display: %w(blue blah)
26
+ )
13
27
  end
14
28
 
15
- describe '#wxs_identifier' do
16
- describe 'without wxs identifier in configuration' do
29
+ describe '#index_fields_display' do
30
+ let(:rendered_index_text) { subject.index_fields_display }
31
+ let(:multi_valued_text) { document['multi_display'].join(' and ') }
32
+ let(:combined_fields) { document['layer_id_s'] + '. ' + document['period'] }
33
+
34
+ context 'with multi-valued field' do
35
+ it 'each value is separated by comma' do
36
+ expect(rendered_index_text).to include(multi_valued_text)
37
+ end
17
38
  end
18
- it 'returns empty string' do
19
- expect(subject.wxs_identifier).to eq ''
39
+ context 'with document fields not configured as index field' do
40
+ it 'does not render' do
41
+ expect(rendered_index_text).not_to include(document['non_index_field'])
42
+ end
20
43
  end
21
- describe 'without wxs identifier in configuration' do
22
- let(:config) do
23
- Blacklight::Configuration.new.configure do |config|
24
- config.wxs_identifier_field = 'layer_id_s'
44
+ context 'with multiple document index fields present' do
45
+ it 'separates fields by period followed by a space' do
46
+ expect(rendered_index_text).to include(combined_fields)
47
+ end
48
+ context 'with index field ending in period' do
49
+ it 'renders only 1 period' do
50
+ expect(rendered_index_text).to include(document['period'] + ' ')
25
51
  end
26
52
  end
27
- it 'returns configured field' do
28
- expect(subject.wxs_identifier).to eq 'druid:abc123'
53
+ end
54
+ context 'with document empty configured index field' do
55
+ it 'does not render a period followed by a space' do
56
+ expect(rendered_index_text).not_to include('. .')
29
57
  end
30
58
  end
31
59
  end
@@ -4,7 +4,8 @@ describe Geoblacklight::Download do
4
4
  let(:response) { double('response') }
5
5
  let(:get) { double('get') }
6
6
  let(:body) { double('body') }
7
- let(:document) { SolrDocument.new(layer_slug_s: 'test', dct_references_s: { 'http://www.opengis.net/def/serviceType/ogc/wms' => 'http://www.example.com/wms' }.to_json) }
7
+ let(:references_field) { Settings.FIELDS.REFERENCES }
8
+ let(:document) { SolrDocument.new(layer_slug_s: 'test', references_field => { 'http://www.opengis.net/def/serviceType/ogc/wms' => 'http://www.example.com/wms' }.to_json) }
8
9
  let(:options) { { type: 'shapefile', extension: 'zip', service_type: 'wms', content_type: 'application/zip' } }
9
10
  let(:download) { Geoblacklight::ShapefileDownload.new(document, options) }
10
11
 
@@ -64,6 +65,13 @@ describe Geoblacklight::Download do
64
65
  expect(File).to receive(:rename)
65
66
  expect(download.create_download_file).to eq download.file_name
66
67
  end
68
+ it 'accepts response MIME type that is more complex than requested' do
69
+ geojson = OpenStruct.new(headers: { 'content-type' => 'application/json;charset=utf-8' })
70
+ expect(download).to receive(:initiate_download).and_return(geojson)
71
+ expect(File).to receive(:open).with("#{download.file_path_and_name}.tmp", 'wb').and_return('')
72
+ expect(File).to receive(:rename)
73
+ expect(download.create_download_file).to eq download.file_name
74
+ end
67
75
  end
68
76
  describe '#initiate_download' do
69
77
  it 'request download from server' do
@@ -5,17 +5,20 @@ describe Geoblacklight::GeoblacklightHelperBehavior do
5
5
  Class.new.extend(described_class)
6
6
  end
7
7
 
8
- describe '#wxs_identifier' do
9
- it 'calls defined presenter class' do
8
+ describe '#geoblacklight_present' do
9
+ before do
10
10
  expect(dummy_class).to receive(:presenter)
11
- .and_return(double(wxs_identifier: 'druid:abc123'))
12
- expect(dummy_class.wxs_identifier).to eq 'druid:abc123'
11
+ .and_return(double(fake_name: 'druid:abc123'))
13
12
  end
14
- end
15
- describe '#presenter_class' do
16
- it 'is defined as Geoblacklight::DocumentPresenter' do
17
- expect(dummy_class.presenter_class.new({}, {}, {}))
18
- .to be_a Geoblacklight::DocumentPresenter
13
+ context 'as a Symbol' do
14
+ it 'calls defined presenter class' do
15
+ expect(dummy_class.geoblacklight_present(:fake_name)).to eq 'druid:abc123'
16
+ end
17
+ end
18
+ context 'as a String' do
19
+ it 'calls defined presenter class' do
20
+ expect(dummy_class.geoblacklight_present('fake_name')).to eq 'druid:abc123'
21
+ end
19
22
  end
20
23
  end
21
24
  end
@@ -4,6 +4,7 @@ describe Geoblacklight::ItemViewer do
4
4
  let(:document) { SolrDocument.new(document_attributes) }
5
5
  let(:document_attributes) { {} }
6
6
  let(:references) { document.references }
7
+ let(:references_field) { Settings.FIELDS.REFERENCES }
7
8
  let(:item_viewer) { described_class.new(references) }
8
9
  describe 'viewer_preference' do
9
10
  describe 'for no references' do
@@ -14,7 +15,7 @@ describe Geoblacklight::ItemViewer do
14
15
  describe 'for wms reference' do
15
16
  let(:document_attributes) do
16
17
  {
17
- dct_references_s: {
18
+ references_field => {
18
19
  'http://www.opengis.net/def/serviceType/ogc/wms' => 'http://www.example.com/wms',
19
20
  'http://iiif.io/api/image' => 'http://www.example.com/iiif'
20
21
  }.to_json
@@ -27,7 +28,7 @@ describe Geoblacklight::ItemViewer do
27
28
  describe 'for iiif only reference' do
28
29
  let(:document_attributes) do
29
30
  {
30
- dct_references_s: {
31
+ references_field => {
31
32
  'http://iiif.io/api/image' => 'http://www.example.com/iiif'
32
33
  }.to_json
33
34
  }
@@ -39,7 +40,7 @@ describe Geoblacklight::ItemViewer do
39
40
  describe 'for tiled map layer reference' do
40
41
  let(:document_attributes) do
41
42
  {
42
- dct_references_s: {
43
+ references_field => {
43
44
  'urn:x-esri:serviceType:ArcGIS#TiledMapLayer' => 'http://www.example.com/MapServer'
44
45
  }.to_json
45
46
  }
@@ -1,11 +1,13 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Geoblacklight::References do
4
+ let(:references_field) { Settings.FIELDS.REFERENCES }
5
+ let(:file_format_field) { Settings.FIELDS.FILE_FORMAT }
4
6
  let(:typical_ogp_shapefile) do
5
7
  described_class.new(
6
8
  SolrDocument.new(
7
- dc_format_s: 'Shapefile',
8
- dct_references_s: {
9
+ file_format_field => 'Shapefile',
10
+ references_field => {
9
11
  'http://www.opengis.net/def/serviceType/ogc/wms' => 'http://hgl.harvard.edu:8080/geoserver/wms',
10
12
  'http://www.opengis.net/def/serviceType/ogc/wfs' => 'http://hgl.harvard.edu:8080/geoserver/wfs'
11
13
  }.to_json
@@ -15,16 +17,16 @@ describe Geoblacklight::References do
15
17
  let(:no_service_shapefile) do
16
18
  described_class.new(
17
19
  SolrDocument.new(
18
- dc_format_s: 'Shapefile',
19
- dct_references_s: {}.to_json
20
+ file_format_field => 'Shapefile',
21
+ references_field => {}.to_json
20
22
  )
21
23
  )
22
24
  end
23
25
  let(:typical_ogp_geotiff) do
24
26
  described_class.new(
25
27
  SolrDocument.new(
26
- dc_format_s: 'GeoTIFF',
27
- dct_references_s: {
28
+ file_format_field => 'GeoTIFF',
29
+ references_field => {
28
30
  'http://www.opengis.net/def/serviceType/ogc/wms' => 'http://hgl.harvard.edu:8080/geoserver/wms',
29
31
  'http://www.opengis.net/def/serviceType/ogc/wfs' => 'http://hgl.harvard.edu:8080/geoserver/wfs'
30
32
  }.to_json
@@ -34,8 +36,8 @@ describe Geoblacklight::References do
34
36
  let(:typical_arcgrid) do
35
37
  described_class.new(
36
38
  SolrDocument.new(
37
- dc_format_s: 'ArcGRID',
38
- dct_references_s: {
39
+ file_format_field => 'ArcGRID',
40
+ references_field => {
39
41
  'http://www.opengis.net/def/serviceType/ogc/wms' => 'http://hgl.harvard.edu:8080/geoserver/wms',
40
42
  'http://www.opengis.net/def/serviceType/ogc/wfs' => 'http://hgl.harvard.edu:8080/geoserver/wfs'
41
43
  }.to_json
@@ -45,8 +47,8 @@ describe Geoblacklight::References do
45
47
  let(:complex_shapefile) do
46
48
  described_class.new(
47
49
  SolrDocument.new(
48
- dc_format_s: 'Shapefile',
49
- dct_references_s: {
50
+ file_format_field => 'Shapefile',
51
+ references_field => {
50
52
  'http://schema.org/downloadUrl' => 'http://example.com/urn:hul.harvard.edu:HARVARD.SDE2.TG10USAIANNH/data.zip',
51
53
  'http://www.isotc211.org/schemas/2005/gmd/' => 'http://example.com/urn:hul.harvard.edu:HARVARD.SDE2.TG10USAIANNH/iso19139.xml',
52
54
  'http://www.loc.gov/mods/v3' => 'http://example.com/urn:hul.harvard.edu:HARVARD.SDE2.TG10USAIANNH/mods.xml',
@@ -59,17 +61,19 @@ describe Geoblacklight::References do
59
61
  end
60
62
  let(:direct_download_only) do
61
63
  described_class.new(
62
- dc_format_s: 'GeoTIFF',
63
- dct_references_s: {
64
- 'http://schema.org/downloadUrl' => 'http://example.com/layer-id-geotiff.tiff'
65
- }.to_json
64
+ SolrDocument.new(
65
+ file_format_field => 'GeoTIFF',
66
+ references_field => {
67
+ 'http://schema.org/downloadUrl' => 'http://example.com/layer-id-geotiff.tiff'
68
+ }.to_json
69
+ )
66
70
  )
67
71
  end
68
72
  let(:simple_iiif_image) do
69
73
  described_class.new(
70
74
  SolrDocument.new(
71
- dc_format_s: 'Raster',
72
- dct_references_s: {
75
+ file_format_field => 'Raster',
76
+ references_field => {
73
77
  'http://schema.org/url' => 'http://arks.princeton.edu/ark:/88435/02870w62c',
74
78
  'http://iiif.io/api/image' => 'http://libimages.princeton.edu/loris2/pudl0076%2Fmap_pownall%2F00000001.jp2/info.json'
75
79
  }.to_json
@@ -82,7 +86,7 @@ describe Geoblacklight::References do
82
86
  )
83
87
  end
84
88
  describe '#initialize' do
85
- it 'parses dct_references_s to @refs' do
89
+ it 'parses configured references field to @refs' do
86
90
  expect(typical_ogp_shapefile.instance_variable_get(:@refs)).to be_an Array
87
91
  end
88
92
  it 'empty references return an empty array' do
@@ -91,7 +95,7 @@ describe Geoblacklight::References do
91
95
  expect(empty_refs).to eq []
92
96
  end
93
97
  it 'sets @references_field' do
94
- expect(typical_ogp_shapefile.reference_field).to eq :dct_references_s
98
+ expect(typical_ogp_shapefile.reference_field).to eq references_field
95
99
  expect(custom_fields.reference_field).to eq :new_ref_field
96
100
  end
97
101
  end
@@ -7,7 +7,7 @@ describe Geoblacklight::ViewHelperOverride do
7
7
 
8
8
  let(:fake_controller) do
9
9
  GeoblacklightControllerTestClass.new
10
- .extend(described_class)
10
+ .extend(described_class)
11
11
  end
12
12
 
13
13
  describe 'spatial_parameters?' do
@@ -25,7 +25,7 @@ describe Geoblacklight::FeatureInfoResponse do
25
25
 
26
26
  describe '#format' do
27
27
  it 'returns a formated response' do
28
- expect(response.format).to_not be_nil
28
+ expect(response.format).not_to be_nil
29
29
  expect(response.format[:values].length).to eq 2
30
30
  expect(response.format[:values][0]).to eq %w(Header1 value1)
31
31
  expect(response.format[:values][1]).to eq %w(Header2 value2)
@@ -18,7 +18,7 @@ describe Geoblacklight::WmsLayer do
18
18
  describe '#search_params' do
19
19
  it 'returns all params except URL plus default params' do
20
20
  expect(wms_layer.search_params.length).to eq 8
21
- expect(wms_layer.search_params).to_not include 'URL' => 'http://www.example.com'
21
+ expect(wms_layer.search_params).not_to include 'URL' => 'http://www.example.com'
22
22
  end
23
23
  end
24
24
 
@@ -2,6 +2,12 @@ require 'spec_helper'
2
2
 
3
3
  describe Geoblacklight::SolrDocument::CartoDb do
4
4
  let(:subject) { SolrDocument.new }
5
+ let(:geojson_download) { instance_double(Geoblacklight::GeojsonDownload) }
6
+
7
+ before do
8
+ allow(Geoblacklight::GeojsonDownload).to receive(:new).and_return(geojson_download)
9
+ end
10
+
5
11
  describe '#cartodb_reference' do
6
12
  it 'returns nil for restricted documents' do
7
13
  expect(subject).to receive(:public?).and_return(false)
@@ -21,7 +27,7 @@ describe Geoblacklight::SolrDocument::CartoDb do
21
27
  expect(subject).to receive(:public?).and_return(true)
22
28
  expect(subject).to receive(:download_types)
23
29
  .and_return(geojson: { 'stuff' => 'stuff' })
24
- expect_any_instance_of(Geoblacklight::GeojsonDownload)
30
+ expect(geojson_download)
25
31
  .to receive(:url_with_params)
26
32
  .and_return('http://www.example.com/geojsonDownload')
27
33
  expect(subject.cartodb_reference).to eq 'http://www.example.com/geojsonDownload'
@@ -2,6 +2,9 @@ require 'spec_helper'
2
2
 
3
3
  describe Geoblacklight::SolrDocument do
4
4
  let(:document) { SolrDocument.new(document_attributes) }
5
+ let(:rights_field) { Settings.FIELDS.RIGHTS }
6
+ let(:provenance_field) { Settings.FIELDS.PROVENANCE }
7
+ let(:references_field) { Settings.FIELDS.REFERENCES }
5
8
  describe '#available?' do
6
9
  let(:document_attributes) { {} }
7
10
  describe 'a public document' do
@@ -21,13 +24,13 @@ describe Geoblacklight::SolrDocument do
21
24
  end
22
25
  describe '#public?' do
23
26
  describe 'a public document' do
24
- let(:document_attributes) { { dc_rights_s: 'PUBLIC' } }
27
+ let(:document_attributes) { { rights_field => 'PUBLIC' } }
25
28
  it 'is public' do
26
29
  expect(document.public?).to be_truthy
27
30
  end
28
31
  end
29
32
  describe 'a restricted resource' do
30
- let(:document_attributes) { { dc_rights_s: 'RESTRICTED' } }
33
+ let(:document_attributes) { { rights_field => 'RESTRICTED' } }
31
34
  it 'does not be public' do
32
35
  expect(document.public?).to be_falsey
33
36
  end
@@ -37,8 +40,8 @@ describe Geoblacklight::SolrDocument do
37
40
  describe 'available direct download' do
38
41
  let(:document_attributes) do
39
42
  {
40
- dc_rights_s: 'Public',
41
- dct_references_s: {
43
+ rights_field => 'Public',
44
+ references_field => {
42
45
  'http://schema.org/downloadUrl' => 'http://example.com/direct/data.zip'
43
46
  }.to_json
44
47
  }
@@ -50,7 +53,7 @@ describe Geoblacklight::SolrDocument do
50
53
  end
51
54
  describe '#same_institution?' do
52
55
  describe 'within the same institution' do
53
- let(:document_attributes) { { dct_provenance_s: 'STANFORD' } }
56
+ let(:document_attributes) { { provenance_field => 'STANFORD' } }
54
57
  it 'is true' do
55
58
  allow(Settings).to receive('Institution').and_return('Stanford')
56
59
  expect(document.same_institution?).to be_truthy
@@ -61,7 +64,7 @@ describe Geoblacklight::SolrDocument do
61
64
  end
62
65
  end
63
66
  describe 'within a different institution' do
64
- let(:document_attributes) { { dct_provenance_s: 'MIT' } }
67
+ let(:document_attributes) { { provenance_field => 'MIT' } }
65
68
  it 'is false' do
66
69
  allow(Settings).to receive('Institution').and_return('Stanford')
67
70
  expect(document.same_institution?).to be_falsey
@@ -86,7 +89,7 @@ describe Geoblacklight::SolrDocument do
86
89
  describe 'with a direct download' do
87
90
  let(:document_attributes) do
88
91
  {
89
- dct_references_s: {
92
+ references_field => {
90
93
  'http://schema.org/downloadUrl' => 'http://example.com/urn:hul.harvard.edu:HARVARD.SDE2.TG10USAIANNH/data.zip'
91
94
  }.to_json
92
95
  }
@@ -97,7 +100,7 @@ describe Geoblacklight::SolrDocument do
97
100
  end
98
101
  end
99
102
  it 'returns nil if no direct download' do
100
- expect_any_instance_of(Geoblacklight::Reference).to_not receive(:to_hash)
103
+ expect_any_instance_of(Geoblacklight::Reference).not_to receive(:to_hash)
101
104
  expect(document.direct_download).to be_nil
102
105
  end
103
106
  end
@@ -105,7 +108,7 @@ describe Geoblacklight::SolrDocument do
105
108
  describe 'with an hgl download' do
106
109
  let(:document_attributes) do
107
110
  {
108
- dct_references_s: {
111
+ references_field => {
109
112
  'http://schema.org/DownloadAction' => 'http://example.com/harvard'
110
113
  }.to_json
111
114
  }
@@ -121,6 +124,26 @@ describe Geoblacklight::SolrDocument do
121
124
  end
122
125
  end
123
126
  end
127
+ describe 'iiif_download' do
128
+ describe 'with a IIIF download' do
129
+ let(:document_attributes) do
130
+ {
131
+ references_field => {
132
+ 'http://iiif.io/api/image' => 'https://example.edu/images/info.json'
133
+ }.to_json
134
+ }
135
+ end
136
+ it 'returns a IIIF download hash' do
137
+ expect(document.iiif_download[:iiif]).to eq('https://example.edu/images/info.json')
138
+ end
139
+ end
140
+ describe 'without a IIIF download' do
141
+ let(:document_attributes) { {} }
142
+ it 'returns nil' do
143
+ expect(document.iiif_download).to be_nil
144
+ end
145
+ end
146
+ end
124
147
  describe 'item_viewer' do
125
148
  let(:document_attributes) { {} }
126
149
  it 'is a ItemViewer' do
@@ -131,7 +154,7 @@ describe Geoblacklight::SolrDocument do
131
154
  describe 'with a wms reference' do
132
155
  let(:document_attributes) do
133
156
  {
134
- dct_references_s: {
157
+ references_field => {
135
158
  'http://www.opengis.net/def/serviceType/ogc/wms' => 'http://www.example.com/wms'
136
159
  }.to_json
137
160
  }
@@ -149,7 +172,7 @@ describe Geoblacklight::SolrDocument do
149
172
  describe 'with a wms reference' do
150
173
  let(:document_attributes) do
151
174
  {
152
- dct_references_s: {
175
+ references_field => {
153
176
  'http://www.opengis.net/def/serviceType/ogc/wms' => 'http://www.example.com/wms'
154
177
  }.to_json
155
178
  }
@@ -1,27 +1,22 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Geoblacklight::SearchBuilder do
4
- let(:method_chain) { CatalogController.search_params_logic }
3
+ describe Geoblacklight::SpatialSearchBehavior do
5
4
  let(:user_params) { Hash.new }
6
5
  let(:solr_params) { Hash.new }
6
+ let(:blacklight_config) { CatalogController.blacklight_config.deep_copy }
7
7
  let(:context) { CatalogController.new }
8
8
 
9
- let(:search_builder) { described_class.new(method_chain, context) }
10
-
11
- subject { search_builder.with(user_params) }
12
-
13
- describe '#initialize' do
14
- it 'has add_spatial_params in processor chain once' do
15
- expect(subject.processor_chain).to include :add_spatial_params
16
- expect(subject.processor_chain
17
- .count { |x| x == :add_spatial_params }).to eq 1
18
- new_search = described_class.new(subject.processor_chain, context)
19
- expect(new_search.processor_chain).to include :add_spatial_params
20
- expect(subject.processor_chain
21
- .count { |x| x == :add_spatial_params }).to eq 1
9
+ let(:search_builder_class) do
10
+ Class.new(Blacklight::SearchBuilder).tap do |klass|
11
+ include Blacklight::Solr::SearchBuilderBehavior
12
+ klass.include(described_class)
22
13
  end
23
14
  end
24
15
 
16
+ let(:search_builder) { search_builder_class.new(context) }
17
+
18
+ subject { search_builder.with(user_params) }
19
+
25
20
  describe '#add_spatial_params' do
26
21
  it 'returns the solr_params when no bbox is given' do
27
22
  expect(subject.add_spatial_params(solr_params)).to eq solr_params