|
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