ajax-datatables-rails 1.3.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/README.md +15 -15
  4. data/bin/bundle +114 -0
  5. data/doc/migrate.md +1 -1
  6. data/lib/ajax-datatables-rails/base.rb +1 -1
  7. data/lib/ajax-datatables-rails/datatable/column/search.rb +7 -3
  8. data/lib/ajax-datatables-rails/datatable/datatable.rb +0 -1
  9. data/lib/ajax-datatables-rails/version.rb +1 -1
  10. data/spec/ajax-datatables-rails/base_spec.rb +39 -19
  11. data/spec/ajax-datatables-rails/datatable/column_spec.rb +30 -33
  12. data/spec/ajax-datatables-rails/datatable/datatable_spec.rb +11 -9
  13. data/spec/ajax-datatables-rails/datatable/simple_order_spec.rb +4 -2
  14. data/spec/ajax-datatables-rails/datatable/simple_search_spec.rb +4 -2
  15. data/spec/ajax-datatables-rails/orm/active_record_filter_records_spec.rb +61 -94
  16. data/spec/ajax-datatables-rails/orm/active_record_paginate_records_spec.rb +4 -2
  17. data/spec/ajax-datatables-rails/orm/active_record_sort_records_spec.rb +5 -3
  18. data/spec/factories/user.rb +3 -1
  19. data/spec/spec_helper.rb +27 -11
  20. data/spec/support/datatables/complex_datatable.rb +2 -0
  21. data/spec/support/datatables/complex_datatable_array.rb +2 -0
  22. data/spec/support/datatables/datatable_cond_date.rb +2 -0
  23. data/spec/support/datatables/datatable_cond_numeric.rb +2 -0
  24. data/spec/support/datatables/datatable_cond_proc.rb +2 -0
  25. data/spec/support/datatables/datatable_cond_string.rb +4 -2
  26. data/spec/support/datatables/datatable_cond_unknown.rb +2 -0
  27. data/spec/support/datatables/datatable_order_nulls_last.rb +2 -0
  28. data/spec/support/helpers/params.rb +7 -5
  29. data/spec/support/models/user.rb +2 -0
  30. data/spec/support/schema.rb +3 -1
  31. metadata +4 -4
  32. data/spec/ajax-datatables-rails/orm/active_record_spec.rb +0 -24
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c0b5b7242e164445bb1f0faaadadce3cdac7abc9a95ae813f29ff8754eb92060
4
- data.tar.gz: b7551245872059aa1dba5dca216ed54fd5a3852a104e7fa6b5cd88c2e6a301a9
3
+ metadata.gz: c458882fe0c2ff86e0b262ccdc9e37af67c348941f902e29bee7a9ec7b1ad9f0
4
+ data.tar.gz: 9fe38de08324f1f281f5a7c24d3e0c782c71bc741a23ae301952c0ef7bfcbb09
5
5
  SHA512:
6
- metadata.gz: 8715a74263a88667f384069d0975c67ec34b558c61291731f4e440d5e46cd803b3b978667b7dcd9945406abc5651f70254904a9f5c5f64172703f040da7a5dce
7
- data.tar.gz: 93a2dda89e7293509eaf58525e445616b4f62a126d258b567445c4c143a518f7984cdccefc4186912aa64d6d0c49739cb054e26bd34ab9a9119da43f737c61ce
6
+ metadata.gz: 943655268357523c6594845e708f41fbe515284736b1c96d6150514b6c39478d563719c4051c0c3568942e138c1166ab2193cec5585742c1640242a7adbdd381
7
+ data.tar.gz: 6507a0827be528e61dfb07f905b4016d0d65543b19b3becf8d557884890fa88dbdefd815441f0b6f4cc4c784b24ebb58924f0b69357576295138af67cdf7ca78
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 1.3.1 (2021-02-09)
4
+
5
+ * Fix rare case error `uninitialized constant AjaxDatatablesRails::ActiveRecord::Base` (merge: [#379](https://github.com/jbox-web/ajax-datatables-rails/pull/379))
6
+
3
7
  ## 1.3.0 (2021-01-04)
4
8
 
5
9
  * Drop support of Rails 5.0.x and 5.1.x
data/README.md CHANGED
@@ -532,13 +532,13 @@ available in our datatable to search and sort by.
532
532
 
533
533
  def view_columns
534
534
  @view_columns ||= {
535
- first_name: 'User.first_name',
536
- last_name: 'User.last_name',
537
- order_number: 'PurchaseOrder.number',
538
- order_created_at: 'PurchaseOrder.created_at',
539
- quantity: 'Purchase::LineItem.quantity',
540
- unit_price: 'Purchase::LineItem.unit_price',
541
- item_total: 'Purchase::LineItem.item_total'
535
+ first_name: { source: 'User.first_name' },
536
+ last_name: { source: 'User.last_name' },
537
+ order_number: { source: 'PurchaseOrder.number' },
538
+ order_created_at: { source: 'PurchaseOrder.created_at' },
539
+ quantity: { source: 'Purchase::LineItem.quantity' },
540
+ unit_price: { source: 'Purchase::LineItem.unit_price' },
541
+ item_total: { source: 'Purchase::LineItem.item_total }'
542
542
  }
543
543
  end
544
544
  ```
@@ -570,14 +570,14 @@ The related definition would be :
570
570
  ```ruby
571
571
  def view_columns
572
572
  @view_columns ||= {
573
- course_type: 'CourseType.name',
574
- course_name: 'Course.name',
575
- contact_name: 'Contact.full_name',
576
- competency_type: 'CompetencyType.name',
577
- event_title: 'Event.title',
578
- event_start: 'Event.event_start',
579
- event_end: 'Event.event_end',
580
- event_status: 'Event.status',
573
+ course_type: { source: 'CourseType.name' },
574
+ course_name: { source: 'Course.name' },
575
+ contact_name: { source: 'Contact.full_name' },
576
+ competency_type: { source: 'CompetencyType.name' },
577
+ event_title: { source: 'Event.title' },
578
+ event_start: { source: 'Event.event_start' },
579
+ event_end: { source: 'Event.event_end' },
580
+ event_status: { source: 'Event.status' },
581
581
  }
582
582
  end
583
583
 
data/bin/bundle ADDED
@@ -0,0 +1,114 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'bundle' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "rubygems"
12
+
13
+ m = Module.new do
14
+ module_function
15
+
16
+ def invoked_as_script?
17
+ File.expand_path($0) == File.expand_path(__FILE__)
18
+ end
19
+
20
+ def env_var_version
21
+ ENV["BUNDLER_VERSION"]
22
+ end
23
+
24
+ def cli_arg_version
25
+ return unless invoked_as_script? # don't want to hijack other binstubs
26
+ return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update`
27
+ bundler_version = nil
28
+ update_index = nil
29
+ ARGV.each_with_index do |a, i|
30
+ if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN
31
+ bundler_version = a
32
+ end
33
+ next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/
34
+ bundler_version = $1
35
+ update_index = i
36
+ end
37
+ bundler_version
38
+ end
39
+
40
+ def gemfile
41
+ gemfile = ENV["BUNDLE_GEMFILE"]
42
+ return gemfile if gemfile && !gemfile.empty?
43
+
44
+ File.expand_path("../../Gemfile", __FILE__)
45
+ end
46
+
47
+ def lockfile
48
+ lockfile =
49
+ case File.basename(gemfile)
50
+ when "gems.rb" then gemfile.sub(/\.rb$/, gemfile)
51
+ else "#{gemfile}.lock"
52
+ end
53
+ File.expand_path(lockfile)
54
+ end
55
+
56
+ def lockfile_version
57
+ return unless File.file?(lockfile)
58
+ lockfile_contents = File.read(lockfile)
59
+ return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/
60
+ Regexp.last_match(1)
61
+ end
62
+
63
+ def bundler_version
64
+ @bundler_version ||=
65
+ env_var_version || cli_arg_version ||
66
+ lockfile_version
67
+ end
68
+
69
+ def bundler_requirement
70
+ return "#{Gem::Requirement.default}.a" unless bundler_version
71
+
72
+ bundler_gem_version = Gem::Version.new(bundler_version)
73
+
74
+ requirement = bundler_gem_version.approximate_recommendation
75
+
76
+ return requirement unless Gem::Version.new(Gem::VERSION) < Gem::Version.new("2.7.0")
77
+
78
+ requirement += ".a" if bundler_gem_version.prerelease?
79
+
80
+ requirement
81
+ end
82
+
83
+ def load_bundler!
84
+ ENV["BUNDLE_GEMFILE"] ||= gemfile
85
+
86
+ activate_bundler
87
+ end
88
+
89
+ def activate_bundler
90
+ gem_error = activation_error_handling do
91
+ gem "bundler", bundler_requirement
92
+ end
93
+ return if gem_error.nil?
94
+ require_error = activation_error_handling do
95
+ require "bundler/version"
96
+ end
97
+ return if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION))
98
+ warn "Activating bundler (#{bundler_requirement}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_requirement}'`"
99
+ exit 42
100
+ end
101
+
102
+ def activation_error_handling
103
+ yield
104
+ nil
105
+ rescue StandardError, LoadError => e
106
+ e
107
+ end
108
+ end
109
+
110
+ m.load_bundler!
111
+
112
+ if m.invoked_as_script?
113
+ load Gem.bin_path("bundler", "bundle")
114
+ end
data/doc/migrate.md CHANGED
@@ -1,4 +1,4 @@
1
- ## To migrate from `v1.0.x` to `v1.3.0`
1
+ ## To migrate from `v1.x` to `v1.3.0`
2
2
 
3
3
  The *v1.3.0* version has some breaking changes :
4
4
 
@@ -3,7 +3,7 @@
3
3
  module AjaxDatatablesRails
4
4
  class Base
5
5
 
6
- class_attribute :db_adapter, default: ActiveRecord::Base.connection.adapter_name.downcase.to_sym
6
+ class_attribute :db_adapter, default: ::ActiveRecord::Base.connection.adapter_name.downcase.to_sym
7
7
  class_attribute :nulls_last, default: false
8
8
 
9
9
  attr_reader :params, :options, :datatable
@@ -62,11 +62,11 @@ module AjaxDatatablesRails
62
62
  when :eq, :not_eq, :lt, :gt, :lteq, :gteq, :in
63
63
  searchable_integer? ? raw_search(cond) : empty_search
64
64
  when :start_with
65
- casted_column.matches("#{formatted_value}%")
65
+ text_search("#{formatted_value}%")
66
66
  when :end_with
67
- casted_column.matches("%#{formatted_value}")
67
+ text_search("%#{formatted_value}")
68
68
  when :like
69
- casted_column.matches("%#{formatted_value}%")
69
+ text_search("%#{formatted_value}%")
70
70
  when :string_eq
71
71
  raw_search(:eq)
72
72
  when :string_in
@@ -95,6 +95,10 @@ module AjaxDatatablesRails
95
95
  end
96
96
  end
97
97
 
98
+ def text_search(value)
99
+ casted_column.matches(value)
100
+ end
101
+
98
102
  def empty_search
99
103
  casted_column.matches(EMPTY_VALUE)
100
104
  end
@@ -2,7 +2,6 @@
2
2
 
3
3
  module AjaxDatatablesRails
4
4
  module Datatable
5
-
6
5
  class Datatable
7
6
  attr_reader :options
8
7
 
@@ -9,7 +9,7 @@ module AjaxDatatablesRails
9
9
  module VERSION
10
10
  MAJOR = 1
11
11
  MINOR = 3
12
- TINY = 0
12
+ TINY = 1
13
13
  PRE = nil
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
- describe AjaxDatatablesRails::Base do
5
+ RSpec.describe AjaxDatatablesRails::Base do
4
6
 
5
7
  describe 'an instance' do
6
8
  it 'requires a hash of params' do
@@ -15,9 +17,11 @@ describe AjaxDatatablesRails::Base do
15
17
 
16
18
  describe 'User API' do
17
19
  describe '#view_columns' do
18
- it 'raises an error if not defined by the user' do
19
- datatable = described_class.new(sample_params)
20
- expect { datatable.view_columns }.to raise_error NotImplementedError
20
+ context 'when method is not defined by the user' do
21
+ it 'raises an error' do
22
+ datatable = described_class.new(sample_params)
23
+ expect { datatable.view_columns }.to raise_error NotImplementedError
24
+ end
21
25
  end
22
26
 
23
27
  context 'child class implements view_columns' do
@@ -29,22 +33,26 @@ describe AjaxDatatablesRails::Base do
29
33
  end
30
34
 
31
35
  describe '#get_raw_records' do
32
- it 'raises an error if not defined by the user' do
33
- datatable = described_class.new(sample_params)
34
- expect { datatable.get_raw_records }.to raise_error NotImplementedError
36
+ context 'when method is not defined by the user' do
37
+ it 'raises an error' do
38
+ datatable = described_class.new(sample_params)
39
+ expect { datatable.get_raw_records }.to raise_error NotImplementedError
40
+ end
35
41
  end
36
42
  end
37
43
 
38
44
  describe '#data' do
39
- it 'raises an error if not defined by the user' do
40
- datatable = described_class.new(sample_params)
41
- expect { datatable.data }.to raise_error NotImplementedError
45
+ context 'when method is not defined by the user' do
46
+ it 'raises an error' do
47
+ datatable = described_class.new(sample_params)
48
+ expect { datatable.data }.to raise_error NotImplementedError
49
+ end
42
50
  end
43
51
 
44
52
  context 'when data is defined as a hash' do
45
53
  let(:datatable) { ComplexDatatable.new(sample_params) }
46
54
 
47
- it 'should return an array of hashes' do
55
+ it 'returns an array of hashes' do
48
56
  create_list(:user, 5)
49
57
  expect(datatable.data).to be_a(Array)
50
58
  expect(datatable.data.size).to eq 5
@@ -52,7 +60,7 @@ describe AjaxDatatablesRails::Base do
52
60
  expect(item).to be_a(Hash)
53
61
  end
54
62
 
55
- it 'should html escape data' do
63
+ it 'htmls escape data' do
56
64
  create(:user, first_name: 'Name "><img src=x onerror=alert("first_name")>', last_name: 'Name "><img src=x onerror=alert("last_name")>')
57
65
  data = datatable.send(:sanitize_data, datatable.data)
58
66
  item = data.first
@@ -64,7 +72,7 @@ describe AjaxDatatablesRails::Base do
64
72
  context 'when data is defined as a array' do
65
73
  let(:datatable) { ComplexDatatableArray.new(sample_params) }
66
74
 
67
- it 'should return an array of arrays' do
75
+ it 'returns an array of arrays' do
68
76
  create_list(:user, 5)
69
77
  expect(datatable.data).to be_a(Array)
70
78
  expect(datatable.data.size).to eq 5
@@ -72,7 +80,7 @@ describe AjaxDatatablesRails::Base do
72
80
  expect(item).to be_a(Array)
73
81
  end
74
82
 
75
- it 'should html escape data' do
83
+ it 'htmls escape data' do
76
84
  create(:user, first_name: 'Name "><img src=x onerror=alert("first_name")>', last_name: 'Name "><img src=x onerror=alert("last_name")>')
77
85
  data = datatable.send(:sanitize_data, datatable.data)
78
86
  item = data.first
@@ -131,6 +139,18 @@ describe AjaxDatatablesRails::Base do
131
139
  datatable.new(sample_params)
132
140
  end
133
141
 
142
+ describe '#fetch_records' do
143
+ it 'calls #get_raw_records' do
144
+ expect(datatable).to receive(:get_raw_records) { User.all }
145
+ datatable.fetch_records
146
+ end
147
+
148
+ it 'returns a collection of records' do
149
+ expect(datatable).to receive(:get_raw_records) { User.all }
150
+ expect(datatable.fetch_records).to be_a(ActiveRecord::Relation)
151
+ end
152
+ end
153
+
134
154
  describe '#filter_records' do
135
155
  it {
136
156
  expect { datatable.filter_records([]) }.to raise_error(NotImplementedError).with_message('FOO')
@@ -156,7 +176,7 @@ describe AjaxDatatablesRails::Base do
156
176
  describe '#as_json' do
157
177
  let(:datatable) { ComplexDatatable.new(sample_params) }
158
178
 
159
- it 'should return a hash' do
179
+ it 'returns a hash' do
160
180
  create_list(:user, 5)
161
181
  data = datatable.as_json
162
182
  expect(data[:recordsTotal]).to eq 5
@@ -166,9 +186,9 @@ describe AjaxDatatablesRails::Base do
166
186
  end
167
187
 
168
188
  context 'with additional_data' do
169
- it 'should return a hash' do
189
+ it 'returns a hash' do
170
190
  create_list(:user, 5)
171
- expect(datatable).to receive(:additional_data){ { foo: 'bar' } }
191
+ expect(datatable).to receive(:additional_data) { { foo: 'bar' } }
172
192
  data = datatable.as_json
173
193
  expect(data[:recordsTotal]).to eq 5
174
194
  expect(data[:recordsFiltered]).to eq 5
@@ -184,7 +204,7 @@ describe AjaxDatatablesRails::Base do
184
204
  describe '#column_id' do
185
205
  let(:datatable) { ComplexDatatable.new(sample_params) }
186
206
 
187
- it 'should return column id from view_columns hash' do
207
+ it 'returns column id from view_columns hash' do
188
208
  expect(datatable.column_id(:username)).to eq(0)
189
209
  expect(datatable.column_id('username')).to eq(0)
190
210
  end
@@ -194,7 +214,7 @@ describe AjaxDatatablesRails::Base do
194
214
  let(:datatable) { ComplexDatatable.new(sample_params) }
195
215
  before { datatable.params[:columns]['0'][:search][:value] = 'doe' }
196
216
 
197
- it 'should return column data from params' do
217
+ it 'returns column data from params' do
198
218
  expect(datatable.column_data(:username)).to eq('doe')
199
219
  expect(datatable.column_data('username')).to eq('doe')
200
220
  end
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
- describe AjaxDatatablesRails::Datatable::Column do
5
+ RSpec.describe AjaxDatatablesRails::Datatable::Column do
4
6
 
5
7
  let(:datatable) { ComplexDatatable.new(sample_params) }
6
8
 
@@ -8,50 +10,49 @@ describe AjaxDatatablesRails::Datatable::Column do
8
10
 
9
11
  let(:column) { datatable.datatable.columns.first }
10
12
 
11
- before do
12
- datatable.params[:columns] = {'0'=>{'data'=>'username', 'name'=>'', 'searchable'=>'true', 'orderable'=>'true', 'search'=>{'value'=>'searchvalue', 'regex'=>'false'}}}
13
- end
13
+ before { datatable.params[:columns]['0'][:search][:value] = 'searchvalue' }
14
14
 
15
- it 'should be orderable' do
15
+ it 'is orderable' do
16
16
  expect(column.orderable?).to eq(true)
17
17
  end
18
18
 
19
- it 'should sort nulls last' do
19
+ it 'sorts nulls last' do
20
20
  expect(column.nulls_last?).to eq(false)
21
21
  end
22
22
 
23
- it 'should be searchable' do
23
+ it 'is searchable' do
24
24
  expect(column.searchable?).to eq(true)
25
25
  end
26
26
 
27
- it 'should be searched' do
27
+ it 'is searched' do
28
28
  expect(column.searched?).to eq(true)
29
29
  end
30
30
 
31
- it 'should have connected to id column' do
31
+ it 'has connected to id column' do
32
32
  expect(column.data).to eq('username')
33
33
  end
34
34
 
35
35
  describe '#data' do
36
- it 'should return the data from params' do
36
+ it 'returns the data from params' do
37
37
  expect(column.data).to eq 'username'
38
38
  end
39
39
  end
40
40
 
41
41
  describe '#source' do
42
- it 'should return the data source from view_column' do
42
+ it 'returns the data source from view_column' do
43
43
  expect(column.source).to eq 'User.username'
44
44
  end
45
45
  end
46
46
 
47
47
  describe '#table' do
48
48
  context 'with ActiveRecord ORM' do
49
- it 'should return the corresponding AR table' do
49
+ it 'returns the corresponding AR table' do
50
50
  expect(column.table).to eq User.arel_table
51
51
  end
52
52
  end
53
+
53
54
  context 'with other ORM' do
54
- it 'should return the corresponding model' do
55
+ it 'returns the corresponding model' do
55
56
  expect(User).to receive(:respond_to?).with(:arel_table).and_return(false)
56
57
  expect(column.table).to eq User
57
58
  end
@@ -59,19 +60,19 @@ describe AjaxDatatablesRails::Datatable::Column do
59
60
  end
60
61
 
61
62
  describe '#model' do
62
- it 'should return the corresponding AR model' do
63
+ it 'returns the corresponding AR model' do
63
64
  expect(column.model).to eq User
64
65
  end
65
66
  end
66
67
 
67
68
  describe '#field' do
68
- it 'should return the corresponding field in DB' do
69
+ it 'returns the corresponding field in DB' do
69
70
  expect(column.field).to eq :username
70
71
  end
71
72
  end
72
73
 
73
74
  describe '#custom_field?' do
74
- it 'should return false if field is bound to an AR field' do
75
+ it 'returns false if field is bound to an AR field' do
75
76
  expect(column.custom_field?).to be false
76
77
  end
77
78
  end
@@ -81,47 +82,47 @@ describe AjaxDatatablesRails::Datatable::Column do
81
82
  expect(column.search).to be_a(AjaxDatatablesRails::Datatable::SimpleSearch)
82
83
  end
83
84
 
84
- it 'should have search value' do
85
+ it 'has search value' do
85
86
  expect(column.search.value).to eq('searchvalue')
86
87
  end
87
88
 
88
- it 'should not regex' do
89
+ it 'does not regex' do
89
90
  expect(column.search.regexp?).to eq false
90
91
  end
91
92
  end
92
93
 
93
94
  describe '#cond' do
94
- it 'should be :like by default' do
95
+ it 'is :like by default' do
95
96
  expect(column.cond).to eq(:like)
96
97
  end
97
98
  end
98
99
 
99
100
  describe '#source' do
100
- it 'should be :like by default' do
101
+ it 'is :like by default' do
101
102
  expect(column.source).to eq('User.username')
102
103
  end
103
104
  end
104
105
 
105
106
  describe '#search_query' do
106
- it 'should buld search query' do
107
+ it 'bulds search query' do
107
108
  expect(column.search_query.to_sql).to include('%searchvalue%')
108
109
  end
109
110
  end
110
111
 
111
112
  describe '#sort_query' do
112
- it 'should build sort query' do
113
+ it 'builds sort query' do
113
114
  expect(column.sort_query).to eq('users.username')
114
115
  end
115
116
  end
116
117
 
117
118
  describe '#use_regex?' do
118
- it 'should be true by default' do
119
+ it 'is true by default' do
119
120
  expect(column.use_regex?).to be true
120
121
  end
121
122
  end
122
123
 
123
124
  describe '#delimiter' do
124
- it 'should be - by default' do
125
+ it 'is - by default' do
125
126
  expect(column.delimiter).to eq('-')
126
127
  end
127
128
  end
@@ -131,7 +132,7 @@ describe AjaxDatatablesRails::Datatable::Column do
131
132
  let(:datatable) { DatatableWithFormater.new(sample_params) }
132
133
  let(:column) { datatable.datatable.columns.find { |c| c.data == 'last_name' } }
133
134
 
134
- it 'should be a proc' do
135
+ it 'is a proc' do
135
136
  expect(column.formatter).to be_a(Proc)
136
137
  end
137
138
  end
@@ -140,7 +141,7 @@ describe AjaxDatatablesRails::Datatable::Column do
140
141
  let(:datatable) { DatatableCondProc.new(sample_params) }
141
142
  let(:column) { datatable.datatable.columns.find { |c| c.data == 'username' } }
142
143
 
143
- it 'should be a proc' do
144
+ it 'is a proc' do
144
145
  config = column.instance_variable_get('@view_column')
145
146
  filter = config[:cond]
146
147
  expect(filter).to be_a(Proc)
@@ -204,19 +205,15 @@ describe AjaxDatatablesRails::Datatable::Column do
204
205
  end
205
206
 
206
207
  describe 'when empty column' do
207
- before do
208
- datatable.params[:columns] = {'0'=>{'data'=>'', 'name'=>'', 'searchable'=>'true', 'orderable'=>'true', 'search'=>{'value'=>'searchvalue', 'regex'=>'false'}}}
209
- end
208
+ before { datatable.params[:columns]['0'][:data] = '' }
210
209
 
211
210
  it 'raises error' do
212
- 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")
211
+ 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')
213
212
  end
214
213
  end
215
214
 
216
215
  describe 'when unknown column' do
217
- before do
218
- datatable.params[:columns] = {'0'=>{'data'=>'foo', 'name'=>'', 'searchable'=>'true', 'orderable'=>'true', 'search'=>{'value'=>'searchvalue', 'regex'=>'false'}}}
219
- end
216
+ before { datatable.params[:columns]['0'][:data] = 'foo' }
220
217
 
221
218
  it 'raises error' do
222
219
  expect { datatable.to_json }.to raise_error(AjaxDatatablesRails::Error::InvalidSearchColumn).with_message("Check that column 'foo' exists in view_columns")