Skip to content

Commit 77d5185

Browse files
committed
Don't use send to test public methods, move tests
1 parent d2faa45 commit 77d5185

File tree

4 files changed

+72
-72
lines changed

4 files changed

+72
-72
lines changed

spec/ajax-datatables-rails/base_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,25 +120,25 @@
120120

121121
describe '#fetch_records' do
122122
it 'raises an error if it does not include an ORM module' do
123-
expect { datatable.send(:fetch_records) }.to raise_error NoMethodError
123+
expect { datatable.fetch_records }.to raise_error NoMethodError
124124
end
125125
end
126126

127127
describe '#filter_records' do
128128
it 'raises an error if it does not include an ORM module' do
129-
expect { datatable.send(:filter_records) }.to raise_error NoMethodError
129+
expect { datatable.filter_records }.to raise_error NoMethodError
130130
end
131131
end
132132

133133
describe '#sort_records' do
134134
it 'raises an error if it does not include an ORM module' do
135-
expect { datatable.send(:sort_records) }.to raise_error NoMethodError
135+
expect { datatable.sort_records }.to raise_error NoMethodError
136136
end
137137
end
138138

139139
describe '#paginate_records' do
140140
it 'raises an error if it does not include an ORM module' do
141-
expect { datatable.send(:paginate_records) }.to raise_error NoMethodError
141+
expect { datatable.paginate_records }.to raise_error NoMethodError
142142
end
143143
end
144144
end

spec/ajax-datatables-rails/datatable/column_spec.rb

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,4 +148,53 @@
148148
column.filter
149149
end
150150
end
151+
152+
describe '#type_cast' do
153+
let(:column) { datatable.datatable.columns.first }
154+
155+
it 'returns VARCHAR if :db_adapter is :pg' do
156+
allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :pg }
157+
expect(column.send(:type_cast)).to eq('VARCHAR')
158+
end
159+
160+
it 'returns VARCHAR if :db_adapter is :postgre' do
161+
allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :postgre }
162+
expect(column.send(:type_cast)).to eq('VARCHAR')
163+
end
164+
165+
it 'returns VARCHAR if :db_adapter is :postgresql' do
166+
allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :postgresql }
167+
expect(column.send(:type_cast)).to eq('VARCHAR')
168+
end
169+
170+
it 'returns VARCHAR if :db_adapter is :oracle' do
171+
allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :oracle }
172+
expect(column.send(:type_cast)).to eq('VARCHAR2(4000)')
173+
end
174+
175+
it 'returns VARCHAR if :db_adapter is :oracleenhanced' do
176+
allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :oracleenhanced }
177+
expect(column.send(:type_cast)).to eq('VARCHAR2(4000)')
178+
end
179+
180+
it 'returns CHAR if :db_adapter is :mysql2' do
181+
allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :mysql2 }
182+
expect(column.send(:type_cast)).to eq('CHAR')
183+
end
184+
185+
it 'returns CHAR if :db_adapter is :mysql' do
186+
allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :mysql }
187+
expect(column.send(:type_cast)).to eq('CHAR')
188+
end
189+
190+
it 'returns TEXT if :db_adapter is :sqlite' do
191+
allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :sqlite }
192+
expect(column.send(:type_cast)).to eq('TEXT')
193+
end
194+
195+
it 'returns TEXT if :db_adapter is :sqlite3' do
196+
allow_any_instance_of(AjaxDatatablesRails::Configuration).to receive(:db_adapter) { :sqlite3 }
197+
expect(column.send(:type_cast)).to eq('TEXT')
198+
end
199+
end
151200
end

spec/ajax-datatables-rails/orm/active_record_filter_records_spec.rb

Lines changed: 17 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,19 @@
77

88
describe '#filter_records' do
99
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)
1111
end
1212

1313
it 'performs a simple search first' do
1414
datatable.params[:search] = { value: 'msmith' }
1515
expect(datatable).to receive(:build_conditions_for_datatable)
16-
datatable.send(:filter_records, records)
16+
datatable.filter_records(records)
1717
end
1818

1919
it 'performs a composite search second' do
2020
datatable.params[:search] = { value: '' }
2121
expect(datatable).to receive(:build_conditions_for_selected_columns)
22-
datatable.send(:filter_records, records)
22+
datatable.filter_records(records)
2323
end
2424
end
2525

@@ -31,14 +31,14 @@
3131

3232
it 'returns an Arel object' do
3333
datatable.params[:search] = { value: 'msmith' }
34-
result = datatable.send(:build_conditions_for_datatable)
34+
result = datatable.build_conditions_for_datatable
3535
expect(result).to be_a(Arel::Nodes::Grouping)
3636
end
3737

3838
context 'no search query' do
3939
it 'returns empty query' do
4040
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
4242
end
4343
end
4444

@@ -53,11 +53,11 @@
5353
end
5454

5555
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
5757
end
5858

5959
it 'returns filtered results' do
60-
query = datatable.send(:build_conditions_for_datatable)
60+
query = datatable.build_conditions_for_datatable
6161
results = records.where(query).map(&:username)
6262
expect(results).to eq ['johndoe', 'msmith']
6363
end
@@ -69,11 +69,11 @@
6969
end
7070

7171
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
7373
end
7474

7575
it 'returns filtered results' do
76-
query = datatable.send(:build_conditions_for_datatable)
76+
query = datatable.build_conditions_for_datatable
7777
results = records.where(query).map(&:username)
7878
expect(results).to eq ['johndoe', 'msmith']
7979
end
@@ -87,7 +87,7 @@
8787
end
8888

8989
it 'returns a filtering query' do
90-
query = datatable.send(:build_conditions_for_datatable)
90+
query = datatable.build_conditions_for_datatable
9191
results = records.where(query).map(&:username)
9292
expect(results).to include('johndoe')
9393
expect(results).not_to include('msmith')
@@ -100,7 +100,7 @@
100100
end
101101

102102
it 'returns a filtering query' do
103-
query = datatable.send(:build_conditions_for_datatable)
103+
query = datatable.build_conditions_for_datatable
104104
results = records.where(query).map(&:username)
105105
expect(results).to eq ['johndoe']
106106
expect(results).not_to include('msmith')
@@ -122,14 +122,14 @@
122122
end
123123

124124
it 'returns an Arel object' do
125-
result = datatable.send(:build_conditions_for_selected_columns)
125+
result = datatable.build_conditions_for_selected_columns
126126
expect(result).to be_a(Arel::Nodes::And)
127127
end
128128

129129
if AjaxDatatablesRails.config.db_adapter == :postgresql
130130
context 'when db_adapter is postgresql' do
131131
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
133133
expect(result).to respond_to(:to_sql)
134134
expect(result.to_sql).to eq(
135135
"CAST(\"users\".\"username\" AS VARCHAR) ILIKE '%doe%' AND CAST(\"users\".\"email\" AS VARCHAR) ILIKE '%example%'"
@@ -141,7 +141,7 @@
141141
if AjaxDatatablesRails.config.db_adapter.in? %i[oracle oracleenhanced]
142142
context 'when db_adapter is oracle' do
143143
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
145145
expect(result).to respond_to(:to_sql)
146146
expect(result.to_sql).to eq(
147147
"CAST(\"USERS\".\"USERNAME\" AS VARCHAR2(4000)) LIKE '%doe%' AND CAST(\"USERS\".\"EMAIL\" AS VARCHAR2(4000)) LIKE '%example%'"
@@ -153,7 +153,7 @@
153153
if AjaxDatatablesRails.config.db_adapter.in? %i[mysql2 sqlite3]
154154
context 'when db_adapter is mysql2' do
155155
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
157157
expect(result).to respond_to(:to_sql)
158158
expect(result.to_sql).to eq(
159159
"CAST(`users`.`username` AS CHAR) LIKE '%doe%' AND CAST(`users`.`email` AS CHAR) LIKE '%example%'"
@@ -165,7 +165,7 @@
165165

166166
it 'calls #build_conditions_for_selected_columns' do
167167
expect(datatable).to receive(:build_conditions_for_selected_columns)
168-
datatable.send(:build_conditions)
168+
datatable.build_conditions
169169
end
170170

171171
context 'with search values in columns' do
@@ -174,63 +174,14 @@
174174
end
175175

176176
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
178178
results = records.where(query).map(&:username)
179179
expect(results).to include('johndoe')
180180
expect(results).not_to include('msmith')
181181
end
182182
end
183183
end
184184

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-
234185
describe 'filter conditions' do
235186
describe 'it can filter records with condition :date_range' do
236187
let(:datatable) { DatatableCondDate.new(sample_params) }

spec/ajax-datatables-rails/orm/active_record_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
describe '#fetch_records' do
1313
it 'calls #get_raw_records' do
1414
expect(datatable).to receive(:get_raw_records) { User.all }
15-
datatable.send(:fetch_records)
15+
datatable.fetch_records
1616
end
1717

1818
it 'returns a collection of records' do
1919
expect(datatable).to receive(:get_raw_records) { User.all }
20-
expect(datatable.send(:fetch_records)).to be_a(ActiveRecord::Relation)
20+
expect(datatable.fetch_records).to be_a(ActiveRecord::Relation)
2121
end
2222
end
2323
end

0 commit comments

Comments
 (0)