Skip to content

Commit

Permalink
use absolute controller name in Dcv::SearchState#url_for_document
Browse files Browse the repository at this point in the history
- this prevents namespaced controllers from attempting to resolve sites controller name locally
- DLC-1116
  • Loading branch information
barmintor committed Apr 1, 2024
1 parent 828ebe7 commit fe7f5fe
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 19 deletions.
2 changes: 1 addition & 1 deletion lib/dcv/search_state.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def url_for_document(doc, options = {})
if doc.is_a?(SolrDocument) && doc.site_result?
slug = doc.unqualified_slug
nested = slug =~ /\//
controller_name = doc.has_restriction? ? 'restricted/sites' : 'sites'
controller_name = doc.has_restriction? ? '/restricted/sites' : '/sites'
{ 'controller' => controller_name, 'action' => 'home', 'slug' => slug }
else
super(doc, options)
Expand Down
9 changes: 9 additions & 0 deletions spec/routing/sites_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,13 @@
expect(site_path('foo')).to eql("/foo")
end
end
describe "url_for" do
let(:routing_params) do
{ action: "home", controller: "/sites", slug: "ohac", repository_id: "NNC-RB", only_path: true }
end
let(:expexted_path) { '/ohac?repository_id=NNC-RB' }
it do
expect(url_for(routing_params)).to eql(expexted_path)
end
end
end
40 changes: 22 additions & 18 deletions spec/unit/dcv/search_state_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,25 +8,29 @@
let(:blacklight_config) { instance_double(Blacklight::Configuration) }
let(:params) { { site_slug: site_slug } }
let(:search_state) { described_class.new(params, blacklight_config, controller) }

describe '#url_for_document' do
subject(:url_params) { search_state.url_for_document(document) }
end
describe '#url_for_document' do
let(:slug) { 'sluggo' }
subject(:url_params) { search_state.url_for_document(document) }
context 'with a site result' do
let(:document) do
{
'title_ssm' => ['0123456789abcdefghijklmnopqrstuvwxyz'],
'dc_type_ssm' => ['Publish Target'],
'slug_ssim' => [slug]
}
end
let(:expected_url_params) { { 'controller' => 'sites', 'action' => 'home', 'slug' => slug } }
it { is_expected.to eql(expected_url_params) }
context 'that is nested' do
let(:slug) { 'nancy/sluggo' }
it { is_expected.to eql(expected_url_params) }
context "for a site record" do
let(:slug) { 'sluggo' }
subject(:url_params) { search_state.url_for_document(document) }
context 'with a site result' do
let(:document) do
{
'title_ssm' => ['0123456789abcdefghijklmnopqrstuvwxyz'],
'dc_type_ssm' => ['Publish Target'],
'slug_ssim' => [slug]
}
end
let(:expected_url_params) { { 'controller' => '/sites', 'action' => 'home', 'slug' => slug } }

it "returns absolute controller path info suitable for nested catalog searches" do
expect(url_params).to eql(expected_url_params)
end

context 'that is nested' do
let(:slug) { 'nancy/sluggo' }
it { is_expected.to eql(expected_url_params) }
end
end
end
end
Expand Down

0 comments on commit fe7f5fe

Please sign in to comment.