tabletastic 0.2.0.pre2 → 0.2.0.pre3

Sign up to get free protection for your applications and to get access to all the features.
@@ -33,4 +33,7 @@ module Tabletastic
33
33
  end
34
34
  end
35
35
 
36
- ActionView::Base.send :include, Tabletastic::Helper
36
+ ActiveSupport.on_load(:action_view) do
37
+ include Tabletastic::Helper
38
+ end
39
+
@@ -1,3 +1,3 @@
1
1
  module Tabletastic
2
- VERSION = "0.2.0.pre2"
2
+ VERSION = "0.2.0.pre3"
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -1,116 +1,114 @@
1
- $LOAD_PATH.unshift(File.dirname(__FILE__))
2
1
  require 'rubygems'
2
+ require 'spork'
3
3
 
4
- def smart_require(gem_name, gem_version = '>= 0.0.0', lib_name = nil)
5
- lib_name ||= gem_name
6
- begin
7
- require lib_name if lib_name
8
- rescue LoadError
9
- if gem_name
10
- gem gem_name, gem_version
11
- require lib_name if lib_name
12
- end
13
- end
14
- end
4
+ Spork.prefork do
5
+ ## Use bundler to exec the specs
6
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
7
+ require 'bundler'
8
+ Bundler.setup
9
+ require 'rspec'
15
10
 
16
- smart_require 'rspec', '>= 1.3.0', 'spec'
17
- require 'spec/autorun'
18
- smart_require 'nokogiri'
19
- smart_require 'rspec_tag_matchers', '>= 1.0.0'
20
- smart_require 'activesupport', '>= 3.0.0.beta3', 'active_support'
21
- smart_require 'actionpack', '>= 3.0.0.beta3', 'action_pack'
22
- smart_require 'activerecord', '>= 3.0.0.beta3', 'active_record'
23
- require 'action_controller'
24
- require 'action_view/base'
25
- require 'action_view/template'
26
- require 'action_view/helpers'
27
- Spec::Runner.configure do |config|
28
- config.include(RspecTagMatchers)
29
- end
11
+ require 'rspec_tag_matchers'
12
+ require 'active_record'
13
+ require 'action_controller'
30
14
 
31
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
32
- require 'tabletastic'
33
-
34
- module TabletasticSpecHelper
35
- include ActiveSupport
36
- include ActionView
37
- include ActionView::Helpers::UrlHelper
38
- include ActionView::Helpers::TagHelper
39
- include ActionView::Helpers::TextHelper
40
- include ActionView::Helpers::ActiveModelHelper
41
- include ActionView::Helpers::RecordIdentificationHelper
42
- include ActionView::Helpers::RecordTagHelper
43
- include ActionView::Helpers::CaptureHelper
44
- include ActionView::Helpers::RawOutputHelper
45
- include ActionController::PolymorphicRoutes
46
-
47
- def self.included(base)
48
- base.class_eval do
49
- attr_accessor :output_buffer
50
- end
15
+ require 'action_view/base'
16
+ require 'action_view/template'
17
+ require 'action_view/helpers'
18
+
19
+ RSpec.configure do |config|
20
+ config.include(RspecTagMatchers)
51
21
  end
52
22
 
53
- module ::RspecTagMatchers
54
- def have_table_with_tag(selector, inner_text_or_options = nil, options = {}, &block)
55
- HaveTag.new("table", nil, {}) &&
56
- HaveTag.new(selector, inner_text_or_options, options, &block)
23
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
24
+ require 'tabletastic'
25
+
26
+ module TabletasticSpecHelper
27
+ include ActiveSupport
28
+ include ActionView
29
+ include ActionView::Helpers::UrlHelper
30
+ include ActionView::Helpers::TagHelper
31
+ include ActionView::Helpers::TextHelper
32
+ include ActionView::Helpers::ActiveModelHelper
33
+ include ActionView::Helpers::RecordIdentificationHelper
34
+ include ActionView::Helpers::RecordTagHelper
35
+ include ActionView::Helpers::CaptureHelper
36
+ include ActionView::Helpers::RawOutputHelper
37
+ include ActionController::PolymorphicRoutes
38
+
39
+ def self.included(base)
40
+ base.class_eval do
41
+ attr_accessor :output_buffer
42
+ end
57
43
  end
58
- end
59
44
 
60
- class ::Post
61
- def id
45
+ module ::RspecTagMatchers
46
+ def have_table_with_tag(selector, inner_text_or_options = nil, options = {}, &block)
47
+ HaveTag.new("table", nil, {}) &&
48
+ HaveTag.new(selector, inner_text_or_options, options, &block)
49
+ end
62
50
  end
63
- end
64
- class ::Author
65
- end
66
51
 
67
- def mock_everything
68
- def post_path(post); "/posts/#{post.id}"; end
69
- def admin_post_path(post); "/admin/posts/#{post.id}"; end
70
- def edit_post_path(post); "/posts/#{post.id}/edit"; end
71
- def edit_admin_post_path(post); "/admin/posts/#{post.id}/edit"; end
72
-
73
- # Sometimes we need a mock @post object and some Authors for belongs_to
74
- @post = mock('post')
75
- @post.stub!(:class).and_return(::Post)
76
- @post.stub!(:id).and_return(nil)
77
- @post.stub!(:author)
78
- @post.stub!(:to_key).and_return([2])
79
- ::Post.stub!(:human_attribute_name).and_return { |column_name| column_name.humanize }
80
- ::Post.stub!(:model_name).and_return(ActiveModel::Name.new(::Post))
81
-
82
- @fred = mock('user')
83
- @fred.stub!(:class).and_return(::Author)
84
- @fred.stub!(:name).and_return('Fred Smith')
85
- @fred.stub!(:id).and_return(37)
86
-
87
- ::Author.stub!(:find).and_return([@fred])
88
- ::Author.stub!(:human_attribute_name).and_return { |column_name| column_name.humanize }
89
- ::Author.stub!(:human_name).and_return('Author')
90
- ::Author.stub!(:model_name).and_return(ActiveModel::Name.new(::Author))
91
- ::Author.stub!(:reflect_on_association).and_return { |column_name| mock('reflection', :options => {}, :klass => Post, :macro => :has_many) if column_name == :posts }
92
-
93
- @freds_post = mock('post')
94
- @freds_post.stub!(:class).and_return(::Post)
95
- @freds_post.stub!(:title).and_return('Fred\'s Post')
96
- @freds_post.stub!(:body)
97
- @freds_post.stub!(:id).and_return(19)
98
- @freds_post.stub!(:to_key).and_return([19])
99
- @freds_post.stub!(:author).and_return(@fred)
100
- @freds_post.stub!(:author_id).and_return(@fred.id)
101
- @fred.stub!(:posts).and_return([@freds_post])
102
- @fred.stub!(:post_ids).and_return([@freds_post.id])
103
-
104
- @mock_reflection_belongs_to_author = mock('reflection', :options => {}, :name => :author, :klass => ::Author, :macro => :belongs_to)
105
-
106
- ::Post.stub!(:reflect_on_association).and_return do |column_name|
107
- @mock_reflection_belongs_to_author if column_name == :author
52
+ class ::Post
53
+ def id
54
+ end
55
+ end
56
+ class ::Author
108
57
  end
109
58
 
110
- ::Post.stub!(:reflect_on_all_associations).with(:belongs_to).and_return([])
59
+ def mock_everything
60
+ def post_path(post); "/posts/#{post.id}"; end
61
+ def admin_post_path(post); "/admin/posts/#{post.id}"; end
62
+ def edit_post_path(post); "/posts/#{post.id}/edit"; end
63
+ def edit_admin_post_path(post); "/admin/posts/#{post.id}/edit"; end
64
+
65
+ # Sometimes we need a mock @post object and some Authors for belongs_to
66
+ @post = mock('post')
67
+ @post.stub!(:class).and_return(::Post)
68
+ @post.stub!(:id).and_return(nil)
69
+ @post.stub!(:author)
70
+ @post.stub!(:to_key).and_return([2])
71
+ ::Post.stub!(:human_attribute_name).and_return { |column_name| column_name.humanize }
72
+ ::Post.stub!(:model_name).and_return(ActiveModel::Name.new(::Post))
73
+
74
+ @fred = mock('user')
75
+ @fred.stub!(:class).and_return(::Author)
76
+ @fred.stub!(:name).and_return('Fred Smith')
77
+ @fred.stub!(:id).and_return(37)
78
+
79
+ ::Author.stub!(:find).and_return([@fred])
80
+ ::Author.stub!(:human_attribute_name).and_return { |column_name| column_name.humanize }
81
+ ::Author.stub!(:human_name).and_return('Author')
82
+ ::Author.stub!(:model_name).and_return(ActiveModel::Name.new(::Author))
83
+ ::Author.stub!(:reflect_on_association).and_return { |column_name| mock('reflection', :options => {}, :klass => Post, :macro => :has_many) if column_name == :posts }
84
+
85
+ @freds_post = mock('post')
86
+ @freds_post.stub!(:class).and_return(::Post)
87
+ @freds_post.stub!(:title).and_return('Fred\'s Post')
88
+ @freds_post.stub!(:body)
89
+ @freds_post.stub!(:id).and_return(19)
90
+ @freds_post.stub!(:to_key).and_return([19])
91
+ @freds_post.stub!(:author).and_return(@fred)
92
+ @freds_post.stub!(:author_id).and_return(@fred.id)
93
+ @fred.stub!(:posts).and_return([@freds_post])
94
+ @fred.stub!(:post_ids).and_return([@freds_post.id])
95
+
96
+ @mock_reflection_belongs_to_author = mock('reflection', :options => {}, :name => :author, :klass => ::Author, :macro => :belongs_to)
97
+
98
+ ::Post.stub!(:reflect_on_association).and_return do |column_name|
99
+ @mock_reflection_belongs_to_author if column_name == :author
100
+ end
101
+
102
+ ::Post.stub!(:reflect_on_all_associations).with(:belongs_to).and_return([])
103
+ end
111
104
  end
105
+
106
+ include TabletasticSpecHelper
107
+ include Tabletastic
108
+ include Tabletastic::Helper
112
109
  end
113
110
 
114
- include TabletasticSpecHelper
115
- include Tabletastic
116
- include Tabletastic::Helper
111
+ Spork.each_run do
112
+ # This code will be run each time you run your specs.
113
+
114
+ end
@@ -0,0 +1,316 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tabletastic::TableBuilder do
4
+
5
+ before do
6
+ @output_buffer = ActiveSupport::SafeBuffer.new
7
+
8
+ mock_everything
9
+ ::Post.stub!(:content_columns).and_return([mock('column', :name => 'title'), mock('column', :name => 'body'), mock('column', :name => 'created_at')])
10
+ @post.stub!(:title).and_return("The title of the post")
11
+ @post.stub!(:body).and_return("Lorem ipsum")
12
+ @post.stub!(:created_at).and_return(Time.now)
13
+ @post.stub!(:id).and_return(2)
14
+ @posts = [@post]
15
+ end
16
+
17
+ context "without a block" do
18
+ context "with no other arguments" do
19
+ before do
20
+ concat table_for(@posts) { |t| t.data }
21
+ end
22
+
23
+ it "should output table with id of the class of the collection" do
24
+ output_buffer.should have_tag("table#posts")
25
+ end
26
+
27
+ it "should output head" do
28
+ output_buffer.should have_table_with_tag("thead")
29
+ end
30
+
31
+ it "should have a <th> for each attribute" do
32
+ # title and body
33
+ output_buffer.should have_table_with_tag("th", :count => 2)
34
+ end
35
+
36
+ it "should include header for Title" do
37
+ output_buffer.should have_table_with_tag("th", "Title")
38
+ end
39
+
40
+ it "should include header for Body" do
41
+ output_buffer.should have_table_with_tag("th", "Body")
42
+ end
43
+
44
+ it "should output body" do
45
+ output_buffer.should have_table_with_tag("tbody")
46
+ end
47
+
48
+ it "should include a row for each record" do
49
+ output_buffer.should have_table_with_tag("tbody") do |tbody|
50
+ tbody.should have_tag("tr", :count => 1)
51
+ end
52
+ end
53
+
54
+ it "should have data for each field" do
55
+ output_buffer.should have_table_with_tag("td", "The title of the post")
56
+ output_buffer.should have_table_with_tag("td", "Lorem ipsum")
57
+ end
58
+
59
+ it "should include the id for the <tr> for each record" do
60
+ output_buffer.should have_table_with_tag("tr#post_#{@post.id}")
61
+ end
62
+
63
+ it "should cycle row classes" do
64
+ @output_buffer = ""
65
+ @posts = [@post, @post]
66
+ table_for(@posts) do |t|
67
+ concat(t.data)
68
+ end
69
+ output_buffer.should have_table_with_tag("tr.odd")
70
+ output_buffer.should have_table_with_tag("tr.even")
71
+ end
72
+
73
+ context "when collection has associations" do
74
+ it "should handle belongs_to associations" do
75
+ ::Post.stub!(:reflect_on_all_associations).with(:belongs_to).and_return([@mock_reflection_belongs_to_author])
76
+ @posts = [@freds_post]
77
+ @output_buffer = ""
78
+ concat table_for(@posts) { |t| t.data }
79
+ output_buffer.should have_table_with_tag("th", "Author")
80
+ output_buffer.should have_table_with_tag("td", "Fred Smith")
81
+ end
82
+ end
83
+ end
84
+
85
+ context "with options[:actions]" do
86
+ it "includes path to post for :show" do
87
+ table_for(@posts) do |t|
88
+ concat(t.data(:actions => :show))
89
+ end
90
+ output_buffer.should have_table_with_tag("a[@href=\"/posts/#{@post.id}\"]")
91
+ output_buffer.should have_table_with_tag("th", "")
92
+ end
93
+
94
+ it "should have a cell with default class 'actions' and the action name" do
95
+ table_for(@posts) do |t|
96
+ concat(t.data(:actions => :show))
97
+ end
98
+ output_buffer.should have_tag("td.actions.show_link") do |td|
99
+ td.should have_tag("a")
100
+ end
101
+ end
102
+
103
+ it "includes path to post for :edit" do
104
+ table_for(@posts) do |t|
105
+ concat(t.data(:actions => :edit))
106
+ end
107
+ output_buffer.should have_tag("a[@href=\"/posts/#{@post.id}/edit\"]", "Edit")
108
+ end
109
+
110
+ it "includes path to post for :destroy" do
111
+ table_for(@posts) do |t|
112
+ concat(t.data(:actions => :destroy))
113
+ end
114
+ output_buffer.should have_table_with_tag("a[@href=\"/posts/#{@post.id}\"]")
115
+ output_buffer.should have_table_with_tag("th", "")
116
+ end
117
+
118
+ it "includes path to post for :show and :edit" do
119
+ table_for(@posts) do |t|
120
+ concat(t.data(:actions => [:show, :edit]))
121
+ end
122
+ output_buffer.should have_tag("td:nth-child(3) a[@href=\"/posts/#{@post.id}\"]", "Show")
123
+ output_buffer.should have_tag("td:nth-child(4) a[@href=\"/posts/#{@post.id}/edit\"]", "Edit")
124
+ end
125
+
126
+ it "includes path to post for :all" do
127
+ table_for(@posts) do |t|
128
+ concat(t.data(:actions => :all))
129
+ end
130
+ output_buffer.should have_tag("td:nth-child(3) a[@href=\"/posts/#{@post.id}\"]", "Show")
131
+ output_buffer.should have_tag("td:nth-child(4) a[@href=\"/posts/#{@post.id}/edit\"]", "Edit")
132
+ output_buffer.should have_tag("td:nth-child(5) a[@href=\"/posts/#{@post.id}\"]", "Destroy")
133
+ end
134
+
135
+ context "with options[:actions_prefix]" do
136
+ it "includes path to admin post for :show" do
137
+ table_for(@posts) do |t|
138
+ concat(t.data(:actions => :show, :action_prefix => :admin))
139
+ end
140
+ output_buffer.should have_tag("td:nth-child(3) a[@href=\"/admin/posts/#{@post.id}\"]", "Show")
141
+ end
142
+
143
+ it "includes path to admin post for :edit" do
144
+ table_for(@posts) do |t|
145
+ concat(t.data(:actions => :edit, :action_prefix => :admin))
146
+ end
147
+ output_buffer.should have_tag("td:nth-child(3) a[@href=\"/admin/posts/#{@post.id}/edit\"]", "Edit")
148
+ end
149
+
150
+ it "includes path to admin post for :destroy" do
151
+ table_for(@posts) do |t|
152
+ concat(t.data(:actions => :destroy, :action_prefix => :admin))
153
+ end
154
+ output_buffer.should have_tag("td:nth-child(3) a[@href=\"/admin/posts/#{@post.id}\"]", "Destroy")
155
+ end
156
+
157
+ it "includes path to admin for all actions" do
158
+ table_for(@posts) do |t|
159
+ concat(t.data(:actions => :all, :action_prefix => :admin))
160
+ end
161
+ output_buffer.should have_tag("td:nth-child(3) a[@href=\"/admin/posts/#{@post.id}\"]", "Show")
162
+ output_buffer.should have_tag("td:nth-child(4) a[@href=\"/admin/posts/#{@post.id}/edit\"]", "Edit")
163
+ output_buffer.should have_tag("td:nth-child(5) a[@href=\"/admin/posts/#{@post.id}\"]", "Destroy")
164
+ end
165
+ end
166
+ end
167
+
168
+ context "with a list of attributes" do
169
+ before do
170
+ table_for(@posts) do |t|
171
+ concat(t.data(:title, :created_at))
172
+ end
173
+ end
174
+
175
+ it "should call each method passed in, and only those methods" do
176
+ output_buffer.should have_table_with_tag("th", "Title")
177
+ output_buffer.should have_table_with_tag("th", "Created at")
178
+ output_buffer.should_not have_table_with_tag("th", "Body")
179
+ end
180
+ end
181
+
182
+ context "with a list of attributes and options[:actions]" do
183
+ it "includes path to post for :show" do
184
+ table_for(@posts) do |t|
185
+ concat(t.data(:title, :created_at, :actions => :show))
186
+ end
187
+ output_buffer.should have_tag("th:nth-child(1)", "Title")
188
+ output_buffer.should have_tag("th:nth-child(2)", "Created at")
189
+ output_buffer.should have_tag("th:nth-child(3)", "")
190
+ output_buffer.should_not have_tag("th", "Body")
191
+
192
+ output_buffer.should have_tag("td:nth-child(3) a[@href=\"/posts/#{@post.id}\"]")
193
+ end
194
+ end
195
+ end
196
+
197
+ context "with a block" do
198
+ context "and normal columns" do
199
+ before do
200
+ concat(table_for(@posts) do |t|
201
+ t.data do
202
+ t.cell(:title)
203
+ t.cell(:body)
204
+ end
205
+ end)
206
+ end
207
+
208
+ it "should include the data for the fields passed in" do
209
+ output_buffer.should have_table_with_tag("th", "Title")
210
+ output_buffer.should have_tag("td", "The title of the post")
211
+ output_buffer.should have_tag("td", "Lorem ipsum")
212
+ end
213
+ end
214
+
215
+ context "with custom cell options" do
216
+ before do
217
+ concat(table_for(@posts) do |t|
218
+ t.data do
219
+ t.cell(:title, :heading => "FooBar")
220
+ t.cell(:body, :cell_html => {:class => "batquux"})
221
+ end
222
+ end)
223
+ end
224
+
225
+ it "should change the heading label for :heading option" do
226
+ output_buffer.should have_table_with_tag("th", "FooBar")
227
+ output_buffer.should have_table_with_tag("th", "Body")
228
+ end
229
+
230
+ it "should pass :cell_html to the cell" do
231
+ output_buffer.should have_table_with_tag("td.batquux")
232
+ end
233
+ end
234
+
235
+ context "with custom cell options" do
236
+ before do
237
+ concat(table_for(@posts) do |t|
238
+ t.data do
239
+ t.cell(:title) {|p| link_to p.title, "/" }
240
+ t.cell(:body, :heading => "Content") {|p| p.body }
241
+ end
242
+ end)
243
+ end
244
+
245
+ it "accepts a block as a lazy attribute" do
246
+ output_buffer.should have_table_with_tag("th:nth-child(1)", "Title")
247
+ output_buffer.should have_table_with_tag("td:nth-child(1)") do |td|
248
+ td.should have_tag("a", "The title of the post")
249
+ end
250
+ end
251
+
252
+ it "accepts a block as a lazy attribute (2)" do
253
+ output_buffer.should have_table_with_tag("th:nth-child(2)", "Content")
254
+ output_buffer.should have_table_with_tag("td:nth-child(2)", "Lorem ipsum")
255
+ end
256
+ end
257
+
258
+ context "with options[:actions]" do
259
+ it "includes path to post for :show" do
260
+ concat(table_for(@posts) do |t|
261
+ t.data(:actions => :show) do
262
+ t.cell(:title)
263
+ t.cell(:body)
264
+ end
265
+ end)
266
+ output_buffer.should have_table_with_tag("td:nth-child(3) a[@href=\"/posts/#{@post.id}\"]")
267
+ end
268
+ end
269
+
270
+ context "and normal/association columns" do
271
+ before do
272
+ ::Post.stub!(:reflect_on_all_associations).with(:belongs_to).and_return([@mock_reflection_belongs_to_author])
273
+ @posts = [@freds_post]
274
+ concat(table_for(@posts) do |t|
275
+ t.data do
276
+ t.cell(:title)
277
+ t.cell(:author)
278
+ end
279
+ end)
280
+ end
281
+
282
+ it "should include normal columns" do
283
+ output_buffer.should have_table_with_tag("th:nth-child(1)", "Title")
284
+ output_buffer.should have_table_with_tag("td:nth-child(1)", "Fred's Post")
285
+ end
286
+
287
+ it "should include belongs_to associations" do
288
+ output_buffer.should have_table_with_tag("th:nth-child(2)", "Author")
289
+ output_buffer.should have_table_with_tag("td:nth-child(2)", "Fred Smith")
290
+ end
291
+ end
292
+ end
293
+
294
+ context "using human_attribute_names" do
295
+ it "should work" do
296
+ ::Post.stub!(:human_attribute_name).with('body').and_return("Blah blue")
297
+
298
+ concat(table_for(@posts) do |t|
299
+ t.data do
300
+ t.cell(:title)
301
+ t.cell(:body)
302
+ end
303
+ end)
304
+
305
+ output_buffer.should have_table_with_tag("th", "Blah blue")
306
+ end
307
+ end
308
+
309
+ context "when table_for is not passed a block" do
310
+ it "the data should use the default option" do
311
+ Tabletastic.default_table_block = lambda {|table| table.data}
312
+ concat table_for(@posts)
313
+ output_buffer.should have_table_with_tag("td", "The title of the post")
314
+ end
315
+ end
316
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tabletastic::TableField do
4
+ it "should guess its heading automatically" do
5
+ tf = TableField.new(:method)
6
+ tf.method_or_proc.should == :method
7
+ tf.heading.should == "Method"
8
+ end
9
+
10
+ it "should know its heading when provided" do
11
+ tf = TableField.new(:method, :heading => 'Foo', :klass => ::Post)
12
+ tf.heading.should == "Foo"
13
+ end
14
+
15
+ it "should know what to do with a record" do
16
+ tf = TableField.new(:downcase)
17
+ tf.cell_data("HELLO").should == "hello"
18
+ end
19
+
20
+ it "should use a human_attribute_name whenever possible" do
21
+ ::Post.stub!(:human_attribute_name).with('method').and_return("Blah blue")
22
+ tf = TableField.new(:method, :klass => ::Post)
23
+ tf.heading.should == "Blah blue"
24
+ end
25
+
26
+ it "should know what to do with a record (proc)" do
27
+ tf = TableField.new(:fake) do |record|
28
+ record.upcase
29
+ end
30
+ tf.cell_data("hello").should == "HELLO"
31
+ end
32
+ end
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tabletastic
3
3
  version: !ruby/object:Gem::Version
4
+ hash: -1876988178
4
5
  prerelease: true
5
6
  segments:
6
7
  - 0
7
8
  - 2
8
9
  - 0
9
- - pre2
10
- version: 0.2.0.pre2
10
+ - pre3
11
+ version: 0.2.0.pre3
11
12
  platform: ruby
12
13
  authors:
13
14
  - Joshua Davey
@@ -15,21 +16,40 @@ autorequire:
15
16
  bindir: bin
16
17
  cert_chain: []
17
18
 
18
- date: 2010-04-18 00:00:00 -05:00
19
+ date: 2010-06-28 00:00:00 -05:00
19
20
  default_executable:
20
21
  dependencies:
21
22
  - !ruby/object:Gem::Dependency
22
- name: rspec
23
+ name: activesupport
23
24
  prerelease: false
24
25
  requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ hash: -1848230022
31
+ segments:
32
+ - 3
33
+ - 0
34
+ - 0
35
+ - beta2
36
+ version: 3.0.0.beta2
37
+ type: :runtime
38
+ version_requirements: *id001
39
+ - !ruby/object:Gem::Dependency
40
+ name: rspec
41
+ prerelease: false
42
+ requirement: &id002 !ruby/object:Gem::Requirement
43
+ none: false
25
44
  requirements:
26
45
  - - ">="
27
46
  - !ruby/object:Gem::Version
47
+ hash: 3
28
48
  segments:
29
49
  - 0
30
50
  version: "0"
31
51
  type: :development
32
- version_requirements: *id001
52
+ version_requirements: *id002
33
53
  description: A table builder for active record collections that produces semantically rich and accessible table markup
34
54
  email: josh@joshuadavey.com
35
55
  executables: []
@@ -49,6 +69,10 @@ files:
49
69
  - README.rdoc
50
70
  - CHANGELOG.rdoc
51
71
  - init.rb
72
+ - spec/tabletastic/table_builder_spec.rb
73
+ - spec/tabletastic/table_field_spec.rb
74
+ - spec/tabletastic_spec.rb
75
+ - spec/spec_helper.rb
52
76
  has_rdoc: true
53
77
  homepage: http://github.com/jgdavey/tabletastic
54
78
  licenses: []
@@ -59,16 +83,20 @@ rdoc_options: []
59
83
  require_paths:
60
84
  - lib
61
85
  required_ruby_version: !ruby/object:Gem::Requirement
86
+ none: false
62
87
  requirements:
63
88
  - - ">="
64
89
  - !ruby/object:Gem::Version
90
+ hash: 3
65
91
  segments:
66
92
  - 0
67
93
  version: "0"
68
94
  required_rubygems_version: !ruby/object:Gem::Requirement
95
+ none: false
69
96
  requirements:
70
97
  - - ">="
71
98
  - !ruby/object:Gem::Version
99
+ hash: 23
72
100
  segments:
73
101
  - 1
74
102
  - 3
@@ -77,10 +105,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
105
  requirements: []
78
106
 
79
107
  rubyforge_project:
80
- rubygems_version: 1.3.6
108
+ rubygems_version: 1.3.7
81
109
  signing_key:
82
110
  specification_version: 3
83
111
  summary: A smarter table builder for Rails collections
84
112
  test_files:
85
- - spec/spec_helper.rb
113
+ - spec/tabletastic/table_builder_spec.rb
114
+ - spec/tabletastic/table_field_spec.rb
86
115
  - spec/tabletastic_spec.rb
116
+ - spec/spec_helper.rb