data_tables 0.1.18 → 0.1.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/data_tables.gemspec +1 -1
- data/lib/data_tables.rb +7 -4
- data/spec/data_tables_spec.rb +63 -25
- data/spec/models/condition_model.rb +17 -1
- data/spec/spec_helper.rb +2 -2
- metadata +7 -7
data/data_tables.gemspec
CHANGED
data/lib/data_tables.rb
CHANGED
@@ -313,12 +313,12 @@ module DataTablesController
|
|
313
313
|
|
314
314
|
if named_scope
|
315
315
|
objects = modelCls.send(named_scope, *args).paginate(:page => current_page,
|
316
|
-
:order => order,
|
316
|
+
:order => order,
|
317
317
|
:conditions => conditions.join(" AND "),
|
318
318
|
:per_page => params[:iDisplayLength])
|
319
319
|
else
|
320
320
|
objects = modelCls.paginate(:page => current_page,
|
321
|
-
:order => order,
|
321
|
+
:order => order,
|
322
322
|
:conditions => conditions.join(" AND "),
|
323
323
|
:per_page => params[:iDisplayLength])
|
324
324
|
end
|
@@ -388,8 +388,11 @@ module DataTablesController
|
|
388
388
|
end
|
389
389
|
elsif column[:attribute]
|
390
390
|
val = instance.send(column[:attribute].to_sym)
|
391
|
-
|
392
|
-
|
391
|
+
if !val.blank? || val == false
|
392
|
+
return I18n.t(val.to_s.to_sym, :default => val.to_s)
|
393
|
+
else
|
394
|
+
return ''
|
395
|
+
end
|
393
396
|
end
|
394
397
|
return "value not found"
|
395
398
|
end
|
data/spec/data_tables_spec.rb
CHANGED
@@ -1,15 +1,18 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe 'data_tables' do
|
4
|
+
|
4
5
|
before :each do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
[ExceptOptionController, SearchTypeController].each do |controller|
|
7
|
+
if DEBUG
|
8
|
+
controller.any_instance.stub_chain(:logger, :debug){ |*args| puts args.first }
|
9
|
+
controller.any_instance.stub_chain(:logger, :info){ |*args| puts args.first }
|
10
|
+
else
|
11
|
+
controller.any_instance.stub(:logger).and_return(double("Logger").as_null_object)
|
12
|
+
end
|
13
|
+
controller.any_instance.stub(:params).and_return({iSortCol_0: 1})
|
14
|
+
controller.any_instance.stub(:render)
|
10
15
|
end
|
11
|
-
ExceptOptionController.any_instance.stub(:params).and_return({})
|
12
|
-
ExceptOptionController.any_instance.stub(:render)
|
13
16
|
ActiveRecord::Base.stub_chain(:connection, :schema_search_path).and_return("public")
|
14
17
|
end
|
15
18
|
|
@@ -32,29 +35,64 @@ describe 'data_tables' do
|
|
32
35
|
end
|
33
36
|
|
34
37
|
let(:instance){ExceptOptionController.new.dummy_class_source}
|
38
|
+
let(:search_type_instance){SearchTypeController.new.search_type_class_source}
|
35
39
|
let(:index_name){ "#{Tire::Model::Search.index_prefix}dummy_class" }
|
36
40
|
|
37
|
-
context "
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
arg = JSON.parse(args.first[:text])
|
49
|
-
arg[k].should == v
|
50
|
-
end
|
51
|
-
instance
|
41
|
+
context "total records" do
|
42
|
+
{"iTotalDisplayRecords" => 2, "iTotalRecords" => 2}.each do |k,v|
|
43
|
+
it "respects datatables' except to calculate #{k} (#{v})" do
|
44
|
+
data = [{ id: 5002, name: 'not_valid', domain: 'public' },
|
45
|
+
{ id: 561, name: 'Native AP VLAN', domain: 'public' },
|
46
|
+
{ id: 56, name: 'valid', domain: 'public' }]
|
47
|
+
save_elasticsearch(index_name, data)
|
48
|
+
|
49
|
+
ExceptOptionController.any_instance.should_receive(:render) do |*args|
|
50
|
+
arg = JSON.parse(args.first[:text])
|
51
|
+
arg[k].should == v
|
52
52
|
end
|
53
|
+
instance
|
53
54
|
end
|
54
55
|
end
|
55
56
|
end
|
56
|
-
|
57
|
-
|
58
|
-
|
57
|
+
|
58
|
+
context "mapping types sorting" do
|
59
|
+
before do
|
60
|
+
@data = %w[192.168.102.36:10.0.0.30 192.168.102.30 192.168.102.47]
|
61
|
+
SearchTypeClass.index.delete
|
62
|
+
SearchTypeClass.create_elasticsearch_index
|
63
|
+
@data.each do |d|
|
64
|
+
SearchTypeClass.create ipaddr: d, domain: :public
|
65
|
+
end
|
66
|
+
index_name = SearchTypeClass.index_name
|
67
|
+
Tire.index(index_name){refresh}
|
68
|
+
end
|
69
|
+
|
70
|
+
it "sorts IP addresses asc correctly" do
|
71
|
+
SearchTypeController.any_instance.stub(:params).and_return({
|
72
|
+
iSortCol_0: 0,
|
73
|
+
sSortDir_0: 'asc'
|
74
|
+
})
|
75
|
+
|
76
|
+
SearchTypeController.any_instance.should_receive(:render) do |*args|
|
77
|
+
data = JSON.parse(args.first[:text])["aaData"]
|
78
|
+
ips = data.map{|i| i[0]}
|
79
|
+
ips.should == @data.sort
|
80
|
+
end
|
81
|
+
search_type_instance
|
82
|
+
end
|
83
|
+
|
84
|
+
it "sorts IP addresses desc correctly" do
|
85
|
+
SearchTypeController.any_instance.stub(:params).and_return({
|
86
|
+
iSortCol_0: 0,
|
87
|
+
sSortDir_0: 'desc'
|
88
|
+
})
|
89
|
+
|
90
|
+
SearchTypeController.any_instance.should_receive(:render) do |*args|
|
91
|
+
data = JSON.parse(args.first[:text])["aaData"]
|
92
|
+
ips = data.map{|i| i[0]}
|
93
|
+
ips.should == @data.sort.reverse
|
94
|
+
end
|
95
|
+
search_type_instance
|
96
|
+
end
|
59
97
|
end
|
60
98
|
end
|
@@ -1,6 +1,15 @@
|
|
1
1
|
class DummyClass < Ohm::Model
|
2
2
|
end
|
3
3
|
|
4
|
+
class SearchTypeClass
|
5
|
+
include Tire::Model::Search
|
6
|
+
include Tire::Model::Persistence
|
7
|
+
|
8
|
+
property :name, type: 'string'
|
9
|
+
property :ipaddr, type: 'string', index: 'not_analyzed'
|
10
|
+
property :domain, type: 'string'
|
11
|
+
end
|
12
|
+
|
4
13
|
class ConditionModel
|
5
14
|
include DataTablesController
|
6
15
|
datatables_source(:dummy_class_source, :dummy_class,
|
@@ -22,4 +31,11 @@ class ExceptOptionController
|
|
22
31
|
{:name =>"Access Points",
|
23
32
|
:method => :location_statuses_accesspoint_list}
|
24
33
|
],:except => [['name','Native AP VLAN']])
|
25
|
-
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class SearchTypeController
|
37
|
+
include DataTablesController
|
38
|
+
datatables_source(:search_type_class_source, :search_type_class,
|
39
|
+
:columns => [:ipaddr, :name],
|
40
|
+
:conditions => ['id!=5002',"name!= 'Native AP VLAN'"])
|
41
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -11,7 +11,7 @@ Dir[File.join(APP_ROOT, "spec/models/*.rb")].each {|f| require f}
|
|
11
11
|
|
12
12
|
DEBUG = false
|
13
13
|
|
14
|
-
Tire.configure { logger STDOUT } if DEBUG
|
14
|
+
Tire.configure { logger STDOUT, level: :debug } if DEBUG
|
15
15
|
Tire::Model::Search.index_prefix('test_datatable_')
|
16
16
|
|
17
17
|
RSpec.configure do |config|
|
@@ -21,4 +21,4 @@ RSpec.configure do |config|
|
|
21
21
|
config.after(:each) do
|
22
22
|
#Tire.index("#{Tire::Model::Search.index_prefix}*"){delete}
|
23
23
|
end
|
24
|
-
end
|
24
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: data_tables
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.19
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Duane Compton
|
@@ -13,19 +13,19 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2013-11-
|
16
|
+
date: 2013-11-22 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
type: :development
|
20
|
-
|
20
|
+
name: rspec
|
21
|
+
prerelease: false
|
22
|
+
requirement: !ruby/object:Gem::Requirement
|
21
23
|
requirements:
|
22
24
|
- - ~>
|
23
25
|
- !ruby/object:Gem::Version
|
24
26
|
version: '2.10'
|
25
27
|
none: false
|
26
|
-
|
27
|
-
name: rspec
|
28
|
-
requirement: !ruby/object:Gem::Requirement
|
28
|
+
version_requirements: !ruby/object:Gem::Requirement
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
31
31
|
- !ruby/object:Gem::Version
|
@@ -74,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
74
|
none: false
|
75
75
|
requirements: []
|
76
76
|
rubyforge_project:
|
77
|
-
rubygems_version: 1.8.
|
77
|
+
rubygems_version: 1.8.24
|
78
78
|
signing_key:
|
79
79
|
specification_version: 3
|
80
80
|
summary: Rails friendly interface into DataTables
|