blacklight_iiif_search 0.0.1.pre.alpha

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +46 -0
  3. data/app/controllers/concerns/blacklight_iiif_search/controller.rb +48 -0
  4. data/app/models/blacklight_iiif_search/iiif_search.rb +36 -0
  5. data/app/models/blacklight_iiif_search/iiif_search_annotation.rb +43 -0
  6. data/app/models/blacklight_iiif_search/iiif_search_response.rb +103 -0
  7. data/app/models/blacklight_iiif_search/iiif_suggest_response.rb +56 -0
  8. data/app/models/blacklight_iiif_search/iiif_suggest_search.rb +37 -0
  9. data/app/models/concerns/blacklight_iiif_search/annotation_behavior.rb +28 -0
  10. data/app/models/concerns/blacklight_iiif_search/ignored.rb +13 -0
  11. data/app/models/concerns/blacklight_iiif_search/search_behavior.rb +15 -0
  12. data/lib/blacklight_iiif_search.rb +14 -0
  13. data/lib/blacklight_iiif_search/engine.rb +14 -0
  14. data/lib/blacklight_iiif_search/routes.rb +12 -0
  15. data/lib/blacklight_iiif_search/version.rb +3 -0
  16. data/lib/generators/blacklight_iiif_search/controller_generator.rb +37 -0
  17. data/lib/generators/blacklight_iiif_search/install_generator.rb +52 -0
  18. data/lib/generators/blacklight_iiif_search/model_generator.rb +17 -0
  19. data/lib/generators/blacklight_iiif_search/routes_generator.rb +26 -0
  20. data/lib/generators/blacklight_iiif_search/solr_generator.rb +87 -0
  21. data/lib/generators/blacklight_iiif_search/templates/iiif_search_builder.rb +15 -0
  22. data/lib/generators/blacklight_iiif_search/templates/solr/lib/solr-tokenizing_suggester-7.x.jar +0 -0
  23. data/lib/railties/blacklight_iiif_search.rake +15 -0
  24. data/spec/controllers/catalog_controller_spec.rb +99 -0
  25. data/spec/fixtures/sample_solr_documents.yml +272 -0
  26. data/spec/iiif_search_shared.rb +49 -0
  27. data/spec/models/blacklight_iiif_search/iiif_search_annotation_spec.rb +36 -0
  28. data/spec/models/blacklight_iiif_search/iiif_search_response_spec.rb +73 -0
  29. data/spec/models/blacklight_iiif_search/iiif_search_spec.rb +23 -0
  30. data/spec/models/blacklight_iiif_search/iiif_suggest_response_spec.rb +43 -0
  31. data/spec/models/blacklight_iiif_search/iiif_suggest_search_spec.rb +36 -0
  32. data/spec/models/concerns/blacklight_iiif_search/annotation_behavior_spec.rb +31 -0
  33. data/spec/models/concerns/blacklight_iiif_search/ignored_spec.rb +10 -0
  34. data/spec/models/concerns/blacklight_iiif_search/search_behavior_spec.rb +12 -0
  35. data/spec/spec_helper.rb +26 -0
  36. data/spec/test_app_templates/lib/generators/test_app_generator.rb +13 -0
  37. metadata +238 -0
@@ -0,0 +1,49 @@
1
+ # shared variables that can be used across specs
2
+ # https://relishapp.com/rspec/rspec-core/docs/example-groups/shared-context
3
+ RSpec.shared_context 'iiif_search_shared' do
4
+ let(:parent_id) { '7s75dn48d' }
5
+ let(:page_id) { '7s75dn58n' }
6
+ let(:query_term) { 'sugar' }
7
+ let(:suggest_query_term) { 'be' }
8
+ let(:snippet) { 'Twelve pounds of <em>sugar</em>, two quarts of water' }
9
+ let(:controller) { CatalogController.new }
10
+ let(:blacklight_config) { controller.blacklight_config }
11
+ let(:search_params) do
12
+ { q: query_term, solr_document_id: parent_id, date: 'foo' }
13
+ end
14
+ let(:suggest_search_params) do
15
+ { q: suggest_query_term, solr_document_id: parent_id, date: 'foo' }
16
+ end
17
+ let(:parent_document) { controller.fetch(parent_id)[1] }
18
+ let(:page_document) { controller.fetch(page_id)[1] }
19
+ let(:repository) { Blacklight::Solr::Repository.new(blacklight_config) }
20
+
21
+ let(:iiif_search) do
22
+ BlacklightIiifSearch::IiifSearch.new(search_params,
23
+ blacklight_config.iiif_search,
24
+ parent_document)
25
+ end
26
+
27
+ let(:iiif_suggest_search) do
28
+ BlacklightIiifSearch::IiifSuggestSearch.new(suggest_search_params,
29
+ repository,
30
+ controller)
31
+ end
32
+
33
+ let(:iiif_suggest_response) do
34
+ BlacklightIiifSearch::IiifSuggestResponse.new(iiif_suggest_search.suggest_results,
35
+ suggest_search_params,
36
+ controller)
37
+ end
38
+
39
+ before do
40
+ controller.params = search_params
41
+ blacklight_config.search_builder_class = IiifSearchBuilder
42
+ controller.request = ActionDispatch::TestRequest.new(env: :test,
43
+ host: 'http://0.0.0.0')
44
+ end
45
+ end
46
+
47
+ RSpec.configure do |rspec|
48
+ rspec.include_context 'iiif_search_shared', include_shared: true
49
+ end
@@ -0,0 +1,36 @@
1
+ require 'iiif_search_shared'
2
+ RSpec.describe BlacklightIiifSearch::IiifSearchAnnotation do
3
+ include_context 'iiif_search_shared'
4
+
5
+ let(:iiif_search_annotation) do
6
+ described_class.new(page_document, query_term, 0, snippet, controller, parent_document)
7
+ end
8
+
9
+ describe 'class' do
10
+ it 'is a IiifSearchAnnotation' do
11
+ expect(iiif_search_annotation.class).to eq(described_class)
12
+ end
13
+ end
14
+
15
+ describe '#as_hash' do
16
+ subject { iiif_search_annotation.as_hash }
17
+ it 'returns the correct object' do
18
+ expect(subject.class).to eq(IIIF::Presentation::Annotation)
19
+ end
20
+ it 'has a text resource' do
21
+ expect(subject.resource.class).to eq(IIIF::Presentation::Resource)
22
+ end
23
+ it 'has an "on" property' do
24
+ expect(subject['on']).not_to be_blank
25
+ end
26
+ end
27
+
28
+ describe '#text_resource_for_annotation' do
29
+ subject { iiif_search_annotation.text_resource_for_annotation }
30
+ it 'returns the correct object' do
31
+ expect(subject.class).to eq(IIIF::Presentation::Resource)
32
+ expect(subject['chars']).to include(query_term)
33
+ expect(subject['chars']).not_to include('<em>')
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,73 @@
1
+ require 'iiif_search_shared'
2
+ RSpec.describe BlacklightIiifSearch::IiifSearchResponse do
3
+ include_context 'iiif_search_shared'
4
+
5
+ let(:solr_response) do
6
+ controller.search_results(iiif_search.solr_params).first
7
+ end
8
+ let(:iiif_search_response) do
9
+ described_class.new(solr_response, parent_document, controller)
10
+ end
11
+
12
+ describe 'class' do
13
+ it 'is a IiifSearchResponse' do
14
+ expect(iiif_search_response.class).to eq(described_class)
15
+ end
16
+ end
17
+
18
+ describe '#annotation_list' do
19
+ subject { iiif_search_response.annotation_list }
20
+
21
+ it 'returns an OrderedHash' do
22
+ expect(subject.class).to eq(IIIF::OrderedHash)
23
+ end
24
+
25
+ it 'has the correct content' do
26
+ expect(subject['@id']).not_to be_falsey
27
+ expect(subject['@type']).to eq('sc:AnnotationList')
28
+ expect(subject['resources']).not_to be_blank
29
+ expect(subject['within']).not_to be_blank
30
+ expect(subject['hits']).not_to be_blank
31
+ end
32
+
33
+ let(:hit) { subject['hits'].first }
34
+ it 'has properly formatted search:Hit' do
35
+ expect(hit[:@type]).to eq('search:Hit')
36
+ expect(hit[:annotations].first).to eq(subject['resources'].first['@id'])
37
+ end
38
+ end
39
+
40
+ describe '#resources' do
41
+ subject { iiif_search_response.resources }
42
+ it 'returns an array of IiifSearchAnnotation objects' do
43
+ expect(subject.length).to eq(2)
44
+ expect(subject.first.class).to eq(IIIF::Presentation::Annotation)
45
+ end
46
+ end
47
+
48
+ describe '#clean_params' do
49
+ subject { iiif_search_response.clean_params }
50
+ it 'returns an array of acceptable parameters' do
51
+ expect(subject).to include('q')
52
+ expect(subject).not_to include('date')
53
+ end
54
+ end
55
+
56
+ # TODO: fix ActionController::UrlGenerationError:
57
+ # No route matches {:action=>"iiif_search", :controller=>"catalog", "page"=>100, "q"=>"teachers"},
58
+ # missing required keys: [:solr_document_id]
59
+ # this method calls solr_document_iiif_search_url
60
+ # missing :solr_document_id only seems to be an issue with the spec
61
+ describe '#paged_url' do
62
+ it 'returns a solr_document URL with the page param'
63
+ # expect(iiif_search_response.paged_url(100)).to include('page=100')
64
+ end
65
+
66
+ describe '#within' do
67
+ subject { iiif_search_response.within }
68
+ it 'returns a IIIF::Presentation::Layer object' do
69
+ expect(subject.class).to eq(IIIF::Presentation::Layer)
70
+ expect(subject['ignored']).to include('date')
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,23 @@
1
+ require 'iiif_search_shared'
2
+ RSpec.describe BlacklightIiifSearch::IiifSearch do
3
+ include_context 'iiif_search_shared'
4
+
5
+ describe 'class' do
6
+ it 'is an IiifSearch' do
7
+ expect(iiif_search.class).to eq(described_class)
8
+ end
9
+ end
10
+
11
+ describe '#solr_params' do
12
+ it 'responds to #solr_params' do
13
+ expect(iiif_search).to respond_to(:solr_params)
14
+ end
15
+
16
+ it 'returns a hash of parameters' do
17
+ solr_params = iiif_search.solr_params
18
+ expect(solr_params[:q]).to eq(query_term)
19
+ expect(solr_params[:rows]).to eq(iiif_search.rows)
20
+ expect(solr_params[:f]).not_to be_nil
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,43 @@
1
+ require 'iiif_search_shared'
2
+ RSpec.describe BlacklightIiifSearch::IiifSuggestResponse do
3
+ include_context 'iiif_search_shared'
4
+
5
+ describe 'class' do
6
+ it 'is an IiifSuggestResponse' do
7
+ expect(iiif_suggest_response.class).to eq(described_class)
8
+ end
9
+ end
10
+
11
+ describe '#term_list' do
12
+ subject { iiif_suggest_response.term_list }
13
+
14
+ it 'returns the correct class' do
15
+ expect(subject.class).to eq(IIIF::OrderedHash)
16
+ end
17
+
18
+ it 'has the correct content' do
19
+ expect(subject['@id']).not_to be_falsey
20
+ expect(subject['@type']).to eq('search:TermList')
21
+ expect(subject['terms']).not_to be_blank
22
+ end
23
+ end
24
+
25
+ describe '#terms' do
26
+ subject { iiif_suggest_response.terms }
27
+
28
+ it 'returns the expected data' do
29
+ expect(subject.length).to eq(5)
30
+ expect(subject.first[:url]).not_to be_falsey
31
+ expect(subject.first[:match].match(/\A#{suggest_query_term}/)).to be_truthy
32
+ end
33
+ end
34
+
35
+ describe '#iiif_search_url' do
36
+ subject { iiif_suggest_response.iiif_search_url(suggest_query_term) }
37
+
38
+ it 'returns a search url' do
39
+ expect(subject).to include(parent_id)
40
+ expect(subject).to include(suggest_query_term)
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,36 @@
1
+ require 'iiif_search_shared'
2
+ RSpec.describe BlacklightIiifSearch::IiifSuggestSearch do
3
+ include_context 'iiif_search_shared'
4
+
5
+ describe 'class' do
6
+ it 'is an IiifSuggestSearch' do
7
+ expect(iiif_suggest_search.class).to eq(described_class)
8
+ end
9
+ end
10
+
11
+ describe '#response' do
12
+ subject { iiif_suggest_search.response }
13
+
14
+ it 'returns the correct class' do
15
+ expect(subject.class).to eq(IIIF::OrderedHash)
16
+ end
17
+
18
+ it 'returns the expected data' do
19
+ expect(subject['terms'].length).to eq(5)
20
+ end
21
+ end
22
+
23
+ describe '#suggest_results' do
24
+ subject { iiif_suggest_search.suggest_results }
25
+
26
+ it 'returns the correct class' do
27
+ expect(subject.class).to eq(RSolr::HashWithResponse)
28
+ end
29
+
30
+ it 'returns the expected data' do
31
+ terms = subject['suggest'][blacklight_config.iiif_search[:suggester_name]][suggest_query_term]['suggestions']
32
+ expect(terms.length).to eq(5)
33
+ expect(terms.first['term'].match(/\A#{suggest_query_term}/)).to be_truthy
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,31 @@
1
+ require 'iiif_search_shared'
2
+ RSpec.describe BlacklightIiifSearch::AnnotationBehavior do
3
+ include_context 'iiif_search_shared'
4
+
5
+ let(:iiif_search_annotation) do
6
+ BlacklightIiifSearch::IiifSearchAnnotation.new(page_document, query_term,
7
+ 0, snippet, controller,
8
+ parent_document)
9
+ end
10
+
11
+ describe '#annotation_id' do
12
+ subject { iiif_search_annotation.annotation_id }
13
+ it 'returns a properly formatted URL' do
14
+ expect(subject).to include("#{parent_id}/canvas/#{page_id}/annotation/0")
15
+ end
16
+ end
17
+
18
+ describe '#canvas_uri_for_annotation' do
19
+ subject { iiif_search_annotation.canvas_uri_for_annotation }
20
+ it 'returns a properly formatted URL' do
21
+ expect(subject).to include("#{parent_id}/canvas/#{page_id}")
22
+ end
23
+ end
24
+
25
+ describe '#coordinates' do
26
+ subject { iiif_search_annotation.coordinates }
27
+ it 'returns a coordinate string' do
28
+ expect(subject).to eq('#xywh=0,0,0,0')
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,10 @@
1
+ require 'iiif_search_shared'
2
+ RSpec.describe BlacklightIiifSearch::Ignored do
3
+ include_context 'iiif_search_shared'
4
+
5
+ describe '#ignored' do
6
+ it 'returns an array of ignored parameters' do
7
+ expect(iiif_suggest_response.ignored).to include('date')
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ require 'iiif_search_shared'
2
+ RSpec.describe BlacklightIiifSearch::SearchBehavior do
3
+ include_context 'iiif_search_shared'
4
+
5
+ describe '#object_relation_solr_params' do
6
+ subject { iiif_search.object_relation_solr_params }
7
+ it 'returns a hash with the correct content' do
8
+ expect(subject.keys.first).to eq('is_page_of_s')
9
+ expect(subject.values.first).to eq(parent_id)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,26 @@
1
+ # testing environent:
2
+ ENV['RAILS_ENV'] ||= 'test'
3
+
4
+ require 'coveralls'
5
+ Coveralls.wear!
6
+
7
+ # engine_cart:
8
+ require 'bundler/setup'
9
+ require 'engine_cart'
10
+ EngineCart.load_application!
11
+
12
+ require 'rspec/rails'
13
+
14
+ RSpec.configure do |config|
15
+ config.infer_spec_type_from_file_location!
16
+
17
+ config.expect_with :rspec do |expectations|
18
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
19
+ end
20
+
21
+ config.mock_with :rspec do |mocks|
22
+ mocks.verify_partial_doubles = true
23
+ end
24
+
25
+ config.shared_context_metadata_behavior = :apply_to_host_groups
26
+ end
@@ -0,0 +1,13 @@
1
+ require 'rails/generators'
2
+
3
+ class TestAppGenerator < Rails::Generators::Base
4
+ source_root './spec/test_app_templates'
5
+
6
+ # if you need to generate any additional configuration
7
+ # into the test app, this generator will be run immediately
8
+ # after setting up the application
9
+
10
+ def install_engine
11
+ generate 'blacklight_iiif_search:install'
12
+ end
13
+ end
metadata ADDED
@@ -0,0 +1,238 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: blacklight_iiif_search
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.pre.alpha
5
+ platform: ruby
6
+ authors:
7
+ - Eben English
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-07-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '4.2'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '6'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '4.2'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '6'
33
+ - !ruby/object:Gem::Dependency
34
+ name: blacklight
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '6.0'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '6.0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: iiif-presentation
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rspec-rails
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '3.0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: solr_wrapper
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '2.0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '2.0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: engine_cart
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: byebug
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: rubocop
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: 0.50.0
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: 0.50.0
131
+ - !ruby/object:Gem::Dependency
132
+ name: rubocop-rspec
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: 1.18.0
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: 1.18.0
145
+ - !ruby/object:Gem::Dependency
146
+ name: bixby
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ description: Blacklight IIIF Search plugin
160
+ email:
161
+ - eenglish@bpl.org
162
+ executables: []
163
+ extensions: []
164
+ extra_rdoc_files: []
165
+ files:
166
+ - Rakefile
167
+ - app/controllers/concerns/blacklight_iiif_search/controller.rb
168
+ - app/models/blacklight_iiif_search/iiif_search.rb
169
+ - app/models/blacklight_iiif_search/iiif_search_annotation.rb
170
+ - app/models/blacklight_iiif_search/iiif_search_response.rb
171
+ - app/models/blacklight_iiif_search/iiif_suggest_response.rb
172
+ - app/models/blacklight_iiif_search/iiif_suggest_search.rb
173
+ - app/models/concerns/blacklight_iiif_search/annotation_behavior.rb
174
+ - app/models/concerns/blacklight_iiif_search/ignored.rb
175
+ - app/models/concerns/blacklight_iiif_search/search_behavior.rb
176
+ - lib/blacklight_iiif_search.rb
177
+ - lib/blacklight_iiif_search/engine.rb
178
+ - lib/blacklight_iiif_search/routes.rb
179
+ - lib/blacklight_iiif_search/version.rb
180
+ - lib/generators/blacklight_iiif_search/controller_generator.rb
181
+ - lib/generators/blacklight_iiif_search/install_generator.rb
182
+ - lib/generators/blacklight_iiif_search/model_generator.rb
183
+ - lib/generators/blacklight_iiif_search/routes_generator.rb
184
+ - lib/generators/blacklight_iiif_search/solr_generator.rb
185
+ - lib/generators/blacklight_iiif_search/templates/iiif_search_builder.rb
186
+ - lib/generators/blacklight_iiif_search/templates/solr/lib/solr-tokenizing_suggester-7.x.jar
187
+ - lib/railties/blacklight_iiif_search.rake
188
+ - spec/controllers/catalog_controller_spec.rb
189
+ - spec/fixtures/sample_solr_documents.yml
190
+ - spec/iiif_search_shared.rb
191
+ - spec/models/blacklight_iiif_search/iiif_search_annotation_spec.rb
192
+ - spec/models/blacklight_iiif_search/iiif_search_response_spec.rb
193
+ - spec/models/blacklight_iiif_search/iiif_search_spec.rb
194
+ - spec/models/blacklight_iiif_search/iiif_suggest_response_spec.rb
195
+ - spec/models/blacklight_iiif_search/iiif_suggest_search_spec.rb
196
+ - spec/models/concerns/blacklight_iiif_search/annotation_behavior_spec.rb
197
+ - spec/models/concerns/blacklight_iiif_search/ignored_spec.rb
198
+ - spec/models/concerns/blacklight_iiif_search/search_behavior_spec.rb
199
+ - spec/spec_helper.rb
200
+ - spec/test_app_templates/lib/generators/test_app_generator.rb
201
+ homepage: http://projectblacklight.org/
202
+ licenses:
203
+ - Apache-2.0
204
+ metadata: {}
205
+ post_install_message:
206
+ rdoc_options: []
207
+ require_paths:
208
+ - lib
209
+ required_ruby_version: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ required_rubygems_version: !ruby/object:Gem::Requirement
215
+ requirements:
216
+ - - ">"
217
+ - !ruby/object:Gem::Version
218
+ version: 1.3.1
219
+ requirements: []
220
+ rubyforge_project:
221
+ rubygems_version: 2.6.12
222
+ signing_key:
223
+ specification_version: 4
224
+ summary: Blacklight IIIF Search plugin
225
+ test_files:
226
+ - spec/iiif_search_shared.rb
227
+ - spec/models/blacklight_iiif_search/iiif_suggest_response_spec.rb
228
+ - spec/models/blacklight_iiif_search/iiif_search_spec.rb
229
+ - spec/models/blacklight_iiif_search/iiif_search_response_spec.rb
230
+ - spec/models/blacklight_iiif_search/iiif_suggest_search_spec.rb
231
+ - spec/models/blacklight_iiif_search/iiif_search_annotation_spec.rb
232
+ - spec/models/concerns/blacklight_iiif_search/ignored_spec.rb
233
+ - spec/models/concerns/blacklight_iiif_search/search_behavior_spec.rb
234
+ - spec/models/concerns/blacklight_iiif_search/annotation_behavior_spec.rb
235
+ - spec/spec_helper.rb
236
+ - spec/fixtures/sample_solr_documents.yml
237
+ - spec/test_app_templates/lib/generators/test_app_generator.rb
238
+ - spec/controllers/catalog_controller_spec.rb