blacklight_oai_provider 6.0.0 → 7.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -19,7 +19,7 @@ describe CatalogController do
19
19
  it 'returns correct provider configuration' do
20
20
  expect(controller.oai_config).to include(
21
21
  provider: {
22
- repository_name: "Test Repository",
22
+ repository_name: "Catalog Repository",
23
23
  repository_url: "http://localhost/catalog/oai",
24
24
  record_prefix: "oai:test",
25
25
  admin_email: "root@localhost",
@@ -29,7 +29,7 @@ describe CatalogController do
29
29
  )
30
30
  end
31
31
 
32
- it 'return corrext document configuration' do
32
+ it 'return correct document configuration' do
33
33
  expect(controller.oai_config[:document][:limit]).to be 25
34
34
  end
35
35
  end
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe BlacklightOaiProvider::SolrDocumentWrapper do
4
+ subject(:wrapper) { described_class.new(controller, options) }
5
+
6
+ let(:options) { {} }
7
+ let(:controller_class) { CatalogController }
8
+ let(:controller) { controller_class.new }
9
+
10
+ before do
11
+ allow(controller).to receive(:params).and_return({})
12
+ end
13
+
14
+ describe '#earliest' do
15
+ it 'returns the earliest timestamp of all the records' do
16
+ expect(wrapper.earliest).to eq Time.parse('2014-02-03 18:42:53.056000000 +0000').utc
17
+ end
18
+ end
19
+
20
+ describe '#latest' do
21
+ it 'returns the latest timestamp of all the records' do
22
+ expect(wrapper.latest).to eq Time.parse('2015-02-03 18:42:53.056000000 +0000').utc
23
+ end
24
+ end
25
+
26
+ describe '#find' do
27
+ context 'when selector is :all' do
28
+ it 'returns a limited list of all records' do
29
+ expect(wrapper.find(:all)).to be_a OAI::Provider::PartialResult
30
+ expect(wrapper.find(:all).records.size).to be 15
31
+ end
32
+ end
33
+
34
+ context 'when selector is an individual record' do
35
+ let(:search_builder_class) do
36
+ Class.new(Blacklight::SearchBuilder) do
37
+ include Blacklight::Solr::SearchBuilderBehavior
38
+ self.default_processor_chain += [:only_visible]
39
+
40
+ def only_visible(solr_parameters)
41
+ solr_parameters[:fq] ||= []
42
+ solr_parameters[:fq] << 'visibility_si:"open"'
43
+ end
44
+ end
45
+ end
46
+ let(:controller_class) do
47
+ stub_const 'VisibilitySearchBuilder', search_builder_class
48
+ Class.new(CatalogController) do
49
+ blacklight_config.configure do |config|
50
+ config.search_builder_class = VisibilitySearchBuilder
51
+ end
52
+ end
53
+ end
54
+
55
+ it 'returns nothing for a restricted work' do
56
+ expect(wrapper.find('2007020969')).to be_nil
57
+ end
58
+
59
+ it 'returns a single record for a public work' do
60
+ expect(wrapper.find('2005553155')).to be_a SolrDocument
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe BlacklightOaiProvider::SolrDocumentProvider do
4
+ subject(:provider) { described_class.new(controller, options) }
5
+
6
+ let(:options) { {} }
7
+ let(:controller) { CatalogController.new }
8
+
9
+ describe '#initialize' do
10
+ let(:view_context) { instance_double("ViewContext") }
11
+
12
+ before do
13
+ allow(controller).to receive(:view_context).and_return(view_context)
14
+ allow(view_context).to receive(:oai_catalog_url).and_return(:some_path)
15
+ allow(view_context).to receive(:application_name).and_return(:some_name)
16
+ end
17
+
18
+ context 'with no options provided' do
19
+ it 'sets the default repository name and url' do
20
+ expect(provider.url).to eq :some_path
21
+ expect(provider.name).to eq :some_name
22
+ end
23
+ end
24
+
25
+ context 'with options provided' do
26
+ let(:options) { { provider: { repository_url: '/my/custom/path', repository_name: 'My Custom Name' } } }
27
+
28
+ it 'uses the repository name and url set into the options' do
29
+ expect(provider.url).to eq '/my/custom/path'
30
+ expect(provider.name).to eq 'My Custom Name'
31
+ end
32
+ end
33
+
34
+ context 'with Procs provided as option values' do
35
+ let(:alternate_controller) { AlternateController.new }
36
+ let(:alternate_provider) { described_class.new(alternate_controller, options) }
37
+ let(:alternate_view_context) { instance_double("ViewContext") }
38
+ let(:options) do
39
+ {
40
+ provider: {
41
+ repository_name: ->(kontroller) { "Hello #{kontroller.controller_name.titleize}" },
42
+ repository_url: ->(kontroller) { "Hello #{kontroller.view_context.send "oai_#{kontroller.controller_name}_url"}" }
43
+ }
44
+ }
45
+ end
46
+
47
+ before do
48
+ allow(alternate_controller).to receive(:view_context).and_return(alternate_view_context)
49
+ allow(alternate_view_context).to receive(:oai_alternate_url).and_return(:another_path)
50
+ allow(alternate_view_context).to receive(:application_name).and_return(:another_name)
51
+ end
52
+
53
+ it 'call()-s the Proc to set the option value' do
54
+ expect(provider.name).to eq "Hello Catalog"
55
+ expect(provider.url).to eq "Hello #{controller.view_context.oai_catalog_url}"
56
+ end
57
+
58
+ it 'does not pollute controller configurations from procs' do
59
+ provider.name
60
+ expect(alternate_provider.name).to eq "Hello Alternate"
61
+ expect(provider.name).to eq "Hello Catalog"
62
+ end
63
+ end
64
+ end
65
+ end
@@ -4,10 +4,12 @@ RSpec.describe BlacklightOaiProvider::SolrDocumentWrapper do
4
4
  subject(:wrapper) { described_class.new(controller, options) }
5
5
 
6
6
  let(:options) { {} }
7
- let(:controller) { CatalogController.new }
7
+ let(:controller_class) { CatalogController }
8
+ let(:controller) { instance_double(CatalogController) }
9
+ let(:blacklight_config) { Blacklight::Configuration.new }
8
10
 
9
11
  before do
10
- allow(controller).to receive(:params).and_return({})
12
+ allow(controller).to receive_messages(params: {}, blacklight_config: blacklight_config)
11
13
  end
12
14
 
13
15
  describe '#initialize' do
@@ -30,29 +32,224 @@ RSpec.describe BlacklightOaiProvider::SolrDocumentWrapper do
30
32
  end
31
33
  end
32
34
 
35
+ shared_context "timestamp_searches" do
36
+ let(:expected_timestamp) { '2014-02-03 18:42:53.056000000 +0000' }
37
+ let(:repository) { instance_double(Blacklight::Solr::Repository) }
38
+ let(:search_builder) { instance_double(Blacklight::SearchBuilder) }
39
+ let(:search_service) { instance_double(Blacklight::SearchService) }
40
+ let(:documents) { [SolrDocument.new('timestamp' => expected_timestamp)] }
41
+ let(:response) { OpenStruct.new(documents: documents, total: documents.length) }
42
+
43
+ before do
44
+ allow(controller).to receive(:search_service).and_return(search_service)
45
+ allow(search_service).to receive_messages(repository: repository, search_builder: search_builder)
46
+ allow(repository).to receive(:search).with(search_builder).and_return(response)
47
+ end
48
+ end
49
+
33
50
  describe '#earliest' do
51
+ include_context "timestamp_searches"
52
+
53
+ before do
54
+ allow(search_builder).to receive(:merge).with(hash_including(sort: "timestamp asc")).and_return(search_builder)
55
+ end
56
+
34
57
  it 'returns the earliest timestamp of all the records' do
35
- expect(wrapper.earliest).to eq Time.parse('2014-02-03 18:42:53.056000000 +0000').utc
58
+ expect(wrapper.earliest).to eq Time.parse(expected_timestamp).utc
59
+ end
60
+
61
+ context "no documents are returned" do
62
+ let(:documents) { [] }
63
+
64
+ it 'returns a default timestamp' do
65
+ expect(Time.parse(wrapper.earliest).utc).to be_a Time
66
+ end
36
67
  end
37
68
  end
38
69
 
39
70
  describe '#latest' do
71
+ include_context "timestamp_searches"
72
+
73
+ before do
74
+ allow(search_builder).to receive(:merge).with(hash_including(sort: "timestamp desc")).and_return(search_builder)
75
+ end
76
+
40
77
  it 'returns the latest timestamp of all the records' do
41
- expect(wrapper.latest).to eq Time.parse('2014-03-03 18:42:53.056000000 +0000').utc
78
+ expect(wrapper.latest).to eq Time.parse(expected_timestamp).utc
79
+ end
80
+
81
+ context "no documents are returned" do
82
+ let(:documents) { [] }
83
+
84
+ it 'returns a default timestamp' do
85
+ expect(Time.parse(wrapper.latest).utc).to be_a Time
86
+ end
42
87
  end
43
88
  end
44
89
 
45
90
  describe '#find' do
91
+ include_context "timestamp_searches"
92
+
93
+ subject(:result) { wrapper.find(selector) }
94
+
46
95
  context 'when selector is :all' do
96
+ let(:selector) { :all }
97
+ let(:query) { {} }
98
+ let(:limit) { 1 }
99
+ let(:options) { { limit: limit } }
100
+ let(:response) { OpenStruct.new(documents: documents, total: limit + 1) }
101
+ let(:next_response) { OpenStruct.new(documents: documents, total: documents.length) }
102
+
103
+ before do
104
+ allow(search_builder).to receive_messages(merge: search_builder, query: query)
105
+ allow(repository).to receive(:search).with(query).and_return(response)
106
+ allow(repository).to receive(:search).with(hash_including(start: 0)).and_return(next_response)
107
+ end
108
+
47
109
  it 'returns a limited list of all records' do
48
- expect(wrapper.find(:all)).to be_a OAI::Provider::PartialResult
49
- expect(wrapper.find(:all).records.size).to be 15
110
+ expect(result).to be_a OAI::Provider::PartialResult
111
+ expect(result.records.size).to be limit
50
112
  end
51
113
  end
52
114
 
53
- context 'when selector is an individual record' do
54
- it 'returns a single record' do
55
- expect(wrapper.find('2005553155')).to be_a SolrDocument
115
+ context 'when selector is an id value' do
116
+ let(:selector) { '2007020969' }
117
+ let(:query) { {} }
118
+
119
+ before do
120
+ allow(search_builder).to receive(:query).and_return(query)
121
+ allow(repository).to receive(:search).with(query).and_return(response)
122
+ allow(search_builder).to receive(:where).with(id: selector).and_return(search_builder)
123
+ end
124
+
125
+ it 'searches by id' do
126
+ expect(result).to be_a(SolrDocument)
127
+ expect(search_builder).to have_received(:where).with(id: selector)
128
+ end
129
+ end
130
+ end
131
+
132
+ describe '#conditions' do
133
+ include_context "timestamp_searches"
134
+
135
+ subject(:result) { wrapper.conditions(constraints) }
136
+
137
+ let(:search_builder_class) do
138
+ Class.new(Blacklight::SearchBuilder) do
139
+ include Blacklight::Solr::SearchBuilderBehavior
140
+ end
141
+ end
142
+ let(:search_builder) { search_builder_class.new(controller) }
143
+
144
+ context 'time options' do
145
+ let(:constraints) { { from: Time.utc(2015, 1, 1), until: Time.utc(2015, 1, 2) } }
146
+
147
+ it 'sets options when from' do
148
+ constraints.delete(:until)
149
+ expect(result).to include(
150
+ "fq" => ["timestamp:[2015-01-01T00:00:00Z TO *]"],
151
+ "sort" => "timestamp asc"
152
+ )
153
+ end
154
+
155
+ it 'sets options when until' do
156
+ constraints.delete(:from)
157
+ expect(result).to include(
158
+ "fq" => ["timestamp:[* TO 2015-01-02T00:00:00.999Z]"],
159
+ "sort" => "timestamp asc"
160
+ )
161
+ end
162
+
163
+ it 'sets options when range' do
164
+ expect(result).to include(
165
+ "fq" => ["timestamp:[2015-01-01T00:00:00Z TO 2015-01-02T00:00:00.999Z]"],
166
+ "sort" => "timestamp asc"
167
+ )
168
+ end
169
+ end
170
+
171
+ context 'date options' do
172
+ let(:constraints) { { from: Date.parse('2015-01-01'), until: Date.parse('2015-01-02') } }
173
+
174
+ it 'sets options for high granularity' do
175
+ expect(result).to include(
176
+ "fq" => ["timestamp:[2015-01-01T00:00:00Z TO 2015-01-02T23:59:59.999Z]"],
177
+ "sort" => "timestamp asc"
178
+ )
179
+ end
180
+ # rubocop:disable RSpec/NestedGroups
181
+ context 'low granularity' do
182
+ let(:options) { { granularity: OAI::Const::Granularity::LOW } }
183
+
184
+ it 'sets options' do
185
+ expect(wrapper.granularity).to eql(OAI::Const::Granularity::LOW)
186
+ expect(result).to include(
187
+ "fq" => ["timestamp:[2015-01-01 TO 2015-01-02]"],
188
+ "sort" => "timestamp asc"
189
+ )
190
+ end
191
+ context 'same value for endpoints' do
192
+ let(:constraints) { { from: Date.parse('2015-01-01'), until: Date.parse('2015-01-01') } }
193
+
194
+ it 'sets options' do
195
+ expect(wrapper.granularity).to eql(OAI::Const::Granularity::LOW)
196
+ expect(result).to include(
197
+ "fq" => ["timestamp:\"2015-01-01\""],
198
+ "sort" => "timestamp asc"
199
+ )
200
+ end
201
+ end
202
+ end
203
+ # rubocop:enable RSpec/NestedGroups
204
+ end
205
+
206
+ context 'string date options' do
207
+ let(:constraints) { { from: '2015-01-01', until: '2015-01-02' } }
208
+
209
+ it 'sets options when from' do
210
+ constraints.delete(:until)
211
+ expect(result).to include(
212
+ "fq" => ["timestamp:[2015-01-01 TO *]"],
213
+ "sort" => "timestamp asc"
214
+ )
215
+ end
216
+ it 'sets options when until' do
217
+ constraints.delete(:from)
218
+ expect(result).to include(
219
+ "fq" => ["timestamp:[* TO 2015-01-02]"],
220
+ "sort" => "timestamp asc"
221
+ )
222
+ end
223
+ it 'sets options when range' do
224
+ expect(result).to include(
225
+ "fq" => ["timestamp:[2015-01-01 TO 2015-01-02]"],
226
+ "sort" => "timestamp asc"
227
+ )
228
+ end
229
+ end
230
+
231
+ context 'string time options' do
232
+ let(:constraints) { { from: '2015-01-01T00:00:00.000Z', until: '2015-01-02T00:00:00.000Z' } }
233
+
234
+ it 'sets options when from' do
235
+ constraints.delete(:until)
236
+ expect(result).to include(
237
+ "fq" => ["timestamp:[2015-01-01T00:00:00.000Z TO *]"],
238
+ "sort" => "timestamp asc"
239
+ )
240
+ end
241
+ it 'sets options when until' do
242
+ constraints.delete(:from)
243
+ expect(result).to include(
244
+ "fq" => ["timestamp:[* TO 2015-01-02T00:00:00.000Z]"],
245
+ "sort" => "timestamp asc"
246
+ )
247
+ end
248
+ it 'sets options when range' do
249
+ expect(result).to include(
250
+ "fq" => ["timestamp:[2015-01-01T00:00:00.000Z TO 2015-01-02T00:00:00.000Z]"],
251
+ "sort" => "timestamp asc"
252
+ )
56
253
  end
57
254
  end
58
255
  end
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  RSpec.describe BlacklightOaiProvider::SolrSet do
4
4
  let(:controller) { CatalogController.new }
5
5
  let(:fields) do
6
- [{ label: 'language', solr_field: 'language_facet' }]
6
+ [{ label: 'language', solr_field: 'language_ssim' }]
7
7
  end
8
8
 
9
9
  before do
@@ -23,7 +23,7 @@ RSpec.describe BlacklightOaiProvider::SolrSet do
23
23
  context 'with multiple fields' do
24
24
  let(:fields) do
25
25
  [
26
- { label: 'language', solr_field: 'language_facet' },
26
+ { label: 'language', solr_field: 'language_ssim' },
27
27
  { solr_field: 'format' }
28
28
  ]
29
29
  end
@@ -35,7 +35,7 @@ RSpec.describe BlacklightOaiProvider::SolrSet do
35
35
 
36
36
  context 'for a field with no values' do
37
37
  let(:fields) do
38
- [{ label: 'author', solr_field: 'author_display' }]
38
+ [{ label: 'author', solr_field: 'author_ts' }]
39
39
  end
40
40
 
41
41
  it 'returns nil' do
@@ -45,12 +45,12 @@ RSpec.describe BlacklightOaiProvider::SolrSet do
45
45
 
46
46
  context 'for a field with facet config limit' do
47
47
  let(:fields) do
48
- [{ label: 'lc_alpha', solr_field: 'lc_alpha_facet' }]
48
+ [{ label: 'lc_alpha', solr_field: 'lc_alpha_ssim' }]
49
49
  end
50
50
 
51
51
  before do
52
52
  CatalogController.configure_blacklight do |config|
53
- config.add_facet_field 'lc_alpha_facet', label: 'lc_alpha', limit: 2
53
+ config.add_facet_field 'lc_alpha_ssim', label: 'lc_alpha', limit: 2
54
54
  end
55
55
  end
56
56
 
@@ -65,7 +65,7 @@ RSpec.describe BlacklightOaiProvider::SolrSet do
65
65
  let(:spec) { 'language:Hebrew' }
66
66
 
67
67
  it 'returns the filter query' do
68
- expect(described_class.from_spec(spec)).to eq 'language_facet:"Hebrew"'
68
+ expect(described_class.from_spec(spec)).to eq 'language_ssim:"Hebrew"'
69
69
  end
70
70
  end
71
71
 
@@ -94,7 +94,7 @@ RSpec.describe BlacklightOaiProvider::SolrSet do
94
94
  end
95
95
 
96
96
  it 'gets solr field' do
97
- expect(set.solr_field).to eql 'language_facet'
97
+ expect(set.solr_field).to eql 'language_ssim'
98
98
  end
99
99
  end
100
100
  end
@@ -12,7 +12,7 @@ describe 'OIA-PMH Identify Request' do
12
12
  end
13
13
 
14
14
  it "contains repository name" do
15
- expect(xml.at_xpath('//xmlns:repositoryName').text).to eql 'Test Repository'
15
+ expect(xml.at_xpath('//xmlns:repositoryName').text).to eql 'Catalog Repository'
16
16
  end
17
17
 
18
18
  it "contains base url" do
@@ -18,7 +18,7 @@ describe 'OIA-PMH ListIdentifiers Request' do
18
18
  end
19
19
 
20
20
  it 'contains resumptionToken' do
21
- expect(xml.at_xpath('//xmlns:resumptionToken').text).to eql 'oai_dc.f(2014-02-03T18:42:53Z).u(2014-03-03T18:42:53Z).t(30):25'
21
+ expect(xml.at_xpath('//xmlns:resumptionToken').text).to eql 'oai_dc.f(2014-02-03T18:42:53Z).u(2015-02-03T18:42:53Z).t(30):25'
22
22
  end
23
23
  end
24
24
 
@@ -27,8 +27,8 @@ describe 'OIA-PMH ListIdentifiers Request' do
27
27
  get '/catalog/oai?verb=ListIdentifiers&resumptionToken=oai_dc.f(2014-02-03T18:42:53Z).u(2014-03-03T18:42:53Z).t(30):25'
28
28
  end
29
29
 
30
- it 'returns 5 records' do
31
- expect(xml.xpath('//xmlns:ListIdentifiers/xmlns:header').count).to be 5
30
+ it 'returns 4 records' do
31
+ expect(xml.xpath('//xmlns:ListIdentifiers/xmlns:header').count).to be 4
32
32
  end
33
33
 
34
34
  it 'first record has identifier and timestamp' do
@@ -57,7 +57,7 @@ describe 'OIA-PMH ListIdentifiers Request' do
57
57
 
58
58
  context 'with different timestamp_field' do
59
59
  before :all do
60
- SolrDocument.timestamp_key = "record_creation_dt"
60
+ SolrDocument.timestamp_key = "record_creation_dtsi"
61
61
  end
62
62
 
63
63
  before do
@@ -24,7 +24,7 @@ describe 'OIA-PMH ListRecords Request' do
24
24
  end
25
25
 
26
26
  it 'contains resumptionToken' do
27
- expect(xml.at_xpath('//xmlns:resumptionToken').text).to eql 'oai_dc.f(2014-02-03T18:42:53Z).u(2014-03-03T18:42:53Z).t(30):25'
27
+ expect(xml.at_xpath('//xmlns:resumptionToken').text).to eql 'oai_dc.f(2014-02-03T18:42:53Z).u(2015-02-03T18:42:53Z).t(30):25'
28
28
  end
29
29
 
30
30
  context 'for record' do
@@ -73,8 +73,8 @@ describe 'OIA-PMH ListRecords Request' do
73
73
  get '/catalog/oai?verb=ListRecords&resumptionToken=oai_dc.f(2014-02-03T18:42:53Z).u(2014-02-03T18:42:53Z).t(29):25'
74
74
  end
75
75
 
76
- it 'returns 4 records' do
77
- expect(xml.xpath('//xmlns:ListRecords/xmlns:record/xmlns:header').count).to be 4
76
+ it 'returns 3 records' do
77
+ expect(xml.xpath('//xmlns:ListRecords/xmlns:record/xmlns:header').count).to be 3
78
78
  end
79
79
 
80
80
  it 'first record has oai_dc metadata element' do
@@ -119,7 +119,7 @@ describe 'OIA-PMH ListRecords Request' do
119
119
 
120
120
  context 'throws noRecordsMatch error' do
121
121
  before do
122
- get '/catalog/oai?verb=ListRecords&metadataPrefix=oai_dc&from=2015-01-01'
122
+ get '/catalog/oai?verb=ListRecords&metadataPrefix=oai_dc&from=2016-01-01'
123
123
  end
124
124
 
125
125
  it 'returns no records error' do
@@ -57,7 +57,7 @@ RSpec.describe 'OAI-PMH ListSets Request' do
57
57
  {
58
58
  document: {
59
59
  set_fields: [
60
- { label: 'subject', solr_field: 'subject_topic_facet',
60
+ { label: 'subject', solr_field: 'subject_ssim',
61
61
  description: "Subject topic set using FAST subjects" }
62
62
  ]
63
63
  }
data/spec/spec_helper.rb CHANGED
@@ -6,18 +6,9 @@ EngineCart.load_application!
6
6
  require 'rspec/rails'
7
7
  require 'capybara/rspec'
8
8
  require 'selenium-webdriver'
9
+ require 'webdrivers'
9
10
 
10
- Capybara.javascript_driver = :headless_chrome
11
-
12
- Capybara.register_driver :headless_chrome do |app|
13
- capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
14
- chromeOptions: { args: %w[headless disable-gpu] }
15
- )
16
-
17
- Capybara::Selenium::Driver.new(app,
18
- browser: :chrome,
19
- desired_capabilities: capabilities)
20
- end
11
+ Capybara.javascript_driver = :selenium_chrome_headless
21
12
 
22
13
  RSpec.configure do |config|
23
14
  config.infer_spec_type_from_file_location!
@@ -11,6 +11,7 @@ class TestAppGenerator < Rails::Generators::Base
11
11
  say_status("warning", "GENERATING BL", :yellow)
12
12
 
13
13
  generate 'blacklight:install', '--devise'
14
+ generate 'blacklight:test_support'
14
15
  end
15
16
 
16
17
  def change_migrations_if_rails_4_2
@@ -51,14 +52,35 @@ class TestAppGenerator < Rails::Generators::Base
51
52
  generate 'blacklight_oai_provider:install'
52
53
  end
53
54
 
54
- def add_test_blacklight_oai_config
55
+ def add_test_blacklight_oai_controller_config
56
+ %w[catalog alternate].each { |cn| add_test_config_for(cn) }
57
+ end
58
+
59
+ def add_test_blacklight_oai_model_config
60
+ insert_into_file "app/models/solr_document.rb", after: "include BlacklightOaiProvider::SolrDocument\n" do
61
+ <<-CONFIG
62
+ field_semantics.merge!(
63
+ title: "title_tsim",
64
+ date: "pub_date_ssim",
65
+ subject: "subject_ssim",
66
+ creator: "author_tsim",
67
+ format: "format",
68
+ language: "language_ssim",
69
+ )
70
+ CONFIG
71
+ end
72
+ end
73
+
74
+ private
75
+
76
+ def add_test_config_for(controller_basename)
55
77
  say_status("warning", "ADDING BL OIA-PMH CONFIG")
56
78
 
57
- insert_into_file "app/controllers/catalog_controller.rb", after: "config.default_solr_params = {" do
79
+ insert_into_file "app/controllers/#{controller_basename}_controller.rb", after: "config.default_solr_params = {" do
58
80
  "\n fl: '*',\n"
59
81
  end
60
82
 
61
- insert_into_file "app/controllers/catalog_controller.rb", after: " configure_blacklight do |config|\n" do
83
+ insert_into_file "app/controllers/#{controller_basename}_controller.rb", after: " configure_blacklight do |config|\n" do
62
84
  <<-CONFIG
63
85
  config.default_document_solr_params = {
64
86
  qt: 'search',
@@ -69,12 +91,12 @@ class TestAppGenerator < Rails::Generators::Base
69
91
  CONFIG
70
92
  end
71
93
 
72
- insert_into_file "app/controllers/catalog_controller.rb", after: "configure_blacklight do |config|\n" do
94
+ insert_into_file "app/controllers/#{controller_basename}_controller.rb", after: "configure_blacklight do |config|\n" do
73
95
  <<-CONFIG
74
96
  config.oai = {
75
97
  provider: {
76
- repository_name: 'Test Repository',
77
- repository_url: 'http://localhost/catalog/oai',
98
+ repository_name: '#{controller_basename.titleize} Repository',
99
+ repository_url: 'http://localhost/#{controller_basename}/oai',
78
100
  record_prefix: 'oai:test',
79
101
  admin_email: 'root@localhost',
80
102
  deletion_support: 'persistent',
@@ -82,25 +104,12 @@ class TestAppGenerator < Rails::Generators::Base
82
104
  },
83
105
  document: {
84
106
  set_fields: [
85
- { label: 'language', solr_field: 'language_facet' }
107
+ { label: 'language', solr_field: 'language_ssim' }
86
108
  ],
87
109
  limit: 25
88
110
  }
89
111
  }
90
112
  CONFIG
91
113
  end
92
-
93
- insert_into_file "app/models/solr_document.rb", after: "include BlacklightOaiProvider::SolrDocument\n" do
94
- <<-CONFIG
95
- field_semantics.merge!(
96
- title: "title_display",
97
- creator: "author_display",
98
- date: "pub_date",
99
- subject: "subject_topic_facet",
100
- format: "format",
101
- language: "language_facet"
102
- )
103
- CONFIG
104
- end
105
114
  end
106
115
  end