@@ -22,8 +22,7 @@ module Ransack
2222 describe 'eq' do
2323 it 'generates an equality condition for boolean true' do
2424 @s . awesome_eq = true
25- field = "#{ quote_table_name ( "people" ) } .#{
26- quote_column_name ( "awesome" ) } "
25+ field = "#{ quote_table_name ( "people" ) } .#{ quote_column_name ( "awesome" ) } "
2726 expect ( @s . result . to_sql ) . to match /#{ field } = #{
2827 ActiveRecord ::Base . connection . quoted_true } /
2928 end
@@ -41,8 +40,107 @@ module Ransack
4140 end
4241 end
4342
44- describe 'cont' do
43+ describe 'lteq' do
44+ it 'generates a <= condition with an integer column' do
45+ val = 1000
46+ @s . salary_lteq = val
47+ field = "#{ quote_table_name ( "people" ) } .#{ quote_column_name ( "salary" ) } "
48+ expect ( @s . result . to_sql ) . to match /#{ field } <= #{ val } /
49+ end
50+
51+ if ::ActiveRecord ::VERSION ::STRING < '4.2' . freeze
52+ it 'generates a <= condition with a string column' do
53+ 54+ @s . email_lteq = val
55+ field = "#{ quote_table_name ( "people" ) } .#{ quote_column_name ( "email" ) } "
56+ expect ( @s . result . to_sql ) . to match /#{ field } <= '#{ val } '/
57+ end
58+ else
59+ # FIXME Rails 4.2 should be able to handle strings like Rails < 4.2 does.
60+ it 'raises an error with a string column' do
61+ @s . email_lteq = '[email protected] ' 62+ expect { @s . result . to_sql } . to raise_error
63+ end
64+ end
65+
66+ it 'does not generate a condition for nil' do
67+ @s . salary_lteq = nil
68+ expect ( @s . result . to_sql ) . not_to match /WHERE/
69+ end
70+ end
71+
72+ describe 'lt' do
73+ it 'generates a < condition with an integer column' do
74+ val = 2000
75+ @s . salary_lt = val
76+ field = "#{ quote_table_name ( "people" ) } .#{ quote_column_name ( "salary" ) } "
77+ expect ( @s . result . to_sql ) . to match /#{ field } < #{ val } /
78+ end
79+
80+ if ::ActiveRecord ::VERSION ::STRING < '4.2' . freeze
81+ it 'generates a < condition with a string column' do
82+ 83+ @s . email_lt = val
84+ field = "#{ quote_table_name ( "people" ) } .#{ quote_column_name ( "email" ) } "
85+ expect ( @s . result . to_sql ) . to match /#{ field } < '#{ val } '/
86+ end
87+ else
88+ # FIXME Rails 4.2 should be able to handle strings like Rails < 4.2 does.
89+ it 'raises an error with a string column' do
90+ @s . email_lteq = '[email protected] ' 91+ expect { @s . result . to_sql } . to raise_error
92+ end
93+ end
94+
95+ it 'does not generate a condition for nil' do
96+ @s . salary_lt = nil
97+ expect ( @s . result . to_sql ) . not_to match /WHERE/
98+ end
99+ end
45100
101+ describe 'gteq' do
102+ it 'generates a >= condition with an integer column' do
103+ val = 300
104+ @s . salary_gteq = val
105+ field = "#{ quote_table_name ( "people" ) } .#{ quote_column_name ( "salary" ) } "
106+ expect ( @s . result . to_sql ) . to match /#{ field } >= #{ val } /
107+ end
108+
109+ it 'generates a >= condition with a string column' do
110+ 111+ @s . email_gteq = val
112+ field = "#{ quote_table_name ( "people" ) } .#{ quote_column_name ( "email" ) } "
113+ expect ( @s . result . to_sql ) . to match /#{ field } >= '#{ val } '/
114+ end
115+
116+ it 'does not generate a condition for nil' do
117+ @s . salary_gteq = nil
118+ expect ( @s . result . to_sql ) . not_to match /WHERE/
119+ end
120+ end
121+
122+ describe 'gt' do
123+ it 'generates a > condition with an integer column' do
124+ val = 400
125+ @s . salary_gt = val
126+ field = "#{ quote_table_name ( "people" ) } .#{ quote_column_name ( "salary" ) } "
127+ expect ( @s . result . to_sql ) . to match /#{ field } > #{ val } /
128+ end
129+
130+ it 'generates a > condition with a string column' do
131+ 132+ @s . email_gt = val
133+ field = "#{ quote_table_name ( "people" ) } .#{ quote_column_name ( "email" ) } "
134+ expect ( @s . result . to_sql ) . to match /#{ field } > '#{ val } '/
135+ end
136+
137+ it 'does not generate a condition for nil' do
138+ @s . salary_gt = nil
139+ expect ( @s . result . to_sql ) . not_to match /WHERE/
140+ end
141+ end
142+
143+ describe 'cont' do
46144 it_has_behavior 'wildcard escaping' , :name_cont ,
47145 ( if ActiveRecord ::Base . connection . adapter_name == "PostgreSQL"
48146 /"people"."name" ILIKE '%\\ %\\ ._\\ \\ %'/
0 commit comments