blacklight-maps 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +5 -1
- data/Gemfile +10 -2
- data/README.md +19 -9
- data/app/assets/javascripts/blacklight-maps/blacklight-maps-browse.js +129 -118
- data/app/helpers/blacklight_maps_helper.rb +22 -32
- data/app/views/catalog/_document_maps.html.erb +3 -3
- data/lib/blacklight/maps.rb +2 -0
- data/lib/blacklight/maps/engine.rb +5 -4
- data/lib/blacklight/maps/export.rb +111 -0
- data/lib/blacklight/maps/geometry.rb +35 -0
- data/lib/blacklight/maps/version.rb +1 -1
- data/solr_conf/conf/schema.xml +50 -41
- data/solr_conf/conf/solrconfig.xml +40 -40
- data/spec/features/maps_spec.rb +76 -47
- data/spec/fixtures/sample_solr_documents.yml +39 -21
- data/spec/helpers/blacklight_maps_helper_spec.rb +48 -14
- data/spec/lib/blacklight/maps/export_spec.rb +69 -0
- data/spec/lib/blacklight/maps/geometry_spec.rb +19 -0
- data/spec/spec_helper.rb +1 -1
- metadata +8 -2
@@ -1,28 +1,62 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
4
|
describe BlacklightMapsHelper do
|
4
|
-
include ERB::Util
|
5
|
-
include BlacklightMapsHelper
|
6
5
|
|
7
6
|
let(:blacklight_config) { Blacklight::Configuration.new }
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
|
8
|
+
def create_response
|
9
|
+
raw_response = eval(mock_query_response)
|
10
|
+
Blacklight::SolrResponse.new(raw_response, raw_response['params'])
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:r) { create_response }
|
14
|
+
|
15
|
+
before :each do
|
16
|
+
CatalogController.blacklight_config = Blacklight::Configuration.new
|
17
|
+
CatalogController.configure_blacklight do |config|
|
18
|
+
config.view.maps.type = 'placename_coord'
|
19
|
+
|
20
|
+
# These fields also need to be added for some reason for the tests to pass
|
21
|
+
# Link in list is not being generated correctly if not passed
|
22
|
+
config.index.title_field = 'title_display'
|
12
23
|
end
|
24
|
+
helper.stub(blacklight_config: blacklight_config)
|
25
|
+
helper.instance_variable_set(:@response, r)
|
26
|
+
@request = ActionDispatch::TestRequest.new
|
27
|
+
@catalog = CatalogController.new
|
28
|
+
@catalog.request = @request
|
29
|
+
helper.instance_variable_set(:@_controller, @catalog)
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "#blacklight_map_tag" do
|
13
33
|
|
14
|
-
|
15
|
-
|
34
|
+
context "with default values" do
|
35
|
+
subject { helper.blacklight_map_tag('blacklight-map') }
|
36
|
+
it { should have_selector "div#blacklight-map" }
|
37
|
+
it { should have_selector "div[data-maxzoom='8'][data-tileurl='http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'][data-mapattribution='Map data © <a href=\"http://openstreetmap.org\">OpenStreetMap</a> contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>']" }
|
16
38
|
end
|
17
39
|
|
18
|
-
|
19
|
-
|
40
|
+
context "with custom values" do
|
41
|
+
subject { helper.blacklight_map_tag('blacklight-map', data: {maxzoom: 6, tileurl: 'http://example.com/', mapattribution: 'hello world' }) }
|
42
|
+
it { should have_selector "div[data-maxzoom='6'][data-tileurl='http://example.com/'][data-mapattribution='hello world']" }
|
20
43
|
end
|
21
44
|
|
45
|
+
context "when a block is provided" do
|
46
|
+
subject { helper.blacklight_map_tag('foo') { content_tag(:span, 'bar') } }
|
47
|
+
it { should have_selector('div > span', text: 'bar') }
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "serialize_geojson" do
|
53
|
+
it "should return geojson of documents" do
|
54
|
+
expect(helper.serialize_geojson).to include('{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point"')
|
55
|
+
end
|
22
56
|
end
|
23
57
|
|
24
|
-
|
25
|
-
|
26
|
-
|
58
|
+
def mock_query_response
|
59
|
+
%({"responseHeader"=>{"status"=>0, "QTime"=>14, "params"=>{"q"=>"tibet", "spellcheck.q"=>"tibet", "qt"=>"search", "wt"=>"ruby", "rows"=>"10"}}, "response"=>{"numFound"=>2, "start"=>0, "maxScore"=>0.016135123, "docs"=>[{"published_display"=>["Dharamsala, H.P."], "author_display"=>"Thub-bstan-yar-ʼphel, Rnam-grwa", "lc_callnum_display"=>["DS785 .T475 2005"], "pub_date"=>["2005"], "format"=>"Book", "material_type_display"=>["a-e, iv, ii, 407 p."], "title_display"=>"Bod gaṅs can gyi rgyal rabs mdor bsdus dris lan brgya pa rab gsal śel gyi me loṅ źes bya ba bźugs so", "id"=>"2008308202", "subject_geo_facet"=>["Tibet (China)"], "language_facet"=>["Tibetan"], "placename_coords"=>["Tibet (China)-|-29.646923-|-91.117212"], "place_bbox"=>"78.3955448 26.8548157 99.116241 36.4833345", "score"=>0.016135123}, {"published_display"=>["Dharamsala, Distt. Kangra, H.P."], "pub_date"=>["2007"], "format"=>"Book", "title_display"=>"Ses yon", "material_type_display"=>["xii, 419 p."], "id"=>"2008308478", "subject_geo_facet"=>["China", "Tibet", "India"], "subject_topic_facet"=>["Education and state", "Tibetans", "Tibetan language", "Teaching"], "language_facet"=>["Tibetan"], "placename_coords"=>["China-|-35.86166-|-104.195397", "Tibet-|-29.646923-|-91.117212", "India-|-20.593684-|-78.96288"], "place_bbox"=>"68.162386 6.7535159 97.395555 35.5044752", "score"=>0.0026767207}]}, "facet_counts"=>{"facet_queries"=>{}, "facet_fields"=>{"format"=>["Book", 2], "lc_1letter_facet"=>["D - World History", 1], "lc_alpha_facet"=>["DS", 1], "lc_b4cutter_facet"=>["DS785", 1], "language_facet"=>["Tibetan", 2], "pub_date"=>["2005", 1, "2007", 1], "subject_era_facet"=>[], "subject_geo_facet"=>["China", 1, "India", 1, "Tibet", 1, "Tibet (China)", 1], "subject_topic_facet"=>["Education and state", 1, "Teaching", 1, "Tibetan language", 1, "Tibetans", 1]}, "facet_dates"=>{}, "facet_ranges"=>{}}, "spellcheck"=>{"suggestions"=>["tibet", {"numFound"=>1, "startOffset"=>0, "endOffset"=>5, "origFreq"=>2, "suggestion"=>[{"word"=>"tibetan", "freq"=>6}]}, "correctlySpelled", true]}})
|
60
|
+
end
|
27
61
|
|
28
|
-
end
|
62
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "BlacklightMaps::GeojsonExport" do
|
4
|
+
|
5
|
+
before do
|
6
|
+
CatalogController.blacklight_config = Blacklight::Configuration.new
|
7
|
+
CatalogController.configure_blacklight do |config|
|
8
|
+
config.view.maps.type = 'placename_coord'
|
9
|
+
|
10
|
+
# These fields also need to be added for some reason for the tests to pass
|
11
|
+
# Link in list is not being generated correctly if not passed
|
12
|
+
config.index.title_field = 'title_display'
|
13
|
+
end
|
14
|
+
@controller = CatalogController.new
|
15
|
+
@request = ActionDispatch::TestRequest.new
|
16
|
+
@controller.request = @request
|
17
|
+
@response = ActionDispatch::TestResponse.new
|
18
|
+
@response.stub(:docs) {[{ "published_display"=>["Dharamsala, Distt. Kangra, H.P."], "pub_date"=>["2007"], "format"=>"Book", "title_display"=>"Ses yon", "material_type_display"=>["xii, 419 p."], "id"=>"2008308478", "subject_geo_facet"=>["China", "Tibet", "India"], "subject_topic_facet"=>["Education and state", "Tibetans", "Tibetan language", "Teaching"], "language_facet"=>["Tibetan"], "placename_coords"=>["China-|-35.86166-|-104.195397", "Tibet-|-29.646923-|-91.117212", "India-|-20.593684-|-78.96288"], "place_bbox"=>["68.162386 6.7535159 97.395555 35.5044752"], "score"=>0.0026767207 }]}
|
19
|
+
end
|
20
|
+
|
21
|
+
subject {BlacklightMaps::GeojsonExport.new(@controller, @response.docs)}
|
22
|
+
|
23
|
+
it "should instantiate GeojsonExport" do
|
24
|
+
expect(subject.class).to eq(::BlacklightMaps::GeojsonExport)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should return maps config" do
|
28
|
+
expect(subject.send(:blacklight_maps_config).class).to eq(::Blacklight::Configuration::ViewConfig)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should return type" do
|
32
|
+
expect(subject.send(:type)).to eq('placename_coord')
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should return placename field" do
|
36
|
+
expect(subject.send(:placename_coord_field)).to eq('placename_coords')
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should return placename delimiter" do
|
40
|
+
expect(subject.send(:placename_coord_delimiter)).to eq('-|-')
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should return bbox field" do
|
44
|
+
expect(subject.send(:bbox_field)).to eq('place_bbox')
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should return point feature with no properties" do
|
48
|
+
expect(subject.send(:build_point_feature, 100, -50)).to eq({:type=>"Feature", :geometry=>{:type=>"Point", :coordinates=>[100.0, -50.0]}, :properties=>{}})
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should return point feature with properties" do
|
52
|
+
expect(subject.send(:build_point_feature, 100, -50, { name: 'Jane Smith' })[:properties]).to have_key(:name)
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should build bbox correct features" do
|
56
|
+
expect(subject.send(:build_bbox_features).length).to eq(1)
|
57
|
+
expect(subject.send(:build_bbox_features)[0][:geometry][:type]).to eq('Point')
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should render correct sidebar div" do
|
61
|
+
expect(subject.send(:render_leaflet_sidebar_partial, @response.docs[0])).to include('href="/catalog/2008308478">')
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should render feature collection as json" do
|
65
|
+
expect(subject.to_geojson).to include('{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point"')
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "BlacklightMaps::Geometry::BoundingBox" do
|
4
|
+
|
5
|
+
let(:bbox) { BlacklightMaps::Geometry::BoundingBox.from_lon_lat_string('-100 -50 100 50') }
|
6
|
+
let(:bbox_california) { BlacklightMaps::Geometry::BoundingBox.from_lon_lat_string('-124.4096196 32.5342321 -114.131211 42.0095169') }
|
7
|
+
|
8
|
+
it "should instantiate Geometry::BoundingBox" do
|
9
|
+
expect(bbox.class).to eq(::BlacklightMaps::Geometry::BoundingBox)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should return center of simple bounding box" do
|
13
|
+
expect(bbox.find_center).to eq([0.0, 0.0])
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should return center of California bounding box" do
|
17
|
+
expect(bbox_california.find_center).to eq([-119.2704153, 37.271874499999996])
|
18
|
+
end
|
19
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blacklight-maps
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Beer
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-03-
|
12
|
+
date: 2014-03-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -222,6 +222,8 @@ files:
|
|
222
222
|
- docs/map-view.png
|
223
223
|
- lib/blacklight/maps.rb
|
224
224
|
- lib/blacklight/maps/engine.rb
|
225
|
+
- lib/blacklight/maps/export.rb
|
226
|
+
- lib/blacklight/maps/geometry.rb
|
225
227
|
- lib/blacklight/maps/version.rb
|
226
228
|
- lib/generators/blacklight_maps/install_generator.rb
|
227
229
|
- lib/generators/blacklight_maps/templates/blacklight_maps.css.scss
|
@@ -231,6 +233,8 @@ files:
|
|
231
233
|
- spec/features/maps_spec.rb
|
232
234
|
- spec/fixtures/sample_solr_documents.yml
|
233
235
|
- spec/helpers/blacklight_maps_helper_spec.rb
|
236
|
+
- spec/lib/blacklight/maps/export_spec.rb
|
237
|
+
- spec/lib/blacklight/maps/geometry_spec.rb
|
234
238
|
- spec/spec_helper.rb
|
235
239
|
- spec/test_app_templates/Gemfile.extra
|
236
240
|
- spec/test_app_templates/lib/generators/test_app_generator.rb
|
@@ -262,6 +266,8 @@ test_files:
|
|
262
266
|
- spec/features/maps_spec.rb
|
263
267
|
- spec/fixtures/sample_solr_documents.yml
|
264
268
|
- spec/helpers/blacklight_maps_helper_spec.rb
|
269
|
+
- spec/lib/blacklight/maps/export_spec.rb
|
270
|
+
- spec/lib/blacklight/maps/geometry_spec.rb
|
265
271
|
- spec/spec_helper.rb
|
266
272
|
- spec/test_app_templates/Gemfile.extra
|
267
273
|
- spec/test_app_templates/lib/generators/test_app_generator.rb
|