From 70361fb2868ed9709c6a140322b22297487214ac Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 29 Nov 2017 00:59:43 -0800 Subject: [PATCH] Better exception when trying to access results for failed multi-search query - fixes #1032 --- CHANGELOG.md | 1 + lib/searchkick/results.rb | 6 +++++- test/multi_search_test.rb | 10 ++++++---- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 953c569..87076fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## 2.4.1 [unreleased] +- Better exception when trying to access results for failed multi-search query - Added support for `faraday_middleware-aws-sigv4` - Added `credentials` option to `aws_credentials` diff --git a/lib/searchkick/results.rb b/lib/searchkick/results.rb index 375c752..9ccfe4f 100644 --- a/lib/searchkick/results.rb +++ b/lib/searchkick/results.rb @@ -187,7 +187,11 @@ module Searchkick end def hits - @response["hits"]["hits"] + if error + raise Searchkick::Error, "Query error - use the error method to view it" + else + @response["hits"]["hits"] + end end def misspellings? diff --git a/test/multi_search_test.rb b/test/multi_search_test.rb index fd3ea06..0f0332e 100644 --- a/test/multi_search_test.rb +++ b/test/multi_search_test.rb @@ -34,9 +34,11 @@ class MultiSearchTest < Minitest::Test assert_equal ["abc", "abd"], products.map(&:name) end - # https://github.com/ankane/searchkick/issues/1032 - def test_no_records - products = Product.search("*", order: {created_at: :asc}, execute: false) - assert Searchkick.multi_search([products])[0].results + def test_error + products = Product.search("*", order: {bad_column: :asc}, execute: false) + Searchkick.multi_search([products]) + assert products.error + error = assert_raises(Searchkick::Error) { products.results } + assert_equal error.message, "Query error - use the error method to view it" end end -- libgit2 0.21.0