tableficate 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +6 -4
- data/app/views/tableficate/_data.html.erb +7 -1
- data/app/views/tableficate/_header.html.erb +2 -2
- data/app/views/tableficate/_table.html.erb +16 -23
- data/app/views/tableficate/_table_for.html.erb +9 -0
- data/app/views/tableficate/filters/_check_box_choice.html.erb +3 -0
- data/app/views/tableficate/filters/_form.html.erb +16 -0
- data/app/views/tableficate/filters/_radio_choice.html.erb +3 -0
- data/changelog.markdown +17 -0
- data/lib/generators/tableficate/theme/theme_generator.rb +17 -1
- data/lib/tableficate.rb +3 -0
- data/lib/tableficate/action_column.rb +2 -2
- data/lib/tableficate/caption.rb +29 -0
- data/lib/tableficate/column.rb +13 -7
- data/lib/tableficate/empty.rb +34 -0
- data/lib/tableficate/filters/base.rb +7 -5
- data/lib/tableficate/filters/check_box.rb +1 -1
- data/lib/tableficate/filters/choice.rb +2 -2
- data/lib/tableficate/filters/collection_base.rb +13 -0
- data/lib/tableficate/filters/input.rb +2 -2
- data/lib/tableficate/filters/input_range.rb +6 -6
- data/lib/tableficate/filters/radio.rb +1 -1
- data/lib/tableficate/filters/select.rb +1 -1
- data/lib/tableficate/filters/select_range.rb +4 -4
- data/lib/tableficate/finder.rb +70 -28
- data/lib/tableficate/helper.rb +44 -47
- data/lib/tableficate/table.rb +64 -24
- data/lib/tableficate/utils.rb +27 -2
- data/lib/tableficate/version.rb +1 -1
- data/spec/action_column_spec.rb +9 -1
- data/spec/base_spec.rb +10 -0
- data/spec/caption_spec.rb +33 -0
- data/spec/column_spec.rb +29 -0
- data/spec/empty_spec.rb +45 -0
- data/spec/filters/base_spec.rb +6 -5
- data/spec/filters/choice_spec.rb +5 -2
- data/spec/filters/collection_spec.rb +4 -4
- data/spec/filters/input_range_spec.rb +10 -8
- data/spec/filters/select_range_spec.rb +79 -0
- data/spec/finder_spec.rb +48 -1
- data/spec/generators/tableficate_theme_spec.rb +14 -0
- data/spec/table_spec.rb +114 -3
- data/spec/test_app/app/controllers/filters_controller.rb +1 -1
- data/spec/test_app/app/controllers/tests_controller.rb +5 -0
- data/spec/test_app/app/controllers/themes_controller.rb +7 -0
- data/spec/test_app/app/views/filters/html5_input_types.html.erb +31 -0
- data/spec/test_app/app/views/tableficate/custom_check_box_block/filters/_check_box_choice.html.erb +2 -0
- data/spec/test_app/app/views/tableficate/custom_radio_block/filters/_radio_choice.html.erb +2 -0
- data/spec/test_app/app/views/tests/index.html.erb +13 -0
- data/spec/test_app/app/views/themes/caption.html.erb +9 -0
- data/spec/test_app/app/views/themes/column_attrs.html.erb +7 -0
- data/spec/test_app/app/views/themes/column_cell_attrs.html.erb +7 -0
- data/spec/test_app/app/views/themes/column_cell_attrs_with_proc.html.erb +7 -0
- data/spec/test_app/app/views/themes/column_header_attrs.html.erb +7 -0
- data/spec/test_app/app/views/themes/empty_with_data.html.erb +9 -0
- data/spec/test_app/app/views/themes/empty_with_no_data.html.erb +9 -0
- data/spec/test_app/app/views/themes/no_caption.html.erb +7 -0
- data/spec/test_app/app/views/themes/no_column_attrs.html.erb +7 -0
- data/spec/test_app/config/application.rb +1 -1
- data/spec/test_app/config/routes.rb +2 -0
- data/spec/test_app/db/migrate/20111227224959_additional_columns.rb +73 -0
- data/spec/test_app/db/migrate/20111230203456_created_at_specific_dates.rb +11 -0
- data/spec/test_app/db/schema.rb +10 -3
- data/spec/test_app/db/test.sqlite3 +0 -0
- data/spec/theme/caption_spec.rb +15 -0
- data/spec/theme/column_spec.rb +35 -0
- data/spec/theme/empty_spec.rb +15 -0
- data/spec/utils_spec.rb +44 -4
- metadata +69 -58
- data/spec/test_app/app/views/tableficate/custom_check_box_block/_data.html.erb +0 -1
- data/spec/test_app/app/views/tableficate/custom_check_box_block/_header.html.erb +0 -8
- data/spec/test_app/app/views/tableficate/custom_check_box_block/_row.html.erb +0 -5
- data/spec/test_app/app/views/tableficate/custom_check_box_block/_table.html.erb +0 -36
- data/spec/test_app/app/views/tableficate/custom_check_box_block/filters/_check_box.html.erb +0 -7
- data/spec/test_app/app/views/tableficate/custom_check_box_block/filters/_input.html.erb +0 -4
- data/spec/test_app/app/views/tableficate/custom_check_box_block/filters/_input_range.html.erb +0 -6
- data/spec/test_app/app/views/tableficate/custom_check_box_block/filters/_radio.html.erb +0 -4
- data/spec/test_app/app/views/tableficate/custom_check_box_block/filters/_select.html.erb +0 -4
- data/spec/test_app/app/views/tableficate/custom_check_box_block/filters/_select_range_filter.html.erb +0 -6
- data/spec/test_app/app/views/tableficate/custom_radio_block/_data.html.erb +0 -1
- data/spec/test_app/app/views/tableficate/custom_radio_block/_header.html.erb +0 -8
- data/spec/test_app/app/views/tableficate/custom_radio_block/_row.html.erb +0 -5
- data/spec/test_app/app/views/tableficate/custom_radio_block/_table.html.erb +0 -36
- data/spec/test_app/app/views/tableficate/custom_radio_block/filters/_check_box.html.erb +0 -4
- data/spec/test_app/app/views/tableficate/custom_radio_block/filters/_input.html.erb +0 -4
- data/spec/test_app/app/views/tableficate/custom_radio_block/filters/_input_range.html.erb +0 -6
- data/spec/test_app/app/views/tableficate/custom_radio_block/filters/_radio.html.erb +0 -7
- data/spec/test_app/app/views/tableficate/custom_radio_block/filters/_select.html.erb +0 -4
- data/spec/test_app/app/views/tableficate/custom_radio_block/filters/_select_range_filter.html.erb +0 -6
- data/spec/test_app/public/index.html +0 -241
data/spec/filters/base_spec.rb
CHANGED
@@ -4,24 +4,25 @@ describe Tableficate::Filter::Base do
|
|
4
4
|
before(:all) do
|
5
5
|
@table = Tableficate::Table.new(nil, NobelPrizeWinner.limit(1), {}, {})
|
6
6
|
@table.column(:first_name, header: 'Given Name')
|
7
|
+
@first_name_filter = Tableficate::Filter::Base.new(@table, :first_name)
|
7
8
|
end
|
8
9
|
|
9
10
|
it 'should find the correct template type' do
|
10
|
-
|
11
|
+
@first_name_filter.template.should == 'filters/base'
|
11
12
|
end
|
12
13
|
|
13
14
|
it 'should use the provided label or default to the column header' do
|
14
|
-
|
15
|
+
@first_name_filter.label.should == 'Given Name'
|
15
16
|
Tableficate::Filter::Base.new(@table, :first_name, label: 'First').label.should == 'First'
|
16
17
|
end
|
17
18
|
|
18
19
|
it 'should provide a field name' do
|
19
|
-
|
20
|
+
@first_name_filter.field_name.should == "#{@table.as}[filter][first_name]"
|
20
21
|
end
|
21
22
|
|
22
23
|
it 'should provide a field value when given params or a blank value' do
|
23
|
-
|
24
|
-
|
24
|
+
@first_name_filter.field_value({filter: {first_name: 'Aaron'}}).should == 'Aaron'
|
25
|
+
@first_name_filter.field_value({}).should == ''
|
25
26
|
end
|
26
27
|
|
27
28
|
it 'should allow for filters that do not match a particular field' do
|
data/spec/filters/choice_spec.rb
CHANGED
@@ -4,10 +4,13 @@ describe Tableficate::Filter::Choice do
|
|
4
4
|
it 'should mark a choice as selected if it has a :selected or :checked option' do
|
5
5
|
choice = Tableficate::Filter::Choice.new('foo', 'bar', {selected: 'selected'})
|
6
6
|
choice.selected?.should be true
|
7
|
-
choice.
|
7
|
+
choice.attrs[:selected].should be nil
|
8
|
+
|
9
|
+
choice = Tableficate::Filter::Choice.new('foo', 'bar')
|
10
|
+
choice.selected?.should be false
|
8
11
|
|
9
12
|
choice = Tableficate::Filter::Choice.new('foo', 'bar', {checked: 'checked'})
|
10
13
|
choice.checked?.should be true
|
11
|
-
choice.
|
14
|
+
choice.attrs[:checked].should be nil
|
12
15
|
end
|
13
16
|
end
|
@@ -75,9 +75,9 @@ describe Tableficate::Filter::Collection do
|
|
75
75
|
|
76
76
|
1.upto(3) do |i|
|
77
77
|
if i == 2
|
78
|
-
collection[i - 1].
|
78
|
+
collection[i - 1].attrs[:disabled].should == 'disabled'
|
79
79
|
else
|
80
|
-
collection[i - 1].
|
80
|
+
collection[i - 1].attrs.has_key?(:disabled).should be false
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
@@ -85,9 +85,9 @@ describe Tableficate::Filter::Collection do
|
|
85
85
|
|
86
86
|
1.upto(3) do |i|
|
87
87
|
if i == 2 or i == 3
|
88
|
-
collection[i - 1].
|
88
|
+
collection[i - 1].attrs[:disabled].should == 'disabled'
|
89
89
|
else
|
90
|
-
collection[i - 1].
|
90
|
+
collection[i - 1].attrs.has_key?(:disabled).should be false
|
91
91
|
end
|
92
92
|
end
|
93
93
|
end
|
@@ -7,19 +7,20 @@ describe Tableficate::Filter::InputStart do
|
|
7
7
|
template.lookup_context.stub!(:exists?).and_return(true)
|
8
8
|
@table = Tableficate::Table.new(template, NobelPrizeWinner.joins(:nobel_prizes).limit(1), {}, {})
|
9
9
|
@table.column(:year)
|
10
|
+
@input_start_filter = Tableficate::Filter::InputStart.new(@table, :year)
|
10
11
|
end
|
11
12
|
|
12
13
|
it 'should append "[start]" to field_name' do
|
13
|
-
|
14
|
+
@input_start_filter.field_name == "#{@table.as}[filter][year][start]"
|
14
15
|
end
|
15
16
|
|
16
17
|
it 'should append "_start" to the name' do
|
17
|
-
|
18
|
+
@input_start_filter.name == :year_start
|
18
19
|
end
|
19
20
|
|
20
21
|
it 'should provide a field value when given params or a blank value' do
|
21
|
-
|
22
|
-
|
22
|
+
@input_start_filter.field_value({filter: {year: {start: '2011'}}}).should == '2011'
|
23
|
+
@input_start_filter.field_value({}).should == ''
|
23
24
|
end
|
24
25
|
end
|
25
26
|
|
@@ -30,19 +31,20 @@ describe Tableficate::Filter::InputStop do
|
|
30
31
|
template.lookup_context.stub!(:exists?).and_return(true)
|
31
32
|
@table = Tableficate::Table.new(template, NobelPrizeWinner.joins(:nobel_prizes).limit(1), {}, {})
|
32
33
|
@table.column(:year)
|
34
|
+
@input_stop_filter = Tableficate::Filter::InputStop.new(@table, :year)
|
33
35
|
end
|
34
36
|
|
35
37
|
it 'should append "[stop]" to field_name' do
|
36
|
-
|
38
|
+
@input_stop_filter.field_name == "#{@table.as}[filter][year][stop]"
|
37
39
|
end
|
38
40
|
|
39
41
|
it 'should append "_stop" to the name' do
|
40
|
-
|
42
|
+
@input_stop_filter.name == :year_stop
|
41
43
|
end
|
42
44
|
|
43
45
|
it 'should provide a field value when given params or a blank value' do
|
44
|
-
|
45
|
-
|
46
|
+
@input_stop_filter.field_value({filter: {year: {stop: '2011'}}}).should == '2011'
|
47
|
+
@input_stop_filter.field_value({}).should == ''
|
46
48
|
end
|
47
49
|
end
|
48
50
|
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Tableficate::Filter::SelectStart do
|
4
|
+
before(:each) do
|
5
|
+
template = mock('Template')
|
6
|
+
template.stub!(:lookup_context).and_return(ActionView::LookupContext.new([]))
|
7
|
+
template.lookup_context.stub!(:exists?).and_return(true)
|
8
|
+
@table = Tableficate::Table.new(template, NobelPrizeWinner.joins(:nobel_prizes).limit(1), {}, {})
|
9
|
+
@table.column(:year)
|
10
|
+
@select_start_filter = Tableficate::Filter::SelectStart.new(@table, :year, collection: 1900..2000)
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should append "[start]" to field_name' do
|
14
|
+
@select_start_filter.field_name == "#{@table.as}[filter][year][start]"
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should append "_start" to the name' do
|
18
|
+
@select_start_filter.name == :year_start
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should provide a field value when given params or a blank value' do
|
22
|
+
@select_start_filter.field_value({filter: {year: {start: '1911'}}}).should == '1911'
|
23
|
+
@select_start_filter.field_value({}).should == ''
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe Tableficate::Filter::SelectStop do
|
28
|
+
before(:each) do
|
29
|
+
template = mock('Template')
|
30
|
+
template.stub!(:lookup_context).and_return(ActionView::LookupContext.new([]))
|
31
|
+
template.lookup_context.stub!(:exists?).and_return(true)
|
32
|
+
@table = Tableficate::Table.new(template, NobelPrizeWinner.joins(:nobel_prizes).limit(1), {}, {})
|
33
|
+
@table.column(:year)
|
34
|
+
@select_stop_filter = Tableficate::Filter::SelectStop.new(@table, :year, collection: 1900..2000)
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should append "[stop]" to field_name' do
|
38
|
+
@select_stop_filter.field_name == "#{@table.as}[filter][year][stop]"
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should append "_stop" to the name' do
|
42
|
+
@select_stop_filter.name == :year_stop
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'should provide a field value when given params or a blank value' do
|
46
|
+
@select_stop_filter.field_value({filter: {year: {stop: '1911'}}}).should == '1911'
|
47
|
+
@select_stop_filter.field_value({}).should == ''
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe Tableficate::Filter::SelectRange do
|
52
|
+
before(:each) do
|
53
|
+
template = mock('Template')
|
54
|
+
template.stub!(:lookup_context).and_return(ActionView::LookupContext.new([]))
|
55
|
+
@table = Tableficate::Table.new(template, NobelPrizeWinner.joins(:nobel_prizes).limit(1), {}, {})
|
56
|
+
@table.column(:year)
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'should create a start and stop select' do
|
60
|
+
@table.template.lookup_context.stub!(:exists?).and_return(true)
|
61
|
+
|
62
|
+
filter = Tableficate::Filter::SelectRange.new(@table, :year, collection: 1900..2000)
|
63
|
+
|
64
|
+
filter.start.is_a?(Tableficate::Filter::SelectStart).should be true
|
65
|
+
filter.stop.is_a?(Tableficate::Filter::SelectStop).should be true
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'should use the :start and :stop option hashes for the individual filters and default any values not passed to the range options provided' do
|
69
|
+
@table.template.lookup_context.stub!(:exists?).and_return(true)
|
70
|
+
|
71
|
+
filter = Tableficate::Filter::SelectRange.new(@table, :year, label: 'Nobel Prize Won In', collection: 1900..2000)
|
72
|
+
filter.start.label.should == 'Nobel Prize Won In'
|
73
|
+
filter.stop.label.should == 'Nobel Prize Won In'
|
74
|
+
|
75
|
+
filter = Tableficate::Filter::SelectRange.new(@table, :year, label: 'Nobel Prize Won In', start: {label: 'Nobel Prize Won Between'}, stop: {label: 'and'}, collection: 1900..2000)
|
76
|
+
filter.start.label.should == 'Nobel Prize Won Between'
|
77
|
+
filter.stop.label.should == 'and'
|
78
|
+
end
|
79
|
+
end
|
data/spec/finder_spec.rb
CHANGED
@@ -2,21 +2,43 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Tableficate::Finder do
|
4
4
|
it 'should filter based on single input passed in' do
|
5
|
-
# exact
|
5
|
+
# exact match
|
6
6
|
npw = NobelPrizeWinner.tableficate({filter: {first_name: 'Albert'}})
|
7
7
|
npw.size.should == 1
|
8
8
|
npw.first.first_name.should == 'Albert'
|
9
9
|
npw = NobelPrizeWinner.tableficate({filter: {first_name: 'Al'}})
|
10
10
|
npw.size.should == 0
|
11
|
+
|
12
|
+
# contains match
|
13
|
+
class ContainsNobelPrizeWinner < Tableficate::Base
|
14
|
+
scope :nobel_prize_winner
|
15
|
+
|
16
|
+
filter(:first_name, match: 'contains')
|
17
|
+
end
|
18
|
+
npw = ContainsNobelPrizeWinner.tableficate({filter: {first_name: 'Al'}})
|
19
|
+
npw.size.should == 1
|
20
|
+
npw.first.first_name.should == 'Albert'
|
11
21
|
end
|
12
22
|
|
13
23
|
it 'should filter based on multiple inputs passed in' do
|
24
|
+
# exact match
|
14
25
|
npw = NobelPrizeWinner.tableficate({filter: {first_name: ['Albert', 'Marie']}})
|
15
26
|
npw.size.should == 2
|
16
27
|
npw.first.first_name.should == 'Albert'
|
17
28
|
npw.last.first_name.should == 'Marie'
|
18
29
|
npw = NobelPrizeWinner.tableficate({filter: {first_name: ['Al', 'Mar']}})
|
19
30
|
npw.size.should == 0
|
31
|
+
|
32
|
+
# contains match
|
33
|
+
class ContainsNobelPrizeWinner < Tableficate::Base
|
34
|
+
scope :nobel_prize_winner
|
35
|
+
|
36
|
+
filter(:first_name, match: 'contains')
|
37
|
+
end
|
38
|
+
npw = ContainsNobelPrizeWinner.tableficate({filter: {first_name: ['Al', 'Mar']}})
|
39
|
+
npw.size.should == 2
|
40
|
+
npw.first.first_name.should == 'Albert'
|
41
|
+
npw.last.first_name.should == 'Marie'
|
20
42
|
end
|
21
43
|
|
22
44
|
it 'should attach the table name to the fields from the primary table to avoid ambiguity' do
|
@@ -32,4 +54,29 @@ describe Tableficate::Finder do
|
|
32
54
|
np = NobelPrize.tableficate({filter: {year: {start: 1900, stop: 1930}}})
|
33
55
|
np.size.should == 4
|
34
56
|
end
|
57
|
+
|
58
|
+
it 'should remove harmful characters from the param name' do
|
59
|
+
np = NobelPrize.tableficate({filter: {"ye'ar" => {start: 1900, stop: 1930}}})
|
60
|
+
np.size.should == 4
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'should handle a date string being used against a datetime or timestamp column' do
|
64
|
+
np = NobelPrizeWinner.tableficate({filter: {created_at: '20110101'}})
|
65
|
+
np.size.should == 1
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'should handle a date range being used against a datetime or timestamp column' do
|
69
|
+
np = NobelPrizeWinner.tableficate({filter: {created_at: {start: '20110101', stop: '20110105'}}})
|
70
|
+
np.size.should == 5
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'should match an exact datetime and account for the timezone setting' do
|
74
|
+
np = NobelPrizeWinner.tableficate({filter: {created_at: '20110101050112'}})
|
75
|
+
np.size.should == 1
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'should match an exact datetime range and account for the timezone setting' do
|
79
|
+
np = NobelPrizeWinner.tableficate({filter: {created_at: {start: '20110101050112', stop: '20110102050212'}}})
|
80
|
+
np.size.should == 2
|
81
|
+
end
|
35
82
|
end
|
@@ -8,4 +8,18 @@ describe 'tableficate:theme' do
|
|
8
8
|
subject.should generate('app/views/tableficate/foo/_table.html.erb')
|
9
9
|
end
|
10
10
|
end
|
11
|
+
|
12
|
+
with_args :foo, 'table_for' do
|
13
|
+
it 'should generate a single file in app/views/tableficate/foo/' do
|
14
|
+
subject.should generate('app/views/tableficate/foo')
|
15
|
+
subject.should generate('app/views/tableficate/foo/_table_for.html.erb')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
with_args :foo, 'filters/form' do
|
20
|
+
it 'should generate a single file in app/views/tableficate/foo/filters' do
|
21
|
+
subject.should generate('app/views/tableficate/foo/filters')
|
22
|
+
subject.should generate('app/views/tableficate/foo/filters/_form.html.erb')
|
23
|
+
end
|
24
|
+
end
|
11
25
|
end
|
data/spec/table_spec.rb
CHANGED
@@ -5,7 +5,7 @@ describe Tableficate::Table do
|
|
5
5
|
template = mock('Template')
|
6
6
|
template.stub!(:lookup_context).and_return(ActionView::LookupContext.new([]))
|
7
7
|
template.lookup_context.stub!(:exists?).and_return(true)
|
8
|
-
@table = Tableficate::Table.new(template, NobelPrizeWinner.limit(1), {}, {current_sort: {column: :first_name, dir: 'asc'}})
|
8
|
+
@table = Tableficate::Table.new(template, NobelPrizeWinner.joins(:nobel_prizes).limit(1), {}, {current_sort: {column: :first_name, dir: 'asc'}})
|
9
9
|
end
|
10
10
|
|
11
11
|
it 'should have the current sort if provided' do
|
@@ -17,6 +17,28 @@ describe Tableficate::Table do
|
|
17
17
|
@table.as.should == 'nobel_prize_winners'
|
18
18
|
end
|
19
19
|
|
20
|
+
it 'should add a empty' do
|
21
|
+
@table.empty('There is no data.')
|
22
|
+
@table.empty.is_a?(Tableficate::Empty).should be true
|
23
|
+
@table.empty.value.should == 'There is no data.'
|
24
|
+
|
25
|
+
@table.empty do
|
26
|
+
'No data.'
|
27
|
+
end
|
28
|
+
@table.empty.value.should == 'No data.'
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should add a caption' do
|
32
|
+
@table.caption('Nobel Prize Winners')
|
33
|
+
@table.caption.is_a?(Tableficate::Caption).should be true
|
34
|
+
@table.caption.value.should == 'Nobel Prize Winners'
|
35
|
+
|
36
|
+
@table.caption do
|
37
|
+
'Nobel Winners'
|
38
|
+
end
|
39
|
+
@table.caption.value.should == 'Nobel Winners'
|
40
|
+
end
|
41
|
+
|
20
42
|
it 'should add a Column' do
|
21
43
|
@table.column(:first_name)
|
22
44
|
@table.column(:last_name)
|
@@ -85,7 +107,96 @@ describe Tableficate::Table do
|
|
85
107
|
@table.filter(:first_name, as: :search)
|
86
108
|
|
87
109
|
@table.filters.first.is_a?(Tableficate::Filter::Input).should be true
|
88
|
-
@table.filters.first.
|
110
|
+
@table.filters.first.attrs[:type].should == 'search'
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'should default the type to "checkbox" for boolean fields' do
|
114
|
+
@table.filter(:shared)
|
115
|
+
|
116
|
+
@table.filters.first.is_a?(Tableficate::Filter::CheckBox).should be true
|
117
|
+
@table.filters.first.attrs[:type].should == 'checkbox'
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'should default the type to "email" for string fields with "email" somewhere in the name' do
|
121
|
+
@table.filter(:email)
|
122
|
+
|
123
|
+
@table.filters.first.is_a?(Tableficate::Filter::Input).should be true
|
124
|
+
@table.filters.first.attrs[:type].should == 'email'
|
125
|
+
end
|
126
|
+
|
127
|
+
it 'should default the type to "url" for string fields with "url" somewhere in the name' do
|
128
|
+
@table.filter(:url)
|
129
|
+
|
130
|
+
@table.filters.first.is_a?(Tableficate::Filter::Input).should be true
|
131
|
+
@table.filters.first.attrs[:type].should == 'url'
|
132
|
+
end
|
133
|
+
|
134
|
+
it 'should default the type to "tel" for string fields with "phone" somewhere in the name' do
|
135
|
+
@table.filter(:home_phone)
|
136
|
+
|
137
|
+
@table.filters.first.is_a?(Tableficate::Filter::Input).should be true
|
138
|
+
@table.filters.first.attrs[:type].should == 'tel'
|
139
|
+
end
|
140
|
+
|
141
|
+
it 'should default the type to "number" for integer fields' do
|
142
|
+
@table.filter(:year)
|
143
|
+
|
144
|
+
@table.filters.first.is_a?(Tableficate::Filter::Input).should be true
|
145
|
+
@table.filters.first.attrs[:type].should == 'number'
|
146
|
+
end
|
147
|
+
|
148
|
+
it 'should default the type to "number" for float fields' do
|
149
|
+
@table.filter(:meaningless_float)
|
150
|
+
|
151
|
+
@table.filters.first.is_a?(Tableficate::Filter::Input).should be true
|
152
|
+
@table.filters.first.attrs[:type].should == 'number'
|
153
|
+
end
|
154
|
+
|
155
|
+
it 'should default the type to "number" for decimal fields' do
|
156
|
+
@table.filter(:meaningless_decimal)
|
157
|
+
|
158
|
+
@table.filters.first.is_a?(Tableficate::Filter::Input).should be true
|
159
|
+
@table.filters.first.attrs[:type].should == 'number'
|
160
|
+
end
|
161
|
+
|
162
|
+
it 'should default the type to "date" for date fields' do
|
163
|
+
@table.filter(:birthdate)
|
164
|
+
|
165
|
+
@table.filters.first.is_a?(Tableficate::Filter::Input).should be true
|
166
|
+
@table.filters.first.attrs[:type].should == 'date'
|
167
|
+
end
|
168
|
+
|
169
|
+
it 'should default the type to "time" for time fields' do
|
170
|
+
@table.filter(:meaningless_time)
|
171
|
+
|
172
|
+
@table.filters.first.is_a?(Tableficate::Filter::Input).should be true
|
173
|
+
@table.filters.first.attrs[:type].should == 'time'
|
174
|
+
end
|
175
|
+
|
176
|
+
it 'should default the type to "datetime" for datetime fields' do
|
177
|
+
@table.filter(:created_at)
|
178
|
+
|
179
|
+
@table.filters.first.is_a?(Tableficate::Filter::Input).should be true
|
180
|
+
@table.filters.first.attrs[:type].should == 'datetime'
|
181
|
+
end
|
182
|
+
|
183
|
+
it 'should default the type to "datetime" for timestamp fields' do
|
184
|
+
@table.filter(:updated_at)
|
185
|
+
|
186
|
+
@table.filters.first.is_a?(Tableficate::Filter::Input).should be true
|
187
|
+
@table.filters.first.attrs[:type].should == 'datetime'
|
188
|
+
end
|
189
|
+
|
190
|
+
it 'should default the type based on the actual field, not the label' do
|
191
|
+
template = mock('Template')
|
192
|
+
template.stub!(:lookup_context).and_return(ActionView::LookupContext.new([]))
|
193
|
+
template.lookup_context.stub!(:exists?).and_return(true)
|
194
|
+
table = Tableficate::Table.new(template, NobelPrizeWinner.joins(:nobel_prizes).limit(1), {}, {field_map: {foo: 'year'}})
|
195
|
+
|
196
|
+
table.filter(:foo)
|
197
|
+
|
198
|
+
table.filters.first.is_a?(Tableficate::Filter::Input).should be true
|
199
|
+
table.filters.first.attrs[:type].should == 'number'
|
89
200
|
end
|
90
201
|
|
91
202
|
it 'should add a InputRange filter' do
|
@@ -105,7 +216,7 @@ describe Tableficate::Table do
|
|
105
216
|
@table.filter_range(:first_name, as: :search)
|
106
217
|
|
107
218
|
@table.filters.first.is_a?(Tableficate::Filter::InputRange).should be true
|
108
|
-
@table.filters.first.
|
219
|
+
@table.filters.first.attrs[:type].should == 'search'
|
109
220
|
end
|
110
221
|
|
111
222
|
it 'should add a Select filter' do
|
@@ -2,6 +2,6 @@ class FiltersController < ApplicationController
|
|
2
2
|
before_filter :get_npw
|
3
3
|
|
4
4
|
def get_npw
|
5
|
-
@npw = NobelPrizeWinner.select('nobel_prize_winners.*, nobel_prizes
|
5
|
+
@npw = NobelPrizeWinner.select('nobel_prize_winners.*, nobel_prizes.*').joins(:nobel_prizes).tableficate(params[:nobel_prize_winners])
|
6
6
|
end
|
7
7
|
end
|