Skip to content

Commit a47cfef

Browse files
committed
Update Rubocop config, fix offenses
1 parent 7c8025f commit a47cfef

18 files changed

+125
-95
lines changed

.rubocop.yml

+24-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ AllCops:
1111
Exclude:
1212
- bin/*
1313
- gemfiles/*
14-
- spec/**/*
14+
- spec/dummy/**/*
1515
- lib/generators/**/*.rb
1616

1717
#########
@@ -27,12 +27,15 @@ Style/TrailingCommaInArrayLiteral:
2727
Style/TrailingCommaInHashLiteral:
2828
EnforcedStyleForMultiline: comma
2929

30+
Style/BlockDelimiters:
31+
AllowedPatterns: ['expect']
32+
3033
##########
3134
# LAYOUT #
3235
##########
3336

3437
Layout/LineLength:
35-
Max: 125
38+
Max: 150
3639
Exclude:
3740
- ajax-datatables-rails.gemspec
3841

@@ -62,3 +65,22 @@ Layout/HashAlignment:
6265
Naming/FileName:
6366
Exclude:
6467
- lib/ajax-datatables-rails.rb
68+
69+
#########
70+
# RSPEC #
71+
#########
72+
73+
RSpec/MultipleExpectations:
74+
Max: 7
75+
76+
RSpec/NestedGroups:
77+
Max: 6
78+
79+
RSpec/ExampleLength:
80+
Max: 9
81+
82+
RSpec/MultipleMemoizedHelpers:
83+
Max: 6
84+
85+
RSpec/NotToNot:
86+
EnforcedStyle: to_not

lib/ajax-datatables-rails/orm/active_record.rb

+1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ def build_conditions_for_datatable
4242
end.reduce(:or)
4343
end.compact.reduce(:and)
4444
end
45+
4546
def build_conditions_for_selected_columns
4647
search_columns.filter_map(&:search_query).reduce(:and)
4748
end

spec/ajax-datatables-rails/base_spec.rb spec/ajax_datatables_rails/base_spec.rb

+14-12
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
end
3131
end
3232

33-
context 'child class implements view_columns' do
33+
context 'when child class implements view_columns' do
3434
it 'expects a hash based defining columns' do
3535
datatable = ComplexDatatable.new(sample_params)
3636
expect(datatable.view_columns).to be_a(Hash)
@@ -108,7 +108,7 @@
108108

109109
describe 'ORM API' do
110110
context 'when ORM is not implemented' do
111-
let(:datatable) { AjaxDatatablesRails::Base.new(sample_params) }
111+
let(:datatable) { described_class.new(sample_params) }
112112

113113
describe '#fetch_records' do
114114
it 'raises an error if it does not include an ORM module' do
@@ -139,29 +139,30 @@
139139
describe 'it allows method override' do
140140
let(:datatable) do
141141
datatable = Class.new(ComplexDatatable) do
142-
def filter_records(records)
143-
raise NotImplementedError.new('FOO')
142+
def filter_records(_records)
143+
raise NotImplementedError, 'FOO'
144144
end
145145

146-
def sort_records(records)
147-
raise NotImplementedError.new('FOO')
146+
def sort_records(_records)
147+
raise NotImplementedError, 'FOO'
148148
end
149149

150-
def paginate_records(records)
151-
raise NotImplementedError.new('FOO')
150+
def paginate_records(_records)
151+
raise NotImplementedError, 'FOO'
152152
end
153153
end
154154
datatable.new(sample_params)
155155
end
156156

157157
describe '#fetch_records' do
158158
it 'calls #get_raw_records' do
159-
expect(datatable).to receive(:get_raw_records) { User.all }
159+
allow(datatable).to receive(:get_raw_records) { User.all }
160160
datatable.fetch_records
161+
expect(datatable).to have_received(:get_raw_records)
161162
end
162163

163164
it 'returns a collection of records' do
164-
expect(datatable).to receive(:get_raw_records) { User.all }
165+
allow(datatable).to receive(:get_raw_records) { User.all }
165166
expect(datatable.fetch_records).to be_a(ActiveRecord::Relation)
166167
end
167168
end
@@ -204,7 +205,7 @@ def paginate_records(records)
204205
context 'with additional_data' do
205206
it 'returns a hash' do
206207
create_list(:user, 5)
207-
expect(datatable).to receive(:additional_data) { { foo: 'bar' } }
208+
allow(datatable).to receive(:additional_data).and_return({ foo: 'bar' })
208209
data = datatable.as_json
209210
expect(data[:recordsTotal]).to eq 5
210211
expect(data[:recordsFiltered]).to eq 5
@@ -228,9 +229,10 @@ def paginate_records(records)
228229
end
229230

230231
describe '#column_data' do
231-
let(:datatable) { ComplexDatatable.new(sample_params) }
232232
before { datatable.params[:columns]['0'][:search][:value] = 'doe' }
233233

234+
let(:datatable) { ComplexDatatable.new(sample_params) }
235+
234236
it 'returns column data from params' do
235237
expect(datatable.column_data(:username)).to eq('doe')
236238
expect(datatable.column_data('username')).to eq('doe')

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

+29-30
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,19 @@
1313
before { datatable.params[:columns]['0'][:search][:value] = 'searchvalue' }
1414

1515
it 'is orderable' do
16-
expect(column.orderable?).to eq(true)
16+
expect(column.orderable?).to be(true)
1717
end
1818

1919
it 'sorts nulls last' do
20-
expect(column.nulls_last?).to eq(false)
20+
expect(column.nulls_last?).to be(false)
2121
end
2222

2323
it 'is searchable' do
24-
expect(column.searchable?).to eq(true)
24+
expect(column.searchable?).to be(true)
2525
end
2626

2727
it 'is searched' do
28-
expect(column.searched?).to eq(true)
28+
expect(column.searched?).to be(true)
2929
end
3030

3131
it 'has connected to id column' do
@@ -53,7 +53,7 @@
5353

5454
context 'with other ORM' do
5555
it 'returns the corresponding model' do
56-
expect(User).to receive(:respond_to?).with(:arel_table).and_return(false)
56+
allow(User).to receive(:respond_to?).with(:arel_table).and_return(false)
5757
expect(column.table).to eq User
5858
end
5959
end
@@ -87,7 +87,7 @@
8787
end
8888

8989
it 'does not regex' do
90-
expect(column.search.regexp?).to eq false
90+
expect(column.search.regexp?).to be false
9191
end
9292
end
9393

@@ -97,12 +97,6 @@
9797
end
9898
end
9999

100-
describe '#source' do
101-
it 'is :like by default' do
102-
expect(column.source).to eq('User.username')
103-
end
104-
end
105-
106100
describe '#search_query' do
107101
it 'bulds search query' do
108102
expect(column.search_query.to_sql).to include('%searchvalue%')
@@ -129,10 +123,10 @@
129123
end
130124

131125
describe 'unsearchable column' do
132-
let(:column) { datatable.datatable.columns.find{ |c| c.data == 'email_hash' } }
126+
let(:column) { datatable.datatable.columns.find { |c| c.data == 'email_hash' } }
133127

134128
it 'is not searchable' do
135-
expect(column.searchable?).to eql(false)
129+
expect(column.searchable?).to be(false)
136130
end
137131
end
138132

@@ -150,91 +144,96 @@
150144
let(:column) { datatable.datatable.columns.find { |c| c.data == 'username' } }
151145

152146
it 'is a proc' do
153-
config = column.instance_variable_get('@view_column')
147+
config = column.instance_variable_get(:@view_column)
154148
filter = config[:cond]
155149
expect(filter).to be_a(Proc)
156-
expect(filter).to receive(:call).with(column, column.formatted_value)
150+
allow(filter).to receive(:call).with(column, column.formatted_value)
157151
column.filter
152+
expect(filter).to have_received(:call).with(column, column.formatted_value)
158153
end
159154
end
160155

161156
describe '#type_cast' do
162157
let(:column) { datatable.datatable.columns.first }
163158

164159
it 'returns VARCHAR if :db_adapter is :pg' do
165-
expect(datatable).to receive(:db_adapter) { :pg }
160+
allow(datatable).to receive(:db_adapter).and_return(:pg)
166161
expect(column.send(:type_cast)).to eq('VARCHAR')
167162
end
168163

169164
it 'returns VARCHAR if :db_adapter is :postgre' do
170-
expect(datatable).to receive(:db_adapter) { :postgre }
165+
allow(datatable).to receive(:db_adapter).and_return(:postgre)
171166
expect(column.send(:type_cast)).to eq('VARCHAR')
172167
end
173168

174169
it 'returns VARCHAR if :db_adapter is :postgresql' do
175-
expect(datatable).to receive(:db_adapter) { :postgresql }
170+
allow(datatable).to receive(:db_adapter).and_return(:postgresql)
176171
expect(column.send(:type_cast)).to eq('VARCHAR')
177172
end
178173

179174
it 'returns VARCHAR if :db_adapter is :postgis' do
180-
expect(datatable).to receive(:db_adapter) { :postgis }
175+
allow(datatable).to receive(:db_adapter).and_return(:postgis)
181176
expect(column.send(:type_cast)).to eq('VARCHAR')
182177
end
183178

184179
it 'returns VARCHAR2(4000) if :db_adapter is :oracle' do
185-
expect(datatable).to receive(:db_adapter) { :oracle }
180+
allow(datatable).to receive(:db_adapter).and_return(:oracle)
186181
expect(column.send(:type_cast)).to eq('VARCHAR2(4000)')
187182
end
188183

189184
it 'returns VARCHAR2(4000) if :db_adapter is :oracleenhanced' do
190-
expect(datatable).to receive(:db_adapter) { :oracleenhanced }
185+
allow(datatable).to receive(:db_adapter).and_return(:oracleenhanced)
191186
expect(column.send(:type_cast)).to eq('VARCHAR2(4000)')
192187
end
193188

194189
it 'returns CHAR if :db_adapter is :mysql2' do
195-
expect(datatable).to receive(:db_adapter) { :mysql2 }
190+
allow(datatable).to receive(:db_adapter).and_return(:mysql2)
196191
expect(column.send(:type_cast)).to eq('CHAR')
197192
end
198193

199194
it 'returns CHAR if :db_adapter is :trilogy' do
200-
expect(datatable).to receive(:db_adapter) { :trilogy }
195+
allow(datatable).to receive(:db_adapter).and_return(:trilogy)
201196
expect(column.send(:type_cast)).to eq('CHAR')
202197
end
203198

204199
it 'returns CHAR if :db_adapter is :mysql' do
205-
expect(datatable).to receive(:db_adapter) { :mysql }
200+
allow(datatable).to receive(:db_adapter).and_return(:mysql)
206201
expect(column.send(:type_cast)).to eq('CHAR')
207202
end
208203

209204
it 'returns TEXT if :db_adapter is :sqlite' do
210-
expect(datatable).to receive(:db_adapter) { :sqlite }
205+
allow(datatable).to receive(:db_adapter).and_return(:sqlite)
211206
expect(column.send(:type_cast)).to eq('TEXT')
212207
end
213208

214209
it 'returns TEXT if :db_adapter is :sqlite3' do
215-
expect(datatable).to receive(:db_adapter) { :sqlite3 }
210+
allow(datatable).to receive(:db_adapter).and_return(:sqlite3)
216211
expect(column.send(:type_cast)).to eq('TEXT')
217212
end
218213

219214
it 'returns VARCHAR(4000) if :db_adapter is :sqlserver' do
220-
expect(datatable).to receive(:db_adapter) { :sqlserver }
215+
allow(datatable).to receive(:db_adapter).and_return(:sqlserver)
221216
expect(column.send(:type_cast)).to eq('VARCHAR(4000)')
222217
end
223218
end
224219

225220
describe 'when empty column' do
226221
before { datatable.params[:columns]['0'][:data] = '' }
227222

223+
let(:message) { 'Unknown column. Check that `data` field is filled on JS side with the column name' }
224+
228225
it 'raises error' do
229-
expect { datatable.to_json }.to raise_error(AjaxDatatablesRails::Error::InvalidSearchColumn).with_message('Unknown column. Check that `data` field is filled on JS side with the column name')
226+
expect { datatable.to_json }.to raise_error(AjaxDatatablesRails::Error::InvalidSearchColumn).with_message(message)
230227
end
231228
end
232229

233230
describe 'when unknown column' do
234231
before { datatable.params[:columns]['0'][:data] = 'foo' }
235232

233+
let(:message) { "Check that column 'foo' exists in view_columns" }
234+
236235
it 'raises error' do
237-
expect { datatable.to_json }.to raise_error(AjaxDatatablesRails::Error::InvalidSearchColumn).with_message("Check that column 'foo' exists in view_columns")
236+
expect { datatable.to_json }.to raise_error(AjaxDatatablesRails::Error::InvalidSearchColumn).with_message(message)
238237
end
239238
end
240239
end

spec/ajax-datatables-rails/datatable/datatable_spec.rb spec/ajax_datatables_rails/datatable/datatable_spec.rb

+5-4
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111

1212
shared_examples 'order methods' do
1313
it 'is orderable' do
14-
expect(datatable.orderable?).to eq(true)
14+
expect(datatable.orderable?).to be(true)
1515
end
1616

1717
it 'is not orderable' do
1818
datatable.options[:order] = nil
19-
expect(datatable.orderable?).to eq(false)
19+
expect(datatable.orderable?).to be(false)
2020
end
2121

2222
it 'has 2 orderable columns' do
@@ -57,19 +57,20 @@
5757
describe 'with json params' do
5858
let(:order_option) { order_option_json }
5959
let(:datatable) { datatable_json }
60+
6061
it_behaves_like 'order methods'
6162
it_behaves_like 'columns methods'
6263
end
6364

6465
describe 'search methods' do
6566
it 'is searchable' do
6667
datatable.options[:search][:value] = 'atom'
67-
expect(datatable.searchable?).to eq(true)
68+
expect(datatable.searchable?).to be(true)
6869
end
6970

7071
it 'is not searchable' do
7172
datatable.options[:search][:value] = nil
72-
expect(datatable.searchable?).to eq(false)
73+
expect(datatable.searchable?).to be(false)
7374
end
7475

7576
it 'child class' do

spec/ajax-datatables-rails/datatable/simple_order_spec.rb spec/ajax_datatables_rails/datatable/simple_order_spec.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
let(:parent) { ComplexDatatable.new(sample_params) }
88
let(:datatable) { parent.datatable }
99
let(:options) { ActiveSupport::HashWithIndifferentAccess.new({ 'column' => '1', 'dir' => 'desc' }) }
10-
let(:simple_order) { AjaxDatatablesRails::Datatable::SimpleOrder.new(datatable, options) }
10+
let(:simple_order) { described_class.new(datatable, options) }
1111

1212
describe 'option methods' do
1313
it 'sql query' do
@@ -32,7 +32,7 @@
3232
describe 'using column option' do
3333
let(:parent) { DatatableOrderNullsLast.new(sample_params) }
3434
let(:sorted_datatable) { parent.datatable }
35-
let(:nulls_last_order) { AjaxDatatablesRails::Datatable::SimpleOrder.new(sorted_datatable, options) }
35+
let(:nulls_last_order) { described_class.new(sorted_datatable, options) }
3636

3737
context 'with postgres database adapter' do
3838
before { parent.db_adapter = :pg }

spec/ajax-datatables-rails/datatable/simple_search_spec.rb spec/ajax_datatables_rails/datatable/simple_search_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
RSpec.describe AjaxDatatablesRails::Datatable::SimpleSearch do
66

77
let(:options) { ActiveSupport::HashWithIndifferentAccess.new({ 'value' => 'search value', 'regex' => 'true' }) }
8-
let(:simple_search) { AjaxDatatablesRails::Datatable::SimpleSearch.new(options) }
8+
let(:simple_search) { described_class.new(options) }
99

1010
describe 'option methods' do
1111
it 'regexp?' do

0 commit comments

Comments
 (0)