datagrid 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +8 -6
  3. data/VERSION +1 -1
  4. data/app/views/datagrid/_form.html.erb +3 -1
  5. data/datagrid.gemspec +6 -6
  6. data/lib/datagrid.rb +1 -0
  7. data/lib/datagrid/columns.rb +14 -7
  8. data/lib/datagrid/columns/column.rb +7 -4
  9. data/lib/datagrid/renderer.rb +1 -1
  10. data/spec/datagrid/active_model_spec.rb +4 -4
  11. data/spec/datagrid/column_names_attribute_spec.rb +15 -11
  12. data/spec/datagrid/columns_spec.rb +80 -62
  13. data/spec/datagrid/core_spec.rb +6 -6
  14. data/spec/datagrid/drivers/active_record_spec.rb +4 -4
  15. data/spec/datagrid/drivers/array_spec.rb +41 -8
  16. data/spec/datagrid/drivers/mongo_mapper_spec.rb +42 -10
  17. data/spec/datagrid/drivers/mongoid_spec.rb +43 -11
  18. data/spec/datagrid/filters/composite_filters_spec.rb +12 -12
  19. data/spec/datagrid/filters/date_filter_spec.rb +25 -25
  20. data/spec/datagrid/filters/date_time_filter_spec.rb +20 -20
  21. data/spec/datagrid/filters/dynamic_filter_spec.rb +43 -43
  22. data/spec/datagrid/filters/enum_filter_spec.rb +6 -6
  23. data/spec/datagrid/filters/extended_boolean_filter_spec.rb +10 -10
  24. data/spec/datagrid/filters/float_filter_spec.rb +2 -2
  25. data/spec/datagrid/filters/integer_filter_spec.rb +34 -34
  26. data/spec/datagrid/filters/string_filter_spec.rb +7 -7
  27. data/spec/datagrid/filters_spec.rb +20 -20
  28. data/spec/datagrid/form_builder_spec.rb +5 -5
  29. data/spec/datagrid/helper_spec.rb +41 -40
  30. data/spec/datagrid/ordering_spec.rb +22 -22
  31. data/spec/datagrid/scaffold_spec.rb +2 -2
  32. data/spec/datagrid/utils_spec.rb +3 -3
  33. data/spec/datagrid_spec.rb +10 -7
  34. data/spec/support/matchers.rb +6 -3
  35. metadata +30 -30
@@ -15,7 +15,7 @@ describe Datagrid::Core do
15
15
  context 'in the class' do
16
16
  let(:report) { report_class.new }
17
17
 
18
- it { expect(report.scope.to_a).to have(2).item }
18
+ it { expect(report.scope.to_a.size).to eq(2) }
19
19
  end
20
20
 
21
21
  context 'changes scope on the fly' do
@@ -25,26 +25,26 @@ describe Datagrid::Core do
25
25
  end
26
26
  end
27
27
 
28
- it { expect(report.scope.to_a).to have(1).item }
28
+ it { expect(report.scope.to_a.size).to eq(1) }
29
29
  end
30
30
 
31
31
  context 'overriding scope by initializer' do
32
32
  let(:report) { report_class.new { Entry.limit(1) } }
33
33
 
34
- it { expect(report.scope.to_a).to have(1).item }
34
+ it { expect(report.scope.to_a.size).to eq(1) }
35
35
 
36
36
  context "reset scope to default" do
37
37
  before do
38
38
  report.reset_scope
39
39
  end
40
- it { expect(report.scope.to_a).to have(2).item }
40
+ it { expect(report.scope.to_a.size).to eq(2) }
41
41
  end
42
42
  end
43
43
 
44
44
  context "appending scope by initializer " do
45
45
  let(:report) { report_class.new {|scope| scope.limit(1)} }
46
- it { expect(report.scope.to_a).to have(1).item }
47
- it { expect(report.scope.order_values).to have(1).item }
46
+ it { expect(report.scope.to_a.size).to eq(1) }
47
+ it { expect(report.scope.order_values.size).to eq(1) }
48
48
  end
49
49
  end
50
50
  end
@@ -11,13 +11,13 @@ describe Datagrid::Drivers::ActiveRecord do
11
11
  end
12
12
 
13
13
  it "should convert any scope to AR::Relation" do
14
- subject.to_scope(Entry).should be_a(ActiveRecord::Relation)
15
- subject.to_scope(Entry.limit(5)).should be_a(ActiveRecord::Relation)
16
- subject.to_scope(Group.create!.entries).should be_a(ActiveRecord::Relation)
14
+ expect(subject.to_scope(Entry)).to be_a(ActiveRecord::Relation)
15
+ expect(subject.to_scope(Entry.limit(5))).to be_a(ActiveRecord::Relation)
16
+ expect(subject.to_scope(Group.create!.entries)).to be_a(ActiveRecord::Relation)
17
17
  end
18
18
 
19
19
  it "should support append_column_queries" do
20
20
  scope = subject.append_column_queries(Entry.scoped, [Datagrid::Columns::Column.new(SimpleReport, :sum_group_id, 'sum(entries.group_id)')])
21
- scope.to_sql.strip.should == 'SELECT "entries".*, sum(entries.group_id) AS sum_group_id FROM "entries"'
21
+ expect(scope.to_sql.strip).to eq('SELECT "entries".*, sum(entries.group_id) AS sum_group_id FROM "entries"')
22
22
  end
23
23
  end
@@ -38,23 +38,56 @@ describe Datagrid::Drivers::Array do
38
38
  end
39
39
 
40
40
 
41
- its(:"assets.size") {should == 3}
42
- its(:rows) {should == [["Vasya", 15], ["Petya", 12], ["Vova", 13]]}
43
- its(:header) {should ==[ "Name", "Age"]}
41
+ describe '#assets' do
42
+ subject { super().assets }
43
+ describe '#size' do
44
+ subject { super().size }
45
+ it {should == 3}
46
+ end
47
+ end
48
+
49
+ describe '#rows' do
50
+ subject { super().rows }
51
+ it {should == [["Vasya", 15], ["Petya", 12], ["Vova", 13]]}
52
+ end
53
+
54
+ describe '#header' do
55
+ subject { super().header }
56
+ it {should ==[ "Name", "Age"]}
57
+ end
44
58
 
45
- its(:data) {should == [[ "Name", "Age"], ["Vasya", 15], ["Petya", 12], ["Vova", 13]]}
59
+ describe '#data' do
60
+ subject { super().data }
61
+ it {should == [[ "Name", "Age"], ["Vasya", 15], ["Petya", 12], ["Vova", 13]]}
62
+ end
46
63
 
47
64
 
48
65
  describe "when some filters specified" do
49
66
  let(:_attributes) { {:age => [12,14]} }
50
- its(:assets) {should_not include(first)}
51
- its(:assets) {should include(second)}
52
- its(:assets) {should include(third)}
67
+
68
+ describe '#assets' do
69
+ subject { super().assets }
70
+ it {should_not include(first)}
71
+ end
72
+
73
+ describe '#assets' do
74
+ subject { super().assets }
75
+ it {should include(second)}
76
+ end
77
+
78
+ describe '#assets' do
79
+ subject { super().assets }
80
+ it {should include(third)}
81
+ end
53
82
  end
54
83
 
55
84
  describe "when reverse ordering is specified" do
56
85
  let(:_attributes) { {:order => :name, :descending => true} }
57
- its(:assets) {should == [third, first, second]}
86
+
87
+ describe '#assets' do
88
+ subject { super().assets }
89
+ it {should == [third, first, second]}
90
+ end
58
91
  end
59
92
  end
60
93
  end
@@ -34,32 +34,64 @@ describe Datagrid::Drivers::MongoMapper, :mongomapper do
34
34
  end
35
35
 
36
36
 
37
- its(:assets) {should include(first, second)}
37
+ describe '#assets' do
38
+ subject { super().assets }
39
+ it {should include(first, second)}
40
+ end
38
41
 
39
- its(:"assets.size") {should == 2}
40
- its(:rows) {should == [["Main First", 2, false], ["Main Second", 3, true]]}
41
- its(:header) {should ==[ "Name", "Group", "Disabled"]}
42
+ describe '#assets' do
43
+ subject { super().assets }
44
+ describe '#size' do
45
+ subject { super().size }
46
+ it {should == 2}
47
+ end
48
+ end
49
+
50
+ describe '#rows' do
51
+ subject { super().rows }
52
+ it {should == [["Main First", 2, false], ["Main Second", 3, true]]}
53
+ end
54
+
55
+ describe '#header' do
56
+ subject { super().header }
57
+ it {should ==[ "Name", "Group", "Disabled"]}
58
+ end
42
59
 
43
- its(:data) {should == [[ "Name", "Group", "Disabled"], ["Main First", 2, false], ["Main Second", 3, true]]}
60
+ describe '#data' do
61
+ subject { super().data }
62
+ it {should == [[ "Name", "Group", "Disabled"], ["Main First", 2, false], ["Main Second", 3, true]]}
63
+ end
44
64
 
45
65
 
46
66
  describe "when some filters specified" do
47
67
  let(:_attributes) { {:from_group_id => 3} }
48
- its(:assets) {should_not include(first)}
49
- its(:assets) {should include(second)}
68
+
69
+ describe '#assets' do
70
+ subject { super().assets }
71
+ it {should_not include(first)}
72
+ end
73
+
74
+ describe '#assets' do
75
+ subject { super().assets }
76
+ it {should include(second)}
77
+ end
50
78
  end
51
79
 
52
80
  describe "when reverse ordering is specified" do
53
81
  let(:_attributes) { {:order => :name, :descending => true} }
54
- its(:rows) {should == [["Main Second", 3, true], ["Main First", 2, false]]}
82
+
83
+ describe '#rows' do
84
+ subject { super().rows }
85
+ it {should == [["Main Second", 3, true], ["Main First", 2, false]]}
86
+ end
55
87
  end
56
88
  it "should not provide default order for non declared fields" do
57
- proc {
89
+ expect {
58
90
  test_report(:order => :test) do
59
91
  scope { MongoMapperEntry }
60
92
  column(:test)
61
93
  end
62
- }.should raise_error(Datagrid::OrderUnsupported)
94
+ }.to raise_error(Datagrid::OrderUnsupported)
63
95
  end
64
96
  end
65
97
  end
@@ -33,33 +33,65 @@ describe Datagrid::Drivers::Mongoid, :mongoid do
33
33
  end
34
34
 
35
35
 
36
- its(:assets) {should include(first, second)}
36
+ describe '#assets' do
37
+ subject { super().assets }
38
+ it {should include(first, second)}
39
+ end
40
+
41
+ describe '#assets' do
42
+ subject { super().assets }
43
+ describe '#size' do
44
+ subject { super().size }
45
+ it {should == 2}
46
+ end
47
+ end
37
48
 
38
- its(:"assets.size") {should == 2}
39
- its(:rows) {should == [["Main First", 2, false], ["Main Second", 3, true]]}
40
- its(:header) {should ==[ "Name", "Group", "Disabled"]}
49
+ describe '#rows' do
50
+ subject { super().rows }
51
+ it {should == [["Main First", 2, false], ["Main Second", 3, true]]}
52
+ end
53
+
54
+ describe '#header' do
55
+ subject { super().header }
56
+ it {should ==[ "Name", "Group", "Disabled"]}
57
+ end
41
58
 
42
- its(:data) {should == [[ "Name", "Group", "Disabled"], ["Main First", 2, false], ["Main Second", 3, true]]}
59
+ describe '#data' do
60
+ subject { super().data }
61
+ it {should == [[ "Name", "Group", "Disabled"], ["Main First", 2, false], ["Main Second", 3, true]]}
62
+ end
43
63
 
44
64
 
45
65
  describe "when some filters specified" do
46
66
  let(:_attributes) { {:from_group_id => 3} }
47
- its(:assets) {should_not include(first)}
48
- its(:assets) {should include(second)}
67
+
68
+ describe '#assets' do
69
+ subject { super().assets }
70
+ it {should_not include(first)}
71
+ end
72
+
73
+ describe '#assets' do
74
+ subject { super().assets }
75
+ it {should include(second)}
76
+ end
49
77
  end
50
78
 
51
79
  describe "when reverse ordering is specified" do
52
80
  let(:_attributes) { {:order => :name, :descending => true} }
53
- its(:rows) {should == [["Main Second", 3, true], ["Main First", 2, false]]}
81
+
82
+ describe '#rows' do
83
+ subject { super().rows }
84
+ it {should == [["Main Second", 3, true], ["Main First", 2, false]]}
85
+ end
54
86
  end
55
87
 
56
88
  it "should not provide default order for non declared fields" do
57
- proc {
89
+ expect {
58
90
  test_report(:order => :test) do
59
91
  scope { MongoidEntry }
60
92
  column(:test)
61
93
  end
62
- }.should raise_error(Datagrid::OrderUnsupported)
94
+ }.to raise_error(Datagrid::OrderUnsupported)
63
95
  end
64
96
 
65
97
  it "should support batch_size" do
@@ -69,7 +101,7 @@ describe Datagrid::Drivers::Mongoid, :mongoid do
69
101
  column(:name)
70
102
  end
71
103
 
72
- report.data.should == [["Name"], ["Main First"], ["Main Second"]]
104
+ expect(report.data).to eq([["Name"], ["Main First"], ["Main Second"]])
73
105
  end
74
106
  end
75
107
  end
@@ -13,23 +13,23 @@ describe Datagrid::Filters::CompositeFilters do
13
13
  date_range_filters(:shipping_date)
14
14
  end.assets
15
15
 
16
- assets.should include(e2)
17
- assets.should_not include(e1, e3)
16
+ expect(assets).to include(e2)
17
+ expect(assets).not_to include(e1, e3)
18
18
  end
19
19
 
20
20
  it "should support options" do
21
21
  report = test_report do
22
22
  report = date_range_filters(:shipping_date, {:default => 10.days.ago.to_date}, {:default => Date.today})
23
23
  end
24
- report.from_shipping_date.should == 10.days.ago.to_date
25
- report.to_shipping_date.should == Date.today
24
+ expect(report.from_shipping_date).to eq(10.days.ago.to_date)
25
+ expect(report.to_shipping_date).to eq(Date.today)
26
26
  end
27
27
  it "should support table name in field" do
28
28
  report = test_report do
29
29
  report = date_range_filters("entries.shipping_date", {:default => 10.days.ago.to_date}, {:default => Date.today})
30
30
  end
31
- report.from_entries_shipping_date.should == 10.days.ago.to_date
32
- report.to_entries_shipping_date.should == Date.today
31
+ expect(report.from_entries_shipping_date).to eq(10.days.ago.to_date)
32
+ expect(report.to_entries_shipping_date).to eq(Date.today)
33
33
  end
34
34
  end
35
35
 
@@ -44,22 +44,22 @@ describe Datagrid::Filters::CompositeFilters do
44
44
  integer_range_filters(:group_id)
45
45
  end.assets
46
46
 
47
- assets.should include(e2)
48
- assets.should_not include(e1, e3)
47
+ expect(assets).to include(e2)
48
+ expect(assets).not_to include(e1, e3)
49
49
  end
50
50
  it "should support options" do
51
51
  report = test_report do
52
52
  report = integer_range_filters(:group_id, {:default => 0}, {:default => 100})
53
53
  end
54
- report.from_group_id.should == 0
55
- report.to_group_id.should == 100
54
+ expect(report.from_group_id).to eq(0)
55
+ expect(report.to_group_id).to eq(100)
56
56
  end
57
57
  it "should table name in field name" do
58
58
  report = test_report do
59
59
  report = integer_range_filters("entries.group_id", {:default => 0}, {:default => 100})
60
60
  end
61
- report.from_entries_group_id.should == 0
62
- report.to_entries_group_id.should == 100
61
+ expect(report.from_entries_group_id).to eq(0)
62
+ expect(report.to_entries_group_id).to eq(100)
63
63
  end
64
64
  end
65
65
  end
@@ -10,9 +10,9 @@ describe Datagrid::Filters::DateFilter do
10
10
  scope { Entry }
11
11
  filter(:created_at, :date)
12
12
  end
13
- report.assets.should_not include(e1)
14
- report.assets.should include(e2)
15
- report.assets.should_not include(e3)
13
+ expect(report.assets).not_to include(e1)
14
+ expect(report.assets).to include(e2)
15
+ expect(report.assets).not_to include(e3)
16
16
  end
17
17
 
18
18
  {:active_record => Entry, :mongoid => MongoidEntry}.each do |orm, klass|
@@ -60,9 +60,9 @@ describe Datagrid::Filters::DateFilter do
60
60
  scope { Entry }
61
61
  filter(:created_at, :date, :range => true)
62
62
  end
63
- report.assets.should_not include(e1)
64
- report.assets.should include(e2)
65
- report.assets.should_not include(e3)
63
+ expect(report.assets).not_to include(e1)
64
+ expect(report.assets).to include(e2)
65
+ expect(report.assets).not_to include(e3)
66
66
  end
67
67
 
68
68
  it "should support minimum date argument" do
@@ -73,9 +73,9 @@ describe Datagrid::Filters::DateFilter do
73
73
  scope { Entry }
74
74
  filter(:created_at, :date, :range => true)
75
75
  end
76
- report.assets.should_not include(e1)
77
- report.assets.should include(e2)
78
- report.assets.should include(e3)
76
+ expect(report.assets).not_to include(e1)
77
+ expect(report.assets).to include(e2)
78
+ expect(report.assets).to include(e3)
79
79
  end
80
80
 
81
81
  it "should support maximum date argument" do
@@ -86,9 +86,9 @@ describe Datagrid::Filters::DateFilter do
86
86
  scope { Entry }
87
87
  filter(:created_at, :date, :range => true)
88
88
  end
89
- report.assets.should include(e1)
90
- report.assets.should include(e2)
91
- report.assets.should_not include(e3)
89
+ expect(report.assets).to include(e1)
90
+ expect(report.assets).to include(e2)
91
+ expect(report.assets).not_to include(e3)
92
92
  end
93
93
 
94
94
  it "should find something in one day interval" do
@@ -100,9 +100,9 @@ describe Datagrid::Filters::DateFilter do
100
100
  scope { Entry }
101
101
  filter(:created_at, :date, :range => true)
102
102
  end
103
- report.assets.should_not include(e1)
104
- report.assets.should include(e2)
105
- report.assets.should_not include(e3)
103
+ expect(report.assets).not_to include(e1)
104
+ expect(report.assets).to include(e2)
105
+ expect(report.assets).not_to include(e3)
106
106
  end
107
107
  it "should support invalid range" do
108
108
 
@@ -113,9 +113,9 @@ describe Datagrid::Filters::DateFilter do
113
113
  scope { Entry }
114
114
  filter(:created_at, :date, :range => true)
115
115
  end
116
- report.assets.should_not include(e1)
117
- report.assets.should_not include(e2)
118
- report.assets.should_not include(e3)
116
+ expect(report.assets).not_to include(e1)
117
+ expect(report.assets).not_to include(e2)
118
+ expect(report.assets).not_to include(e3)
119
119
  end
120
120
 
121
121
 
@@ -126,8 +126,8 @@ describe Datagrid::Filters::DateFilter do
126
126
  where("created_at >= ?", value)
127
127
  end
128
128
  end
129
- report.assets.should_not include(Entry.create!(:created_at => 1.day.ago))
130
- report.assets.should include(Entry.create!(:created_at => DateTime.now))
129
+ expect(report.assets).not_to include(Entry.create!(:created_at => 1.day.ago))
130
+ expect(report.assets).to include(Entry.create!(:created_at => DateTime.now))
131
131
  end
132
132
 
133
133
 
@@ -143,7 +143,7 @@ describe Datagrid::Filters::DateFilter do
143
143
  scope {Entry}
144
144
  filter(:created_at, :date)
145
145
  end
146
- report.created_at.should == Date.new(2013,10,01)
146
+ expect(report.created_at).to eq(Date.new(2013,10,01))
147
147
  end
148
148
 
149
149
  it "should support default explicit date" do
@@ -151,7 +151,7 @@ describe Datagrid::Filters::DateFilter do
151
151
  scope {Entry}
152
152
  filter(:created_at, :date)
153
153
  end
154
- report.created_at.should == Date.new(2013,10,01)
154
+ expect(report.created_at).to eq(Date.new(2013,10,01))
155
155
  end
156
156
  end
157
157
 
@@ -161,14 +161,14 @@ describe Datagrid::Filters::DateFilter do
161
161
  scope {Entry}
162
162
  filter(:created_at, :date, :range => true)
163
163
  end
164
- report.created_at.should == [Date.new(2012, 01, 01), Date.new(2013, 01, 01)]
164
+ expect(report.created_at).to eq([Date.new(2012, 01, 01), Date.new(2013, 01, 01)])
165
165
  end
166
166
  it "should automatically reverse Array if first more than last" do
167
167
  report = test_report(:created_at => ["2013-01-01", "2012-01-01"]) do
168
168
  scope {Entry}
169
169
  filter(:created_at, :date, :range => true)
170
170
  end
171
- report.created_at.should == [Date.new(2012, 01, 01), Date.new(2013, 01, 01)]
171
+ expect(report.created_at).to eq([Date.new(2012, 01, 01), Date.new(2013, 01, 01)])
172
172
  end
173
173
 
174
174
  it "should properly format date in filter_value_as_string" do
@@ -177,7 +177,7 @@ describe Datagrid::Filters::DateFilter do
177
177
  scope {Entry}
178
178
  filter(:created_at, :date)
179
179
  end
180
- report.filter_value_as_string(:created_at).should == "01/02/2012"
180
+ expect(report.filter_value_as_string(:created_at)).to eq("01/02/2012")
181
181
  end
182
182
  end
183
183