declarative_grid 0.1.0 → 0.1.1

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.
@@ -22,12 +22,18 @@ Gem::Specification.new do |gem|
22
22
  gem.add_dependency "activesupport", "~> 3.2.8"
23
23
  gem.add_dependency "backports", "~> 2.6.4"
24
24
 
25
+ # Test Framework
25
26
  gem.add_development_dependency "rake", "~> 0.9.2.2"
26
27
  gem.add_development_dependency "minitest", "~> 4.1.0"
27
28
  gem.add_development_dependency "mocha", "~> 0.12.7"
28
29
  gem.add_development_dependency "factory_girl", "~> 4.1.0"
29
30
  gem.add_development_dependency "nokogiri", "~> 1.5.5"
31
+
32
+ # ORM: ActiveRecord
30
33
  gem.add_development_dependency "activerecord", "~> 3.2.8"
31
34
  gem.add_development_dependency "sqlite3", "~> 1.3.6"
32
35
 
36
+ # ORM: Sequel
37
+ gem.add_development_dependency "sequel", "~> 3.20.0"
38
+
33
39
  end
@@ -13,12 +13,25 @@ module DeclarativeGrid
13
13
  def initialize(records = nil)
14
14
  if block_given?
15
15
  STDERR.puts 'WARNING: block-style instantization is deprecated'
16
- records = yield
16
+ records ||= yield
17
17
  end
18
18
 
19
- if records.respond_to?(:find_each)
20
- records = Enumerator.new records, :find_each
19
+ if defined? ::ActiveRecord
20
+ if records.is_a?(::ActiveRecord::Relation) or
21
+ (records.is_a?(Class) and
22
+ records.ancestors.include?(::ActiveRecord::Base))
23
+ records = Enumerator.new records, :find_each
24
+ end
21
25
  end
26
+
27
+ if defined? ::Sequel
28
+ if records.is_a?(Class) && records.ancestors.include?(::Sequel::Model)
29
+ raise unless records.is_a?(Enumerable)
30
+ elsif records.is_a?(::Sequel::Dataset)
31
+ raise unless records.is_a?(Enumerable)
32
+ end
33
+ end
34
+
22
35
  self.records = records
23
36
  end
24
37
 
@@ -1,3 +1,3 @@
1
1
  module DeclarativeGrid
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -15,6 +15,7 @@ module DeclarativeGrid
15
15
  config = { adapter: 'sqlite3', database: ':memory:' }
16
16
  ActiveRecord::Base.establish_connection(config)
17
17
 
18
+ ActiveRecord::Schema.verbose = false
18
19
  ActiveRecord::Schema.define do
19
20
  create_table :members do |t|
20
21
  t.string :name
@@ -44,7 +45,10 @@ module DeclarativeGrid
44
45
  [@names, @genders].transpose.each do |a|
45
46
  @record_klass.create name: a[0], gender_id: a[1]
46
47
  end
47
-
48
+ end
49
+
50
+ after do
51
+ @record_klass.destroy_all
48
52
  end
49
53
 
50
54
  it "can accept ActiveRecord::Base and its subclasses" do
@@ -0,0 +1,67 @@
1
+ #encoding: UTF-8
2
+ require 'sequel'
3
+ require "spec_helper"
4
+
5
+ module DeclarativeGrid
6
+ describe Base do
7
+ before do
8
+ @grid_klass = Class.new Base do
9
+ column :name
10
+ column :gender_id
11
+
12
+ renderer :csv
13
+ end
14
+
15
+ database = Sequel.sqlite
16
+
17
+ # create an items table
18
+ database.create_table :members do
19
+ primary_key :id
20
+ String :name
21
+ Integer :gender_id
22
+ end
23
+
24
+ @record_klass = Class.new Sequel::Model(:members) do
25
+ end
26
+
27
+ @names = [
28
+ 'Adam Jensen', 'Nathan Drake', 'Lara Croft',
29
+ "Alta\xC3\xAFr Ibn-La\'Ahad",
30
+ "Ezio Auditore da Firenze",
31
+ "Ratonhnhak\xC3\xA9:ton",
32
+ "Desmond Miles"
33
+ ]
34
+ @genders = [
35
+ 1, 1, 2,
36
+ 1,
37
+ 1,
38
+ 1,
39
+ 1
40
+ ]
41
+
42
+ [@names, @genders].transpose.each do |a|
43
+ @record_klass.create name: a[0], gender_id: a[1]
44
+ end
45
+ end
46
+
47
+ after do
48
+ @record_klass.destroy
49
+ end
50
+
51
+ it "can accept Sequel::Model and its subclasses" do
52
+ base = @grid_klass.new @record_klass
53
+ base.renderer(:csv).each_record.map(&:name).must_equal @names
54
+ end
55
+
56
+ it "can accept Sequel::Dataset" do
57
+ base = @grid_klass.new @record_klass.dataset
58
+ base.renderer(:csv).each_record.map(&:name).must_equal @names
59
+ end
60
+
61
+ it "can accept Sequel::Dataset#all" do
62
+ base = @grid_klass.new @record_klass.dataset.all
63
+ base.renderer(:csv).each_record.map(&:name).must_equal @names
64
+ end
65
+
66
+ end
67
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: declarative_grid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-11 00:00:00.000000000 Z
12
+ date: 2012-11-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -155,6 +155,22 @@ dependencies:
155
155
  - - ~>
156
156
  - !ruby/object:Gem::Version
157
157
  version: 1.3.6
158
+ - !ruby/object:Gem::Dependency
159
+ name: sequel
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ~>
164
+ - !ruby/object:Gem::Version
165
+ version: 3.20.0
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ~>
172
+ - !ruby/object:Gem::Version
173
+ version: 3.20.0
158
174
  description: DeclarativeGrid is a gem for rendering grids described in simple DSL
159
175
  email:
160
176
  - davll.xc@gmail.com
@@ -179,11 +195,12 @@ files:
179
195
  - lib/declarative_grid/renderers/html.rb
180
196
  - lib/declarative_grid/version.rb
181
197
  - sample1.rb
182
- - spec/declarative_grid/active_record_spec.rb
183
198
  - spec/declarative_grid/base_spec.rb
184
199
  - spec/declarative_grid/model/column_spec.rb
185
200
  - spec/declarative_grid/model/row_spec.rb
186
201
  - spec/declarative_grid/model_spec.rb
202
+ - spec/declarative_grid/orm_support/active_record_spec.rb
203
+ - spec/declarative_grid/orm_support/sequel_spec.rb
187
204
  - spec/declarative_grid/renderers/abstract_renderer_spec.rb
188
205
  - spec/declarative_grid/renderers/csv_spec.rb
189
206
  - spec/declarative_grid/renderers/html_spec.rb
@@ -216,11 +233,12 @@ signing_key:
216
233
  specification_version: 3
217
234
  summary: A flexible grid renderer
218
235
  test_files:
219
- - spec/declarative_grid/active_record_spec.rb
220
236
  - spec/declarative_grid/base_spec.rb
221
237
  - spec/declarative_grid/model/column_spec.rb
222
238
  - spec/declarative_grid/model/row_spec.rb
223
239
  - spec/declarative_grid/model_spec.rb
240
+ - spec/declarative_grid/orm_support/active_record_spec.rb
241
+ - spec/declarative_grid/orm_support/sequel_spec.rb
224
242
  - spec/declarative_grid/renderers/abstract_renderer_spec.rb
225
243
  - spec/declarative_grid/renderers/csv_spec.rb
226
244
  - spec/declarative_grid/renderers/html_spec.rb