geoblacklight 0.11.1 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.rubocop.yml +45 -0
  4. data/CONTRIBUTING.md +38 -0
  5. data/Gemfile +27 -6
  6. data/README.md +2 -9
  7. data/Rakefile +20 -11
  8. data/app/assets/javascripts/geoblacklight/basemaps.js +6 -3
  9. data/app/assets/javascripts/geoblacklight/modules/layer_opacity.js +13 -5
  10. data/app/assets/javascripts/geoblacklight/viewers/map.js +7 -0
  11. data/app/assets/javascripts/geoblacklight/viewers/wms.js +2 -5
  12. data/app/assets/stylesheets/geoblacklight/modules/item.scss +1 -1
  13. data/app/controllers/download_controller.rb +18 -14
  14. data/app/controllers/wms_controller.rb +1 -1
  15. data/app/helpers/geoblacklight_helper.rb +17 -11
  16. data/{lib → app/models/concerns}/geoblacklight/solr_document.rb +13 -8
  17. data/{lib → app/models/concerns}/geoblacklight/solr_document/carto_db.rb +0 -0
  18. data/{lib → app/models/concerns}/geoblacklight/solr_document/finder.rb +1 -2
  19. data/app/models/concerns/geoblacklight/solr_document/inspection.rb +15 -0
  20. data/{lib → app/presenters}/geoblacklight/document_presenter.rb +0 -0
  21. data/app/views/catalog/_show_default_viewer_container.html.erb +1 -1
  22. data/config/initializers/rails_config.rb +2 -2
  23. data/geoblacklight.gemspec +3 -4
  24. data/lib/generators/geoblacklight/install_generator.rb +17 -16
  25. data/lib/generators/geoblacklight/templates/catalog_controller.rb +1 -5
  26. data/lib/generators/geoblacklight/templates/geoblacklight.css.scss +0 -1
  27. data/lib/generators/geoblacklight/templates/geoblacklight.js +0 -1
  28. data/lib/geoblacklight.rb +1 -6
  29. data/lib/geoblacklight/bounding_box.rb +2 -1
  30. data/lib/geoblacklight/catalog_helper_override.rb +0 -1
  31. data/lib/geoblacklight/download.rb +12 -7
  32. data/lib/geoblacklight/download/hgl_download.rb +2 -3
  33. data/lib/geoblacklight/download/kmz_download.rb +9 -3
  34. data/lib/geoblacklight/download/shapefile_download.rb +5 -1
  35. data/lib/geoblacklight/engine.rb +1 -3
  36. data/lib/geoblacklight/exceptions.rb +1 -1
  37. data/lib/geoblacklight/metadata.rb +0 -1
  38. data/lib/geoblacklight/references.rb +3 -4
  39. data/lib/geoblacklight/routes.rb +5 -3
  40. data/lib/geoblacklight/search_builder.rb +3 -2
  41. data/lib/geoblacklight/version.rb +1 -1
  42. data/lib/geoblacklight/view_helper_override.rb +9 -10
  43. data/lib/geoblacklight/wms_layer.rb +12 -15
  44. data/lib/geoblacklight/wms_layer/feature_info_response.rb +1 -1
  45. data/spec/controllers/catalog_controller_spec.rb +1 -1
  46. data/spec/controllers/download_controller_spec.rb +7 -7
  47. data/spec/features/home_page_spec.rb +1 -1
  48. data/spec/features/layer_opacity_spec.rb +9 -0
  49. data/spec/features/metadata_panel_spec.rb +6 -4
  50. data/spec/features/saved_searches_spec.rb +1 -1
  51. data/spec/features/split_view.html.erb_spec.rb +3 -3
  52. data/spec/helpers/geoblacklight_helpers_spec.rb +3 -4
  53. data/spec/lib/geoblacklight/bounding_box_spec.rb +7 -7
  54. data/spec/lib/geoblacklight/controller_override_spec.rb +1 -1
  55. data/spec/lib/geoblacklight/document_presenter_spec.rb +1 -1
  56. data/spec/lib/geoblacklight/download/geojson_download_spec.rb +5 -5
  57. data/spec/lib/geoblacklight/download/geotiff_download_spec.rb +5 -5
  58. data/spec/lib/geoblacklight/download/hgl_download_spec.rb +6 -6
  59. data/spec/lib/geoblacklight/download/kmz_download_spec.rb +5 -5
  60. data/spec/lib/geoblacklight/download/shapefile_download_spec.rb +5 -5
  61. data/spec/lib/geoblacklight/download_spec.rb +14 -14
  62. data/spec/lib/geoblacklight/geoblacklight_helper_behavior_spec.rb +2 -1
  63. data/spec/lib/geoblacklight/item_viewer_spec.rb +5 -5
  64. data/spec/lib/geoblacklight/metadata_spec.rb +3 -3
  65. data/spec/lib/geoblacklight/reference_spec.rb +3 -3
  66. data/spec/lib/geoblacklight/references_spec.rb +34 -34
  67. data/spec/lib/geoblacklight/search_builder_spec.rb +7 -15
  68. data/spec/lib/geoblacklight/view_helper_override_spec.rb +15 -15
  69. data/spec/lib/geoblacklight/wms_layer/feature_info_response_spec.rb +10 -10
  70. data/spec/lib/geoblacklight/wms_layer_spec.rb +7 -7
  71. data/spec/{lib → models/concerns}/geoblacklight/solr_document/carto_db_spec.rb +0 -0
  72. data/spec/{lib → models/concerns}/geoblacklight/solr_document/finder_spec.rb +2 -2
  73. data/spec/models/concerns/geoblacklight/solr_document/inspection_spec.rb +16 -0
  74. data/spec/{lib → models/concerns}/geoblacklight/solr_document_spec.rb +24 -24
  75. data/spec/spec_helper.rb +6 -7
  76. data/spec/support/features.rb +1 -1
  77. data/spec/support/features/session_helpers.rb +1 -1
  78. data/spec/teaspoon_env.rb +38 -33
  79. data/spec/test_app_templates/lib/generators/test_app_generator.rb +4 -4
  80. data/spec/views/catalog/_document_split.html.erb_spec.rb +1 -1
  81. data/spec/views/catalog/_index_split.html.erb_spec.rb +1 -1
  82. metadata +31 -33
  83. data/lib/geoblacklight/config.rb +0 -0
@@ -1,10 +1,11 @@
1
1
  module Geoblacklight
2
- class SearchBuilder < Blacklight::Solr::SearchBuilder
2
+ class SearchBuilder < Blacklight::Solr::SearchBuilder
3
3
  self.default_processor_chain += [:add_spatial_params]
4
4
 
5
5
  def initialize(processor_chain, scope)
6
6
  super(processor_chain, scope)
7
- @processor_chain += [:add_spatial_params] unless @processor_chain.include?(:add_spatial_params)
7
+ @processor_chain += [:add_spatial_params] unless @processor_chain
8
+ .include?(:add_spatial_params)
8
9
  end
9
10
 
10
11
  ##
@@ -1,3 +1,3 @@
1
1
  module Geoblacklight
2
- VERSION = '0.11.1'
2
+ VERSION = '0.12.0'
3
3
  end
@@ -11,8 +11,8 @@ module Geoblacklight
11
11
  spatial_parameters? || super
12
12
  end
13
13
 
14
- def query_has_constraints?(params = params)
15
- has_search_parameters? || super
14
+ def query_has_constraints?(localized_params = params)
15
+ has_search_parameters? || super(localized_params)
16
16
  end
17
17
 
18
18
  def render_search_to_s(params)
@@ -21,19 +21,18 @@ module Geoblacklight
21
21
 
22
22
  def render_search_to_s_bbox(params)
23
23
  return ''.html_safe if params['bbox'].blank?
24
- render_search_to_s_element('Bounding box', render_filter_value(params['bbox']) )
24
+ render_search_to_s_element('Bounding box', render_filter_value(params['bbox']))
25
25
  end
26
26
 
27
- def render_constraints_filters(params = params)
28
- content = super(params)
27
+ def render_constraints_filters(localized_params = params)
28
+ content = super(localized_params)
29
29
 
30
- if params[:bbox]
31
- content << render_constraint_element('Bounding Box',
32
- params[:bbox],
33
- remove: search_action_path(remove_spatial_filter_group(:bbox, params)))
30
+ if localized_params[:bbox]
31
+ path = search_action_path(remove_spatial_filter_group(:bbox, localized_params))
32
+ content << render_constraint_element('Bounding Box', localized_params[:bbox], remove: path)
34
33
  end
35
34
 
36
- return content
35
+ content
37
36
  end
38
37
  end
39
38
  end
@@ -1,6 +1,5 @@
1
1
  module Geoblacklight
2
2
  class WmsLayer
3
-
4
3
  def initialize(params)
5
4
  @params = params.merge(Settings.WMS_PARAMS)
6
5
  @response = Geoblacklight::FeatureInfoResponse.new(request_response)
@@ -14,25 +13,23 @@ module Geoblacklight
14
13
  @params.except('URL')
15
14
  end
16
15
 
17
- def get_feature_info
16
+ def feature_info
18
17
  @response.check
19
18
  end
20
19
 
21
20
  def request_response
22
- begin
23
- conn = Faraday.new(url: url)
24
- conn.get do |request|
25
- request.params = search_params
26
- request.options.timeout = Settings.TIMEOUT_WMS
27
- request.options.open_timeout = Settings.TIMEOUT_WMS
28
- end
29
- rescue Faraday::Error::ConnectionFailed => error
30
- Geoblacklight.logger.error error.inspect
31
- { error: error.inspect }
32
- rescue Faraday::Error::TimeoutError => error
33
- Geoblacklight.logger.error error.inspect
34
- { error: error.inspect }
21
+ conn = Faraday.new(url: url)
22
+ conn.get do |request|
23
+ request.params = search_params
24
+ request.options.timeout = Settings.TIMEOUT_WMS
25
+ request.options.open_timeout = Settings.TIMEOUT_WMS
35
26
  end
27
+ rescue Faraday::Error::ConnectionFailed => error
28
+ Geoblacklight.logger.error error.inspect
29
+ { error: error.inspect }
30
+ rescue Faraday::Error::TimeoutError => error
31
+ Geoblacklight.logger.error error.inspect
32
+ { error: error.inspect }
36
33
  end
37
34
  end
38
35
  end
@@ -29,4 +29,4 @@ module Geoblacklight
29
29
  @response.headers['content-type'].slice(0, 9) == 'text/xml'
30
30
  end
31
31
  end
32
- end
32
+ end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe CatalogController, type: :controller do
4
4
  describe '#web_services' do
5
- it 'should return a document based off an id' do
5
+ it 'returns a document based off an id' do
6
6
  get :web_services, id: 'mit-us-ma-e25zcta5dct-2000'
7
7
  expect(response.status).to eq 200
8
8
  expect(assigns(:document)).to_not be_nil
@@ -3,13 +3,13 @@ require 'spec_helper'
3
3
  describe Geoblacklight::DownloadController, type: :controller do
4
4
  describe '#file' do
5
5
  describe 'restricted file' do
6
- it 'should redirect to login for authentication' do
6
+ it 'redirects to login for authentication' do
7
7
  get :file, id: 'stanford-cg357zz0321-shapefile', format: 'zip'
8
8
  expect(response.status).to eq 401
9
9
  end
10
10
  end
11
11
  describe 'public file' do
12
- it 'should initiate download' do
12
+ it 'initiates download' do
13
13
  expect(controller).to receive(:render)
14
14
  expect(controller).to receive(:send_file)
15
15
  get :file, id: 'mit-us-ma-e25zcta5dct-2000-shapefile', format: 'zip'
@@ -19,27 +19,27 @@ describe Geoblacklight::DownloadController, type: :controller do
19
19
  end
20
20
  describe '#show' do
21
21
  describe 'restricted file' do
22
- it 'should redirect to login for authentication' do
22
+ it 'redirects to login for authentication' do
23
23
  get 'show', id: 'stanford-cg357zz0321', format: 'json'
24
24
  expect(response.status).to eq 401
25
25
  end
26
26
  end
27
27
  describe 'public file' do
28
- it 'should initiate download creation' do
28
+ it 'initiates download creation' do
29
29
  get 'show', id: 'mit-us-ma-e25zcta5dct-2000', type: 'shapefile'
30
30
  expect(response.status).to eq 200
31
31
  end
32
32
  end
33
33
  end
34
34
  describe '#hgl' do
35
- it 'should request file' do
35
+ it 'requests file' do
36
36
  expect_any_instance_of(Geoblacklight::HglDownload).to receive(:get).and_return('success')
37
37
  get :hgl, id: 'harvard-g7064-s2-1834-k3', email: 'foo@example.com'
38
38
  expect(response.status).to eq 200
39
39
  end
40
- it 'should render form' do
40
+ it 'renders form' do
41
41
  get :hgl, id: 'harvard-g7064-s2-1834-k3'
42
42
  expect(response).to render_template('hgl')
43
43
  end
44
44
  end
45
- end
45
+ end
@@ -29,7 +29,7 @@ feature 'Home page', js: true do # use js: true for tests which require js, but
29
29
  scenario 'clicking map search should create a spatial search' do
30
30
  within '#map' do
31
31
  find('.search-control a').click
32
- expect(page.current_url).to match /bbox=/
32
+ expect(page.current_url).to match(/bbox=/)
33
33
  end
34
34
  expect(page).to have_css '#documents'
35
35
  end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Layer opacity', js: true do
4
+ scenario 'WMS layer should have opacity control' do
5
+ visit catalog_path('mit-us-ma-e25zcta5dct-2000')
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
+ end
@@ -6,10 +6,12 @@ feature 'Metadata tools' do
6
6
  visit catalog_path 'stanford-cg357zz0321'
7
7
  expect(page).to have_css 'li.metadata a', text: 'Metadata'
8
8
  click_link 'Metadata'
9
- within '.modal-body' do
10
- expect(page).to have_css 'div.label', text: 'MODS'
11
- expect(page).to have_css 'div.CodeRay', count: 2
12
- expect(page).to have_css 'div.label', text: 'ISO 19139'
9
+ using_wait_time 15 do
10
+ within '.metadata-view' do
11
+ expect(page).to have_css 'div.label', text: 'MODS'
12
+ expect(page).to have_css 'div.CodeRay', count: 2
13
+ expect(page).to have_css 'div.label', text: 'ISO 19139'
14
+ end
13
15
  end
14
16
  end
15
17
  end
@@ -5,7 +5,7 @@ feature 'saved searches' do
5
5
  visit root_path
6
6
  within '#map' do
7
7
  find('.search-control a').click
8
- expect(page.current_url).to match /bbox=/
8
+ expect(page.current_url).to match(/bbox=/)
9
9
  end
10
10
  visit search_history_path
11
11
  expect(page).to have_css 'td.query a', text: /Bounding box:/
@@ -6,9 +6,9 @@ feature 'Index view', js: true do
6
6
  end
7
7
 
8
8
  scenario 'should have documents and map on page' do
9
- visit catalog_index_path(f: { dct_provenance_s: ['Stanford']})
9
+ visit catalog_index_path(f: { dct_provenance_s: ['Stanford'] })
10
10
  expect(page).to have_css('#documents')
11
- expect(page).to have_css(".document", count: 3)
11
+ expect(page).to have_css('.document', count: 3)
12
12
  expect(page).to have_css('#map')
13
13
  end
14
14
 
@@ -31,7 +31,7 @@ feature 'Index view', js: true do
31
31
 
32
32
  scenario 'hover on record should produce bounding box on map' do
33
33
  # Needed to find an svg element on the page
34
- visit catalog_index_path(f: { dct_provenance_s: ['Stanford']})
34
+ visit catalog_index_path(f: { dct_provenance_s: ['Stanford'] })
35
35
  expect(Nokogiri::HTML.parse(page.body).css('path').length).to eq 0
36
36
  find('.documentHeader', match: :first).trigger(:mouseover)
37
37
  expect(Nokogiri::HTML.parse(page.body).css('path').length).to eq 1
@@ -1,13 +1,12 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe GeoblacklightHelper, type: :helper do
4
- include GeoblacklightHelper
5
4
  include ActionView::Helpers::UrlHelper
6
5
  include ActionView::Helpers::TranslationHelper
7
6
  describe '#render_facet_links' do
8
- it 'should contain unique links' do
9
- expect(self).to receive(:catalog_index_path).exactly(3).times.and_return("http://example.com/catalog?f[dc_subject_sm][]=category")
10
- html = Capybara.string(render_facet_links('dc_subject_sm', ['Test', 'Test', 'Earth', 'Science']))
7
+ it 'contains unique links' do
8
+ expect(self).to receive(:catalog_index_path).exactly(3).times.and_return('http://example.com/catalog?f[dc_subject_sm][]=category')
9
+ html = Capybara.string(render_facet_links('dc_subject_sm', %w(Test Test Earth Science)))
11
10
  expect(html).to have_css 'a', count: 3
12
11
  expect(html).to have_css 'a', text: 'Test', count: 1
13
12
  expect(html).to have_css 'a', text: 'Earth', count: 1
@@ -3,25 +3,25 @@ require 'spec_helper'
3
3
  describe Geoblacklight::BoundingBox do
4
4
  describe '#initialize' do
5
5
  it 'handles multiple input types as arguments' do
6
- expect(Geoblacklight::BoundingBox.new('1', '1', '1', '1')).to be_an Geoblacklight::BoundingBox
7
- expect(Geoblacklight::BoundingBox.new(1, 2, 3, 3)).to be_an Geoblacklight::BoundingBox
8
- expect(Geoblacklight::BoundingBox.new(1.1, 2.1, 3.1, 3.1)).to be_an Geoblacklight::BoundingBox
6
+ expect(described_class.new('1', '1', '1', '1')).to be_an described_class
7
+ expect(described_class.new(1, 2, 3, 3)).to be_an described_class
8
+ expect(described_class.new(1.1, 2.1, 3.1, 3.1)).to be_an described_class
9
9
  end
10
10
  end
11
11
  describe '#to_envelope' do
12
- let(:example_box) { Geoblacklight::BoundingBox.new(-160, -80, 120, 70) }
12
+ let(:example_box) { described_class.new(-160, -80, 120, 70) }
13
13
  it 'creates an envelope syntax version of the bounding box' do
14
14
  expect(example_box.to_envelope).to eq 'ENVELOPE(-160, 120, 70, -80)'
15
15
  end
16
16
  end
17
17
  describe '#from_rectangle' do
18
- let(:example_box) { Geoblacklight::BoundingBox.from_rectangle('-160 -80 120 70') }
18
+ let(:example_box) { described_class.from_rectangle('-160 -80 120 70') }
19
19
  it 'parses and creates a Geoblacklight::BoundingBox from a Solr lat-lon' do
20
- expect(example_box).to be_an Geoblacklight::BoundingBox
20
+ expect(example_box).to be_an described_class
21
21
  expect(example_box.to_envelope).to eq 'ENVELOPE(-160, 120, 70, -80)'
22
22
  end
23
23
  it 'checks for valididity' do
24
- expect { Geoblacklight::BoundingBox.from_rectangle('-160 -80 120') }.to raise_error Geoblacklight::Exceptions::WrongBoundingBoxFormat
24
+ expect { described_class.from_rectangle('-160 -80 120') }.to raise_error Geoblacklight::Exceptions::WrongBoundingBoxFormat
25
25
  end
26
26
  end
27
27
  end
@@ -1 +1 @@
1
- require 'spec_helper'
1
+ require 'spec_helper'
@@ -5,7 +5,7 @@ describe Geoblacklight::DocumentPresenter do
5
5
  let(:config) { Blacklight::Configuration.new }
6
6
  subject { presenter }
7
7
  let(:presenter) do
8
- Geoblacklight::DocumentPresenter.new(document, request_context, config)
8
+ described_class.new(document, request_context, config)
9
9
  end
10
10
 
11
11
  let(:document) do
@@ -2,16 +2,16 @@ require 'spec_helper'
2
2
 
3
3
  describe Geoblacklight::GeojsonDownload do
4
4
  let(:document) { SolrDocument.new(layer_slug_s: 'test', solr_wfs_url: 'http://www.example.com/wfs', layer_id_s: 'stanford-test', solr_geom: 'ENVELOPE(-180, 180, 90, -90)') }
5
- let(:download) { Geoblacklight::GeojsonDownload.new(document) }
5
+ let(:download) { described_class.new(document) }
6
6
  describe '#initialize' do
7
- it 'should initialize as a GeojsonDownload object with specific options' do
8
- expect(download).to be_an Geoblacklight::GeojsonDownload
7
+ it 'initializes as a GeojsonDownload object with specific options' do
8
+ expect(download).to be_an described_class
9
9
  options = download.instance_variable_get(:@options)
10
10
  expect(options[:content_type]).to eq 'application/json'
11
11
  expect(options[:request_params][:typeName]).to eq 'stanford-test'
12
12
  end
13
- it 'should merge custom options' do
14
- download = Geoblacklight::GeojsonDownload.new(document, timeout: 33)
13
+ it 'merges custom options' do
14
+ download = described_class.new(document, timeout: 33)
15
15
  options = download.instance_variable_get(:@options)
16
16
  expect(options[:timeout]).to eq 33
17
17
  end
@@ -2,17 +2,17 @@ require 'spec_helper'
2
2
 
3
3
  describe Geoblacklight::GeotiffDownload do
4
4
  let(:document) { SolrDocument.new(layer_slug_s: 'test', layer_id_s: 'stanford-test', solr_geom: 'ENVELOPE(-180, 180, 90, -90)') }
5
- let(:download) { Geoblacklight::GeotiffDownload.new(document) }
5
+ let(:download) { described_class.new(document) }
6
6
  describe '#initialize' do
7
- it 'should initialize as a GeotiffDownload object with specific options' do
8
- expect(download).to be_an Geoblacklight::GeotiffDownload
7
+ it 'initializes as a GeotiffDownload object with specific options' do
8
+ expect(download).to be_an described_class
9
9
  options = download.instance_variable_get(:@options)
10
10
  expect(options[:content_type]).to eq 'image/geotiff'
11
11
  expect(options[:request_params][:layers]).to eq 'stanford-test'
12
12
  expect(options[:reflect]).to be_truthy
13
13
  end
14
- it 'should merge custom options' do
15
- download = Geoblacklight::GeotiffDownload.new(document, timeout: 33)
14
+ it 'merges custom options' do
15
+ download = described_class.new(document, timeout: 33)
16
16
  options = download.instance_variable_get(:@options)
17
17
  expect(options[:timeout]).to eq 33
18
18
  end
@@ -2,18 +2,18 @@ require 'spec_helper'
2
2
 
3
3
  describe Geoblacklight::HglDownload do
4
4
  let(:document) { SolrDocument.new(layer_slug_s: 'test', layer_id_s: 'cite:harvard-test') }
5
- let(:download) { Geoblacklight::HglDownload.new(document, 'foo@example.com') }
5
+ let(:download) { described_class.new(document, 'foo@example.com') }
6
6
  describe '#initialize' do
7
- it 'should initialize as an HglDownload object with specific options' do
8
- expect(download).to be_an Geoblacklight::HglDownload
7
+ it 'initializes as an HglDownload object with specific options' do
8
+ expect(download).to be_an described_class
9
9
  options = download.instance_variable_get(:@options)
10
10
  expect(options[:request_params]['LayerName']).to eq 'harvard-test'
11
11
  expect(options[:request_params]['UserEmail']).to eq 'foo@example.com'
12
12
  end
13
- it 'should merge custom options' do
14
- download = Geoblacklight::HglDownload.new(document, 'foo@example.com', timeout: 33)
13
+ it 'merges custom options' do
14
+ download = described_class.new(document, 'foo@example.com', timeout: 33)
15
15
  options = download.instance_variable_get(:@options)
16
16
  expect(options[:timeout]).to eq 33
17
17
  end
18
18
  end
19
- end
19
+ end
@@ -2,17 +2,17 @@ require 'spec_helper'
2
2
 
3
3
  describe Geoblacklight::KmzDownload do
4
4
  let(:document) { SolrDocument.new(layer_slug_s: 'test', solr_wfs_url: 'http://www.example.com/wfs', layer_id_s: 'stanford-test', solr_geom: 'ENVELOPE(-180, 180, 90, -90)') }
5
- let(:download) { Geoblacklight::KmzDownload.new(document) }
5
+ let(:download) { described_class.new(document) }
6
6
  describe '#initialize' do
7
- it 'should initialize as a KmzDownload object with specific options' do
8
- expect(download).to be_an Geoblacklight::KmzDownload
7
+ it 'initializes as a KmzDownload object with specific options' do
8
+ expect(download).to be_an described_class
9
9
  options = download.instance_variable_get(:@options)
10
10
  expect(options[:content_type]).to eq 'application/vnd.google-earth.kmz'
11
11
  expect(options[:request_params][:layers]).to eq 'stanford-test'
12
12
  expect(options[:request_params][:bbox]).to eq '-180, -90, 180, 90'
13
13
  end
14
- it 'should merge custom options' do
15
- download = Geoblacklight::KmzDownload.new(document, timeout: 33)
14
+ it 'merges custom options' do
15
+ download = described_class.new(document, timeout: 33)
16
16
  options = download.instance_variable_get(:@options)
17
17
  expect(options[:timeout]).to eq 33
18
18
  end
@@ -2,16 +2,16 @@ require 'spec_helper'
2
2
 
3
3
  describe Geoblacklight::ShapefileDownload do
4
4
  let(:document) { SolrDocument.new(layer_slug_s: 'test', solr_wfs_url: 'http://www.example.com/wfs', layer_id_s: 'stanford-test', solr_geom: 'ENVELOPE(-180, 180, 90, -90)') }
5
- let(:download) { Geoblacklight::ShapefileDownload.new(document) }
5
+ let(:download) { described_class.new(document) }
6
6
  describe '#initialize' do
7
- it 'should initialize as a ShapefileDownload object with specific options' do
8
- expect(download).to be_an Geoblacklight::ShapefileDownload
7
+ it 'initializes as a ShapefileDownload object with specific options' do
8
+ expect(download).to be_an described_class
9
9
  options = download.instance_variable_get(:@options)
10
10
  expect(options[:content_type]).to eq 'application/zip'
11
11
  expect(options[:request_params][:typeName]).to eq 'stanford-test'
12
12
  end
13
- it 'should merge custom options' do
14
- download = Geoblacklight::ShapefileDownload.new(document, timeout: 33)
13
+ it 'merges custom options' do
14
+ download = described_class.new(document, timeout: 33)
15
15
  options = download.instance_variable_get(:@options)
16
16
  expect(options[:timeout]).to eq 33
17
17
  end
@@ -4,45 +4,45 @@ 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(: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) }
8
8
  let(:options) { { type: 'shapefile', extension: 'zip', service_type: 'wms', content_type: 'application/zip' } }
9
9
  let(:download) { Geoblacklight::ShapefileDownload.new(document, options) }
10
10
 
11
11
  describe '#initialize' do
12
- it 'should initialize as a Download object' do
13
- expect(download).to be_an Geoblacklight::Download
12
+ it 'initializes as a Download object' do
13
+ expect(download).to be_an described_class
14
14
  end
15
15
  end
16
16
  describe '#file_name' do
17
- it 'should give the file name with path and extension' do
17
+ it 'gives the file name with path and extension' do
18
18
  expect(download.file_name).to eq 'test-shapefile.zip'
19
19
  end
20
20
  end
21
21
  describe '#file_path' do
22
- it 'should return the path with name and extension' do
22
+ it 'returns the path with name and extension' do
23
23
  expect(download.class.file_path).to eq "#{Rails.root}/tmp/cache/downloads"
24
24
  end
25
- it 'should be configurable' do
25
+ it 'is configurable' do
26
26
  expect(Settings).to receive(:DOWNLOAD_PATH).and_return('configured/path')
27
27
  expect(download.class.file_path).to eq 'configured/path'
28
28
  end
29
29
  end
30
30
  describe '#download_exists?' do
31
- it 'should return false if file does not exist' do
31
+ it 'returns false if file does not exist' do
32
32
  expect(File).to receive(:file?).and_return(false)
33
33
  expect(download.download_exists?).to be_falsey
34
34
  end
35
- it 'should return true if file does not exist' do
35
+ it 'returns true if file does not exist' do
36
36
  expect(File).to receive(:file?).and_return(true)
37
37
  expect(download.download_exists?).to be_truthy
38
38
  end
39
39
  end
40
40
  describe '#get' do
41
- it 'should return filename if download exists' do
41
+ it 'returns filename if download exists' do
42
42
  expect(download).to receive(:download_exists?).and_return(true)
43
43
  expect(download.get).to eq download.file_name
44
44
  end
45
- it 'should call create_download_file if it does not exist' do
45
+ it 'calls create_download_file if it does not exist' do
46
46
  expect(download).to receive(:download_exists?).and_return(false)
47
47
  expect(download).to receive(:initiate_download).and_return(object: 'file')
48
48
  expect(File).to receive(:open).with("#{download.file_path_and_name}.tmp", 'wb').and_return('')
@@ -51,14 +51,14 @@ describe Geoblacklight::Download do
51
51
  end
52
52
  end
53
53
  describe '#create_download_file' do
54
- it 'should create the file in fs and delete it if the content headers are not correct' do
54
+ it 'creates the file in fs and delete it if the content headers are not correct' do
55
55
  bad_file = OpenStruct.new(headers: { 'content-type' => 'bad/file' })
56
56
  expect(download).to receive(:initiate_download).and_return(bad_file)
57
57
  expect(File).to receive(:delete).with("#{download.file_path_and_name}.tmp").and_return(nil)
58
58
  expect { download.create_download_file }.to raise_error(Geoblacklight::Exceptions::ExternalDownloadFailed, 'Wrong download type')
59
59
  end
60
- it 'should create the file, write it, and then rename from tmp if everything is ok' do
61
- shapefile = OpenStruct.new(headers: {'content-type' => 'application/zip'})
60
+ it 'creates the file, write it, and then rename from tmp if everything is ok' do
61
+ shapefile = OpenStruct.new(headers: { 'content-type' => 'application/zip' })
62
62
  expect(download).to receive(:initiate_download).and_return(shapefile)
63
63
  expect(File).to receive(:open).with("#{download.file_path_and_name}.tmp", 'wb').and_return('')
64
64
  expect(File).to receive(:rename)
@@ -71,7 +71,7 @@ describe Geoblacklight::Download do
71
71
  expect(Faraday).to receive(:new).with(url: 'http://www.example.com/wms').and_return(response)
72
72
  download.initiate_download
73
73
  end
74
- it 'should raise Geoblacklight::Exceptions::ExternalDownloadFailed with a connection failure' do
74
+ it 'raises Geoblacklight::Exceptions::ExternalDownloadFailed with a connection failure' do
75
75
  expect(response).to receive(:url_prefix).and_return 'http://www.example.com/wms'
76
76
  expect(response).to receive(:get).and_raise(Faraday::Error::ConnectionFailed.new('Failed'))
77
77
  expect(Faraday).to receive(:new).with(url: 'http://www.example.com/wms').and_return(response)