Skip to content

Commit

Permalink
Update mocking to use the search_service
Browse files Browse the repository at this point in the history
The existing mocks were no longer doing anything since the
search_service had been introduced into the CatalogController
  • Loading branch information
jcoyne committed Jun 29, 2018
1 parent c100a3f commit c0b6e82
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 11 deletions.
2 changes: 2 additions & 0 deletions app/controllers/concerns/blacklight/catalog.rb
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,8 @@ def suggest
end
end

# @return [Array] first value is a Blacklight::Solr::Response and the second
# is a list of documents
def action_documents
search_service.fetch(Array(params[:id]))
end
Expand Down
30 changes: 19 additions & 11 deletions spec/controllers/catalog_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
let(:doc_id) { '2007020969' }
let(:mock_response) { instance_double(Blacklight::Solr::Response) }
let(:mock_document) { instance_double(SolrDocument) }
let(:search_service) { instance_double(Blacklight::SearchService) }

describe "index action" do
context "with format :html" do
Expand Down Expand Up @@ -361,11 +362,10 @@ def export_as_mock
end

before do
allow(mock_response).to receive_messages(:documents => [SolrDocument.new(id: 'my_fake_doc')])
allow(controller).to receive_messages(:find => mock_response,
:get_single_doc_via_search => mock_document)
Mime::Type.register "application/mock", :mock
SolrDocument.use_extension(FakeExtension)
allow(controller).to receive(:search_service).and_return(search_service)
expect(search_service).to receive(:fetch).and_return([nil, SolrDocument.new(id: 'my_fake_doc')])
end

it "responds to an extension-registered format properly" do
Expand All @@ -381,17 +381,23 @@ def export_as_mock
end # describe show action

describe "opensearch" do
before do
allow(mock_response).to receive_messages(documents: [SolrDocument.new(id: 'my_fake_doc'), SolrDocument.new(id: 'my_other_doc')])
allow(controller).to receive_messages(find: mock_response)
end
it "returns an opensearch description" do
get :opensearch, params: { format: 'xml' }
expect(response).to be_successful
end
it "returns valid JSON" do
get :opensearch, params: { format: 'json', q: 'a' }
expect(response).to be_successful

context 'when searching for something' do
before do
allow(controller).to receive(:search_service).and_return(search_service)
expect(search_service).to receive(:opensearch_response)
.and_return(['a', [SolrDocument.new(id: 'my_fake_doc'),
SolrDocument.new(id: 'my_other_doc')]])
end

it "returns valid JSON" do
get :opensearch, params: { format: 'json', q: 'a' }
expect(response).to be_successful
end
end
end

Expand All @@ -411,11 +417,13 @@ def export_as_mock
describe "email/sms" do
let(:mock_response) { instance_double(Blacklight::Solr::Response, documents: [SolrDocument.new(id: 'my_fake_doc'), SolrDocument.new(id: 'my_other_doc')]) }
before do
allow(controller).to receive_messages(find: mock_response)
allow(controller).to receive(:search_service).and_return(search_service)
expect(search_service).to receive(:fetch).and_return([mock_response, []])
request.env["HTTP_REFERER"] = "/catalog/#{doc_id}"
SolrDocument.use_extension( Blacklight::Document::Email )
SolrDocument.use_extension( Blacklight::Document::Sms )
end

describe "email", api: false do
it "gives error if no TO parameter" do
post :email, params: { id: doc_id }
Expand Down

0 comments on commit c0b6e82

Please sign in to comment.