Skip to content

Commit fe7f5fe

Browse files
committed
use absolute controller name in Dcv::SearchState#url_for_document
- this prevents namespaced controllers from attempting to resolve sites controller name locally - DLC-1116
1 parent 828ebe7 commit fe7f5fe

File tree

3 files changed

+32
-19
lines changed

3 files changed

+32
-19
lines changed

lib/dcv/search_state.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def url_for_document(doc, options = {})
1111
if doc.is_a?(SolrDocument) && doc.site_result?
1212
slug = doc.unqualified_slug
1313
nested = slug =~ /\//
14-
controller_name = doc.has_restriction? ? 'restricted/sites' : 'sites'
14+
controller_name = doc.has_restriction? ? '/restricted/sites' : '/sites'
1515
{ 'controller' => controller_name, 'action' => 'home', 'slug' => slug }
1616
else
1717
super(doc, options)

spec/routing/sites_controller_spec.rb

+9
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,13 @@
2929
expect(site_path('foo')).to eql("/foo")
3030
end
3131
end
32+
describe "url_for" do
33+
let(:routing_params) do
34+
{ action: "home", controller: "/sites", slug: "ohac", repository_id: "NNC-RB", only_path: true }
35+
end
36+
let(:expexted_path) { '/ohac?repository_id=NNC-RB' }
37+
it do
38+
expect(url_for(routing_params)).to eql(expexted_path)
39+
end
40+
end
3241
end

spec/unit/dcv/search_state_spec.rb

+22-18
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,29 @@
88
let(:blacklight_config) { instance_double(Blacklight::Configuration) }
99
let(:params) { { site_slug: site_slug } }
1010
let(:search_state) { described_class.new(params, blacklight_config, controller) }
11+
1112
describe '#url_for_document' do
12-
subject(:url_params) { search_state.url_for_document(document) }
13-
end
14-
describe '#url_for_document' do
15-
let(:slug) { 'sluggo' }
16-
subject(:url_params) { search_state.url_for_document(document) }
17-
context 'with a site result' do
18-
let(:document) do
19-
{
20-
'title_ssm' => ['0123456789abcdefghijklmnopqrstuvwxyz'],
21-
'dc_type_ssm' => ['Publish Target'],
22-
'slug_ssim' => [slug]
23-
}
24-
end
25-
let(:expected_url_params) { { 'controller' => 'sites', 'action' => 'home', 'slug' => slug } }
26-
it { is_expected.to eql(expected_url_params) }
27-
context 'that is nested' do
28-
let(:slug) { 'nancy/sluggo' }
29-
it { is_expected.to eql(expected_url_params) }
13+
context "for a site record" do
14+
let(:slug) { 'sluggo' }
15+
subject(:url_params) { search_state.url_for_document(document) }
16+
context 'with a site result' do
17+
let(:document) do
18+
{
19+
'title_ssm' => ['0123456789abcdefghijklmnopqrstuvwxyz'],
20+
'dc_type_ssm' => ['Publish Target'],
21+
'slug_ssim' => [slug]
22+
}
23+
end
24+
let(:expected_url_params) { { 'controller' => '/sites', 'action' => 'home', 'slug' => slug } }
25+
26+
it "returns absolute controller path info suitable for nested catalog searches" do
27+
expect(url_params).to eql(expected_url_params)
28+
end
29+
30+
context 'that is nested' do
31+
let(:slug) { 'nancy/sluggo' }
32+
it { is_expected.to eql(expected_url_params) }
33+
end
3034
end
3135
end
3236
end

0 commit comments

Comments
 (0)