|
7 | 7 |
|
8 | 8 | describe '#filter_records' do
|
9 | 9 | it 'requires a records collection as argument' do
|
10 |
| - expect { datatable.send(:filter_records) }.to raise_error(ArgumentError) |
| 10 | + expect { datatable.filter_records() }.to raise_error(ArgumentError) |
11 | 11 | end
|
12 | 12 |
|
13 | 13 | it 'performs a simple search first' do
|
14 | 14 | datatable.params[:search] = { value: 'msmith' }
|
15 | 15 | expect(datatable).to receive(:build_conditions_for_datatable)
|
16 |
| - datatable.send(:filter_records, records) |
| 16 | + datatable.filter_records(records) |
17 | 17 | end
|
18 | 18 |
|
19 | 19 | it 'performs a composite search second' do
|
20 | 20 | datatable.params[:search] = { value: '' }
|
21 | 21 | expect(datatable).to receive(:build_conditions_for_selected_columns)
|
22 |
| - datatable.send(:filter_records, records) |
| 22 | + datatable.filter_records(records) |
23 | 23 | end
|
24 | 24 | end
|
25 | 25 |
|
|
31 | 31 |
|
32 | 32 | it 'returns an Arel object' do
|
33 | 33 | datatable.params[:search] = { value: 'msmith' }
|
34 |
| - result = datatable.send(:build_conditions_for_datatable) |
| 34 | + result = datatable.build_conditions_for_datatable |
35 | 35 | expect(result).to be_a(Arel::Nodes::Grouping)
|
36 | 36 | end
|
37 | 37 |
|
38 | 38 | context 'no search query' do
|
39 | 39 | it 'returns empty query' do
|
40 | 40 | datatable.params[:search] = { value: '' }
|
41 |
| - expect(datatable.send(:build_conditions_for_datatable)).to be_blank |
| 41 | + expect(datatable.build_conditions_for_datatable).to be_blank |
42 | 42 | end
|
43 | 43 | end
|
44 | 44 |
|
|
53 | 53 | end
|
54 | 54 |
|
55 | 55 | it 'returns empty query result' do
|
56 |
| - expect(datatable.send(:build_conditions_for_datatable)).to be_blank |
| 56 | + expect(datatable.build_conditions_for_datatable).to be_blank |
57 | 57 | end
|
58 | 58 |
|
59 | 59 | it 'returns filtered results' do
|
60 |
| - query = datatable.send(:build_conditions_for_datatable) |
| 60 | + query = datatable.build_conditions_for_datatable |
61 | 61 | results = records.where(query).map(&:username)
|
62 | 62 | expect(results).to eq ['johndoe', 'msmith']
|
63 | 63 | end
|
|
69 | 69 | end
|
70 | 70 |
|
71 | 71 | it 'returns empty query result' do
|
72 |
| - expect(datatable.send(:build_conditions_for_datatable)).to be_blank |
| 72 | + expect(datatable.build_conditions_for_datatable).to be_blank |
73 | 73 | end
|
74 | 74 |
|
75 | 75 | it 'returns filtered results' do
|
76 |
| - query = datatable.send(:build_conditions_for_datatable) |
| 76 | + query = datatable.build_conditions_for_datatable |
77 | 77 | results = records.where(query).map(&:username)
|
78 | 78 | expect(results).to eq ['johndoe', 'msmith']
|
79 | 79 | end
|
|
87 | 87 | end
|
88 | 88 |
|
89 | 89 | it 'returns a filtering query' do
|
90 |
| - query = datatable.send(:build_conditions_for_datatable) |
| 90 | + query = datatable.build_conditions_for_datatable |
91 | 91 | results = records.where(query).map(&:username)
|
92 | 92 | expect(results).to include('johndoe')
|
93 | 93 | expect(results).not_to include('msmith')
|
|
100 | 100 | end
|
101 | 101 |
|
102 | 102 | it 'returns a filtering query' do
|
103 |
| - query = datatable.send(:build_conditions_for_datatable) |
| 103 | + query = datatable.build_conditions_for_datatable |
104 | 104 | results = records.where(query).map(&:username)
|
105 | 105 | expect(results).to eq ['johndoe']
|
106 | 106 | expect(results).not_to include('msmith')
|
|
122 | 122 | end
|
123 | 123 |
|
124 | 124 | it 'returns an Arel object' do
|
125 |
| - result = datatable.send(:build_conditions_for_selected_columns) |
| 125 | + result = datatable.build_conditions_for_selected_columns |
126 | 126 | expect(result).to be_a(Arel::Nodes::And)
|
127 | 127 | end
|
128 | 128 |
|
129 | 129 | if AjaxDatatablesRails.config.db_adapter == :postgresql
|
130 | 130 | context 'when db_adapter is postgresql' do
|
131 | 131 | it 'can call #to_sql on returned object' do
|
132 |
| - result = datatable.send(:build_conditions_for_selected_columns) |
| 132 | + result = datatable.build_conditions_for_selected_columns |
133 | 133 | expect(result).to respond_to(:to_sql)
|
134 | 134 | expect(result.to_sql).to eq(
|
135 | 135 | "CAST(\"users\".\"username\" AS VARCHAR) ILIKE '%doe%' AND CAST(\"users\".\"email\" AS VARCHAR) ILIKE '%example%'"
|
|
141 | 141 | if AjaxDatatablesRails.config.db_adapter.in? %i[oracle oracleenhanced]
|
142 | 142 | context 'when db_adapter is oracle' do
|
143 | 143 | it 'can call #to_sql on returned object' do
|
144 |
| - result = datatable.send(:build_conditions_for_selected_columns) |
| 144 | + result = datatable.build_conditions_for_selected_columns |
145 | 145 | expect(result).to respond_to(:to_sql)
|
146 | 146 | expect(result.to_sql).to eq(
|
147 | 147 | "CAST(\"USERS\".\"USERNAME\" AS VARCHAR2(4000)) LIKE '%doe%' AND CAST(\"USERS\".\"EMAIL\" AS VARCHAR2(4000)) LIKE '%example%'"
|
|
153 | 153 | if AjaxDatatablesRails.config.db_adapter.in? %i[mysql2 sqlite3]
|
154 | 154 | context 'when db_adapter is mysql2' do
|
155 | 155 | it 'can call #to_sql on returned object' do
|
156 |
| - result = datatable.send(:build_conditions_for_selected_columns) |
| 156 | + result = datatable.build_conditions_for_selected_columns |
157 | 157 | expect(result).to respond_to(:to_sql)
|
158 | 158 | expect(result.to_sql).to eq(
|
159 | 159 | "CAST(`users`.`username` AS CHAR) LIKE '%doe%' AND CAST(`users`.`email` AS CHAR) LIKE '%example%'"
|
|
165 | 165 |
|
166 | 166 | it 'calls #build_conditions_for_selected_columns' do
|
167 | 167 | expect(datatable).to receive(:build_conditions_for_selected_columns)
|
168 |
| - datatable.send(:build_conditions) |
| 168 | + datatable.build_conditions |
169 | 169 | end
|
170 | 170 |
|
171 | 171 | context 'with search values in columns' do
|
|
174 | 174 | end
|
175 | 175 |
|
176 | 176 | it 'returns a filtered set of records' do
|
177 |
| - query = datatable.send(:build_conditions_for_selected_columns) |
| 177 | + query = datatable.build_conditions_for_selected_columns |
178 | 178 | results = records.where(query).map(&:username)
|
179 | 179 | expect(results).to include('johndoe')
|
180 | 180 | expect(results).not_to include('msmith')
|
181 | 181 | end
|
182 | 182 | end
|
183 | 183 | end
|
184 | 184 |
|
185 |
| - describe '#type_cast helper method' do |
186 |
| - let(:column) { ComplexDatatable.new(sample_params).datatable.columns.first } |
187 |
| - |
188 |
| - it 'returns VARCHAR if :db_adapter is :pg' do |
189 |
| - allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :pg } |
190 |
| - expect(column.send(:type_cast)).to eq('VARCHAR') |
191 |
| - end |
192 |
| - |
193 |
| - it 'returns VARCHAR if :db_adapter is :postgre' do |
194 |
| - allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :postgre } |
195 |
| - expect(column.send(:type_cast)).to eq('VARCHAR') |
196 |
| - end |
197 |
| - |
198 |
| - it 'returns VARCHAR if :db_adapter is :postgresql' do |
199 |
| - allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :postgresql } |
200 |
| - expect(column.send(:type_cast)).to eq('VARCHAR') |
201 |
| - end |
202 |
| - |
203 |
| - it 'returns VARCHAR if :db_adapter is :oracle' do |
204 |
| - allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :oracle } |
205 |
| - expect(column.send(:type_cast)).to eq('VARCHAR2(4000)') |
206 |
| - end |
207 |
| - |
208 |
| - it 'returns VARCHAR if :db_adapter is :oracleenhanced' do |
209 |
| - allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :oracleenhanced } |
210 |
| - expect(column.send(:type_cast)).to eq('VARCHAR2(4000)') |
211 |
| - end |
212 |
| - |
213 |
| - it 'returns CHAR if :db_adapter is :mysql2' do |
214 |
| - allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :mysql2 } |
215 |
| - expect(column.send(:type_cast)).to eq('CHAR') |
216 |
| - end |
217 |
| - |
218 |
| - it 'returns CHAR if :db_adapter is :mysql' do |
219 |
| - allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :mysql } |
220 |
| - expect(column.send(:type_cast)).to eq('CHAR') |
221 |
| - end |
222 |
| - |
223 |
| - it 'returns TEXT if :db_adapter is :sqlite' do |
224 |
| - allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :sqlite } |
225 |
| - expect(column.send(:type_cast)).to eq('TEXT') |
226 |
| - end |
227 |
| - |
228 |
| - it 'returns TEXT if :db_adapter is :sqlite3' do |
229 |
| - allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :sqlite3 } |
230 |
| - expect(column.send(:type_cast)).to eq('TEXT') |
231 |
| - end |
232 |
| - end |
233 |
| - |
234 | 185 | describe 'filter conditions' do
|
235 | 186 | describe 'it can filter records with condition :date_range' do
|
236 | 187 | let(:datatable) { DatatableCondDate.new(sample_params) }
|
|
0 commit comments