From c0b6e8297e66f5c051fc67ca1fa72de28d1e4eb3 Mon Sep 17 00:00:00 2001 From: Justin Coyne Date: Fri, 29 Jun 2018 10:09:18 -0500 Subject: [PATCH] Update mocking to use the search_service The existing mocks were no longer doing anything since the search_service had been introduced into the CatalogController --- .../concerns/blacklight/catalog.rb | 2 ++ spec/controllers/catalog_controller_spec.rb | 30 ++++++++++++------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/app/controllers/concerns/blacklight/catalog.rb b/app/controllers/concerns/blacklight/catalog.rb index 17efd43f7d..fd5a1bae87 100644 --- a/app/controllers/concerns/blacklight/catalog.rb +++ b/app/controllers/concerns/blacklight/catalog.rb @@ -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 diff --git a/spec/controllers/catalog_controller_spec.rb b/spec/controllers/catalog_controller_spec.rb index 49aedff884..309ea073bd 100644 --- a/spec/controllers/catalog_controller_spec.rb +++ b/spec/controllers/catalog_controller_spec.rb @@ -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 @@ -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 @@ -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 @@ -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 }