From c7bebc27a4af5bbd27ae2c91c8341fb07f10a2b8 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Wed, 19 Feb 2020 02:08:04 -0800 Subject: [PATCH] Raise error for invalid query before it's sent to server --- lib/searchkick/query.rb | 8 ++++++++ test/parameters_test.rb | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+), 0 deletions(-) create mode 100644 test/parameters_test.rb diff --git a/lib/searchkick/query.rb b/lib/searchkick/query.rb index bf24779..686a294 100644 --- a/lib/searchkick/query.rb +++ b/lib/searchkick/query.rb @@ -1043,6 +1043,14 @@ module Searchkick {regexp: {field => {value: source, flags: "NONE"}}} else + # TODO add this for other values + if value.as_json.is_a?(Enumerable) + # query will fail, but this is better + # same message as Active Record + # TODO make TypeError + raise "can't cast #{value.class.name}" + end + {term: {field => {value: value}}} end end diff --git a/test/parameters_test.rb b/test/parameters_test.rb new file mode 100644 index 0000000..ee8e1c0 --- /dev/null +++ b/test/parameters_test.rb @@ -0,0 +1,18 @@ +require_relative "test_helper" + +class ParametersTest < Minitest::Test + def setup + skip unless defined?(ActiveRecord) + require "action_controller" + super + end + + def test_where_hash + params = ActionController::Parameters.new({store_id: {value: 10, boost: 2}}) + # TODO make TypeError + error = assert_raises RuntimeError do + assert_search "product", [], where: params + end + assert_includes error.message, "can't cast ActionController::Parameters" + end +end -- libgit2 0.21.0