Skip to content

Commit 8c9b8e6

Browse files
committed
raise InvalidSearchError in condition.rb and add more tests
1 parent 8a5b2d3 commit 8c9b8e6

File tree

4 files changed

+20
-3
lines changed

4 files changed

+20
-3
lines changed

lib/ransack/nodes/condition.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
require 'ransack/invalid_search_error'
2+
13
module Ransack
24
module Nodes
35
class Condition < Node
@@ -38,7 +40,7 @@ def extract_values_for_condition(key, context = nil)
3840
predicate = Predicate.named(name)
3941

4042
unless predicate || Ransack.options[:ignore_unknown_conditions]
41-
raise ArgumentError, "No valid predicate for #{key}"
43+
raise InvalidSearchError, "No valid predicate for #{key}"
4244
end
4345

4446
if context.present?

spec/ransack/adapters/active_record/base_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,8 @@ module ActiveRecord
131131
expect { Person.ransack('') }.to_not raise_error
132132
end
133133

134-
it 'raises exception if ransack! called with unknown condition' do
135-
expect { Person.ransack!(unknown_attr_eq: 'Ernie') }.to raise_error(ArgumentError)
134+
it 'raises InvalidSearchError exception if ransack! called with unknown condition' do
135+
expect { Person.ransack!(unknown_attr_eq: 'Ernie') }.to raise_error(InvalidSearchError)
136136
end
137137

138138
it 'does not modify the parameters' do

spec/ransack/nodes/condition_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ module Nodes
6464
end
6565

6666
specify { expect { subject }.to raise_error ArgumentError }
67+
specify { expect { subject }.to raise_error InvalidSearchError }
6768
end
6869

6970
context "when ignore_unknown_conditions is true" do

spec/ransack/search_spec.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ module Ransack
270270
end
271271

272272
specify { expect { subject }.to raise_error ArgumentError }
273+
specify { expect { subject }.to raise_error InvalidSearchError }
273274
end
274275

275276
context 'when ignore_unknown_conditions configuration option is true' do
@@ -300,6 +301,7 @@ module Ransack
300301

301302
context 'when ignore_unknown_conditions search parameter is false' do
302303
specify { expect { with_ignore_unknown_conditions_false }.to raise_error ArgumentError }
304+
specify { expect { with_ignore_unknown_conditions_false }.to raise_error InvalidSearchError }
303305
end
304306

305307
context 'when ignore_unknown_conditions search parameter is true' do
@@ -614,6 +616,18 @@ def remove_quotes_and_backticks(str)
614616
expect(@s.result.first.id).to eq 1
615617
end
616618

619+
it 'raises ArgumentError when an invalid argument is sent' do
620+
expect do
621+
@s.sorts = 1234
622+
end.to raise_error(ArgumentError, "Invalid argument (Integer) supplied to sorts=")
623+
end
624+
625+
it 'raises InvalidSearchError when an invalid argument is sent' do
626+
expect do
627+
@s.sorts = 1234
628+
end.to raise_error(Ransack::InvalidSearchError, "Invalid argument (Integer) supplied to sorts=")
629+
end
630+
617631
it "PG's sort option", if: ::ActiveRecord::Base.connection.adapter_name == "PostgreSQL" do
618632
default = Ransack.options.clone
619633

0 commit comments

Comments
 (0)