8000 DRY tests · GUI/ajax-datatables-rails@da6d07b · GitHub
[go: up one dir, main page]

Skip to content
8000

Commit da6d07b

Browse files
author
Nicolas Rodriguez
committed
DRY tests
1 parent b40d845 commit da6d07b

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

spec/ajax-datatables-rails/base_spec.rb

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,21 @@
66
let(:view) { double('view', params: sample_params) }
77

88
it 'requires a view_context' do
9-
expect { AjaxDatatablesRails::Base.new }.to raise_error ArgumentError
9+
expect { described_class.new }.to raise_error ArgumentError
1010
end
1111

1212
it 'accepts an options hash' do
13-
datatable = AjaxDatatablesRails::Base.new(view, foo: 'bar')
13+
datatable = described_class.new(view, foo: 'bar')
1414
expect(datatable.options).to eq(foo: 'bar')
1515
end
1616
end
1717

1818
context 'Public API' do
1919
let(:view) { double('view', params: sample_params) }
20-
let(:datatable) { AjaxDatatablesRails::Base.new(view) }
2120

2221
describe '#view_columns' do
2322
it 'raises an error if not defined by the user' do
23+
datatable = described_class.new(view)
2424
expect { datatable.view_columns }.to raise_error AjaxDatatablesRails::NotImplemented
2525
end
2626

@@ -39,18 +39,21 @@
3939

4040
describe '#get_raw_records' do
4141
it 'raises an error if not defined by the user' do
42+
datatable = described_class.new(view)
4243
expect { datatable.get_raw_records }.to raise_error AjaxDatatablesRails::NotImplemented
4344
end
4445
end
4546

4647
describe '#data' do
4748
it 'raises an error if not defined by the user' do
49+
datatable = described_class.new(view)
4850
expect { datatable.data }.to raise_error AjaxDatatablesRails::NotImplemented
4951
end
5052

5153
context 'when data is defined as a hash' do
54+
let(:datatable) { ComplexDatatableHash.new(view) }
55+
5256
it 'should return an array of hashes' do
53-
datatable = ComplexDatatableHash.new(view)
5457
create_list(:user, 5)
5558
expect(datatable.data).to be_a(Array)
5659
expect(datatable.data.size).to eq 5
@@ -59,7 +62,6 @@
5962
end
6063

6164
it 'should html escape data' do
62-
datatable = ComplexDatatableHash.new(view)
6365
create(:user, first_name: 'Name "><img src=x onerror=alert("first_name")>', last_name: 'Name "><img src=x onerror=alert("last_name")>')
6466
data = datatable.send(:sanitize, datatable.data)
6567
item = data.first
@@ -69,8 +71,9 @@
6971
end
7072

7173
context 'when data is defined as a array' do
74+
let(:datatable) { ComplexDatatableArray.new(view) }
75+
7276
it 'should return an array of arrays' do
73-
datatable = ComplexDatatableArray.new(view)
7477
create_list(:user, 5)
7578
expect(datatable.data).to be_a(Array)
7679
expect(datatable.data.size).to eq 5
@@ -79,7 +82,6 @@
7982
end
8083

8184
it 'should html escape data' do
82-
datatable = ComplexDatatableArray.new(view)
8385
create(:user, first_name: 'Name "><img src=x onerror=alert("first_name")>', last_name: 'Name "><img src=x onerror=alert("last_name")>')
8486
data = datatable.send(:sanitize, datatable.data)
8587
item = data.first
@@ -90,8 +92,9 @@
9092
end
9193

9294
describe '#as_json' do
95+
let(:datatable) { ComplexDatatableHash.new(view) }
96+
9397
it 'should return a hash' do
94-
datatable = ComplexDatatableHash.new(view)
9598
create_list(:user, 5)
9699
data = datatable.as_json
97100
expect(data[:recordsTotal]).to eq 5
@@ -102,7 +105,6 @@
102105

103106
context 'with additional_datas' do
104107
it 'should return a hash' do
105-
datatable = ComplexDatatableHash.new(view)
106108
create_list(:user, 5)
107109
expect(datatable).to receive(:additional_datas){ { foo: 'bar' } }
108110
data = datatable.as_json
@@ -154,34 +156,34 @@
154156
describe '#offset' do
155157
it 'defaults to 0' do
156158
default_view = double('view', params: {})
157-
datatable = AjaxDatatablesRails::Base.new(default_view)
159+
datatable = described_class.new(default_view)
158160
expect(datatable.datatable.send(:offset)).to eq(0)
159161
end
160162

161163
it 'matches the value on view params[:start] minus 1' do
162164
paginated_view = double('view', params: { start: '11' })
163-
datatable = AjaxDatatablesRails::Base.new(paginated_view)
165+
datatable = described_class.new(paginated_view)
164166
expect(datatable.datatable.send(:offset)).to eq(10)
165167
end
166168
end
167169

168170
describe '#page' do
169171
it 'calculates page number from params[:start] and #per_page' do
170172
paginated_view = double('view', params: { start: '11' })
171-
datatable = AjaxDatatablesRails::Base.new(paginated_view)
173+
datatable = described_class.new(paginated_view)
172174
expect(datatable.datatable.send(:page)).to eq(2)
173175
end
174176
end
175177

176178
describe '#per_page' do
177179
it 'defaults to 10' do
178-
datatable = AjaxDatatablesRails::Base.new(view)
180+
datatable = described_class.new(view)
179181
expect(datatable.datatable.send(:per_page)).to eq(10)
180182
end
181183

182184
it 'matches the value on view params[:length]' do
183185
other_view = double('view', params: { length: 20 })
184-
datatable = AjaxDatatablesRails::Base.new(other_view)
186+
datatable = described_class.new(other_view)
185187
expect(datatable.datatable.send(:per_page)).to eq(20)
186188
end
187189
end

0 commit comments

Comments
 (0)
0