Skip to content

Commit 8c1d0e1

Browse files
authored
Merge pull request #3768 from projectblacklight/revert-append
Revert "Remove unused methods"
2 parents c9fbe17 + 53fd451 commit 8c1d0e1

File tree

3 files changed

+69
-2
lines changed

3 files changed

+69
-2
lines changed

app/services/blacklight/search_service.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@ def search_state_class
2222
@search_state.class
2323
end
2424

25-
# a solr query method
26-
# @yield [search_builder] optional block yields configured SearchBuilder, caller can modify or create new SearchBuilder to be used. Block should return SearchBuilder to be used.
25+
# Fetch query results from solr
26+
# @yield [search_builder] optional block yields configured SearchBuilder, caller can modify or create new
27+
# SearchBuilder to be used. Block should return SearchBuilder to be used.
28+
# This is used in blacklight_range_limit
2729
# @return [Blacklight::Solr::Response] the solr response object
2830
def search_results
2931
builder = search_builder.with(search_state)

lib/blacklight/search_builder.rb

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,43 @@ def where(conditions)
1919
self
2020
end
2121

22+
##
23+
# Append additional processor chain directives
24+
# This is used in blacklight_range_limit
25+
def append(*addl_processor_chain)
26+
params_will_change!
27+
builder = self.class.new(processor_chain + addl_processor_chain, scope)
28+
.with(search_state)
29+
.merge(@merged_params)
30+
.reverse_merge(@reverse_merged_params)
31+
32+
builder.start = @start if @start
33+
builder.rows = @rows if @rows
34+
builder.page = @page if @page
35+
builder.facet = @facet if @facet
36+
builder
37+
end
38+
39+
##
40+
# Converse to append, remove processor chain directives,
41+
# returning a new builder that's a copy of receiver with
42+
# specified change.
43+
#
44+
# Methods in argument that aren't currently in processor
45+
# chain are ignored as no-ops, rather than raising.
46+
def except(*except_processor_chain)
47+
builder = self.class.new(processor_chain - except_processor_chain, scope)
48+
.with(search_state)
49+
.merge(@merged_params)
50+
.reverse_merge(@reverse_merged_params)
51+
52+
builder.start = @start if @start
53+
builder.rows = @rows if @rows
54+
builder.page = @page if @page
55+
builder.facet = @facet if @facet
56+
builder
57+
end
58+
2259
def start=(value)
2360
params_will_change!
2461
@start = value.to_i

spec/models/blacklight/search_builder_spec.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,29 @@
4949
end
5050
end
5151

52+
describe "#append" do
53+
let(:processor_chain) { [:a, :b, :c] }
54+
55+
it "provides a new search builder with the processor chain" do
56+
builder = subject.append(:d, :e)
57+
expect(subject.processor_chain).to eq processor_chain
58+
expect(builder.processor_chain).not_to eq subject.processor_chain
59+
expect(builder.processor_chain).to contain_exactly(:a, :b, :c, :d, :e)
60+
end
61+
end
62+
63+
describe "#except" do
64+
let(:processor_chain) { [:a, :b, :c, :d, :e] }
65+
66+
it "provide a new search builder excepting arguments" do
67+
builder = subject.except(:b, :d, :does_not_exist)
68+
expect(builder).not_to equal(subject)
69+
expect(subject.processor_chain).to eq processor_chain
70+
expect(builder.processor_chain).not_to eq subject.processor_chain
71+
expect(builder.processor_chain).to contain_exactly(:a, :c, :e)
72+
end
73+
end
74+
5275
describe "#to_hash" do
5376
it "updates if data is changed" do
5477
subject.merge(q: 'xyz')
@@ -224,6 +247,11 @@
224247
expect(subject.send(:params_changed?)).to be true
225248
end
226249

250+
it "is marked as changed when the processor chain changes" do
251+
subject.append(:a)
252+
expect(subject.send(:params_changed?)).to be true
253+
end
254+
227255
it "is marked as changed when merged parameters are added" do
228256
subject.merge(a: 1)
229257
expect(subject.send(:params_changed?)).to be true

0 commit comments

Comments
 (0)