puffer 0.0.3 → 0.0.4

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.
Files changed (32) hide show
  1. data/Gemfile +1 -4
  2. data/Gemfile.lock +1 -1
  3. data/VERSION +1 -1
  4. data/app/views/puffer/index.html.erb +7 -7
  5. data/app/views/puffer/show.html.erb +3 -3
  6. data/lib/generators/puffer/install/install_generator.rb +9 -0
  7. data/lib/generators/puffer/install/templates/puffer/javascripts/application.js +2 -0
  8. data/lib/generators/puffer/install/templates/puffer/javascripts/controls.js +965 -0
  9. data/lib/generators/puffer/install/templates/puffer/javascripts/dragdrop.js +974 -0
  10. data/lib/generators/puffer/install/templates/puffer/javascripts/effects.js +1123 -0
  11. data/lib/generators/puffer/install/templates/puffer/javascripts/prototype.js +6001 -0
  12. data/lib/generators/puffer/install/templates/puffer/javascripts/rails.js +175 -0
  13. data/lib/generators/puffer/install/templates/puffer.rb +0 -0
  14. data/lib/puffer/base.rb +1 -1
  15. data/lib/puffer/controller/dsl.rb +9 -10
  16. data/lib/puffer/controller/helpers.rb +1 -9
  17. data/lib/puffer/controller/mutate.rb +0 -4
  18. data/lib/puffer/fields/field.rb +58 -0
  19. data/lib/puffer/fields.rb +17 -0
  20. data/lib/puffer/resource/scoping.rb +6 -0
  21. data/lib/puffer/resource.rb +5 -5
  22. data/puffer.gemspec +17 -8
  23. data/spec/dummy/app/controllers/admin/categories_controller.rb +10 -0
  24. data/spec/dummy/app/controllers/admin/posts_controller.rb +12 -0
  25. data/spec/dummy/app/controllers/admin/profiles_controller.rb +14 -0
  26. data/spec/dummy/app/controllers/admin/tags_controller.rb +8 -0
  27. data/spec/lib/fields_spec.rb +54 -0
  28. data/spec/lib/params_spec.rb +1 -1
  29. data/spec/lib/resource_spec.rb +37 -3
  30. data/spec/spec_helper.rb +2 -1
  31. metadata +30 -19
  32. data/lib/puffer/field.rb +0 -88
@@ -156,36 +156,59 @@ describe Puffer::Resource do
156
156
  resource = Puffer::Resource.new default_params
157
157
 
158
158
  Category.stub(:new) {@category}
159
+
159
160
  resource.new_member.should == @category
160
161
  end
161
162
 
163
+ it "no parent with attributes" do
164
+ resource = Puffer::Resource.new default_params.merge(:category => {:title => 'my new title'})
165
+
166
+ resource.new_member.title.should == 'my new title'
167
+ end
168
+
162
169
  it "plural parent" do
163
170
  resource = Puffer::Resource.new default_params.merge(:ancestors => [:posts], :post_id => 42)
164
171
 
165
172
  @categories = @post.categories
166
-
167
173
  Post.stub(:find).with(42) {@post}
168
174
  @categories.stub(:new) {@category}
175
+
169
176
  resource.new_member.should == @category
170
177
  end
171
178
 
179
+ it "plural parent with attributes" do
180
+ resource = Puffer::Resource.new default_params.merge(:ancestors => [:posts], :post_id => 42, :category => {:title => 'my new title'})
181
+
182
+ @categories = @post.categories
183
+ Post.stub(:find).with(42) {@post}
184
+
185
+ resource.new_member.title.should == 'my new title'
186
+ end
187
+
172
188
  it "singular" do
173
189
  resource = Puffer::Resource.new default_params.merge(:controller => 'admin/profiles', :plural => false, :ancestors => [:users], :user_id => 42)
174
190
 
175
191
  @profile = @user.profile
176
-
177
192
  User.stub(:find).with(42) {@user}
178
193
  @user.stub(:build_profile) {@profile}
179
194
 
180
195
  resource.new_member.should == @profile
181
196
  end
182
197
 
198
+ it "singular with attributes" do
199
+ resource = Puffer::Resource.new default_params.merge(:controller => 'admin/profiles', :plural => false, :ancestors => [:users], :user_id => 42, :profile => {:name => 'my new name'})
200
+
201
+ @profile = @user.profile
202
+ User.stub(:find).with(42) {@user}
203
+
204
+ resource.new_member.name.should == 'my new name'
205
+ end
206
+
183
207
  it "singular parent" do
184
208
  resource = Puffer::Resource.new default_params.merge(:controller => 'admin/tags', :ancestors => [:users, :profile], :user_id => 42)
185
209
 
186
210
  @profile = @user.profile
187
211
  @tag = @profile.tags.first
188
-
189
212
  User.stub(:find).with(42) {@user}
190
213
  @user.stub(:profile) {@profile}
191
214
  @profile.tags.stub(:new) {@tag}
@@ -193,6 +216,17 @@ describe Puffer::Resource do
193
216
  resource.new_member.should == @tag
194
217
  end
195
218
 
219
+ it "singular parent with attributes" do
220
+ resource = Puffer::Resource.new default_params.merge(:controller => 'admin/tags', :ancestors => [:users, :profile], :user_id => 42, :tag => {:name => 'my new name'})
221
+
222
+ @profile = @user.profile
223
+ @tag = @profile.tags.first
224
+ User.stub(:find).with(42) {@user}
225
+ @user.stub(:profile) {@profile}
226
+
227
+ resource.new_member.name.should == 'my new name'
228
+ end
229
+
196
230
  end
197
231
 
198
232
  end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # Configure Rails Envinronment
2
- ENV["RAILS_ENV"] = "test"
2
+ ENV["RAILS_ENV"] ||= "test"
3
+ Bundler.require(:default, ENV["RAILS_ENV"])
3
4
 
4
5
  require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
6
  require "rails/test_help"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puffer
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease: false
4
+ hash: 23
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 3
10
- version: 0.0.3
9
+ - 4
10
+ version: 0.0.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - pyromaniac
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-30 00:00:00 +03:00
18
+ date: 2011-01-03 00:00:00 +03:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -32,24 +32,25 @@ dependencies:
32
32
  version: 3.0.3
33
33
  requirement: *id001
34
34
  prerelease: false
35
- type: :runtime
36
35
  name: rails
36
+ type: :runtime
37
37
  - !ruby/object:Gem::Dependency
38
38
  version_requirements: &id002 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
42
42
  - !ruby/object:Gem::Version
43
- hash: 31098121
43
+ hash: 1923831917
44
44
  segments:
45
45
  - 3
46
46
  - 0
47
- - beta
48
- version: 3.0.beta
47
+ - pre
48
+ - 2
49
+ version: 3.0.pre2
49
50
  requirement: *id002
50
51
  prerelease: false
51
- type: :runtime
52
52
  name: will_paginate
53
+ type: :runtime
53
54
  - !ruby/object:Gem::Dependency
54
55
  version_requirements: &id003 !ruby/object:Gem::Requirement
55
56
  none: false
@@ -64,8 +65,8 @@ dependencies:
64
65
  version: 0.4.0
65
66
  requirement: *id003
66
67
  prerelease: false
67
- type: :development
68
68
  name: capybara
69
+ type: :development
69
70
  - !ruby/object:Gem::Dependency
70
71
  version_requirements: &id004 !ruby/object:Gem::Requirement
71
72
  none: false
@@ -78,8 +79,8 @@ dependencies:
78
79
  version: "0"
79
80
  requirement: *id004
80
81
  prerelease: false
81
- type: :development
82
82
  name: sqlite3-ruby
83
+ type: :development
83
84
  - !ruby/object:Gem::Dependency
84
85
  version_requirements: &id005 !ruby/object:Gem::Requirement
85
86
  none: false
@@ -92,8 +93,8 @@ dependencies:
92
93
  version: "0"
93
94
  requirement: *id005
94
95
  prerelease: false
95
- type: :development
96
96
  name: rspec-rails
97
+ type: :development
97
98
  - !ruby/object:Gem::Dependency
98
99
  version_requirements: &id006 !ruby/object:Gem::Requirement
99
100
  none: false
@@ -106,8 +107,8 @@ dependencies:
106
107
  version: "0"
107
108
  requirement: *id006
108
109
  prerelease: false
109
- type: :development
110
110
  name: autotest
111
+ type: :development
111
112
  - !ruby/object:Gem::Dependency
112
113
  version_requirements: &id007 !ruby/object:Gem::Requirement
113
114
  none: false
@@ -120,8 +121,8 @@ dependencies:
120
121
  version: "0"
121
122
  requirement: *id007
122
123
  prerelease: false
123
- type: :development
124
124
  name: forgery
125
+ type: :development
125
126
  - !ruby/object:Gem::Dependency
126
127
  version_requirements: &id008 !ruby/object:Gem::Requirement
127
128
  none: false
@@ -134,8 +135,8 @@ dependencies:
134
135
  version: "0"
135
136
  requirement: *id008
136
137
  prerelease: false
137
- type: :development
138
138
  name: fabrication
139
+ type: :development
139
140
  - !ruby/object:Gem::Dependency
140
141
  version_requirements: &id009 !ruby/object:Gem::Requirement
141
142
  none: false
@@ -148,8 +149,8 @@ dependencies:
148
149
  version: "0"
149
150
  requirement: *id009
150
151
  prerelease: false
151
- type: :development
152
152
  name: jeweler
153
+ type: :development
153
154
  description: In Soviet Russia puffer admins you
154
155
  email: kinwizard@gmail.com
155
156
  executables: []
@@ -186,6 +187,13 @@ files:
186
187
  - lib/generators/puffer/controller/templates/controller.rb
187
188
  - lib/generators/puffer/install/USAGE
188
189
  - lib/generators/puffer/install/install_generator.rb
190
+ - lib/generators/puffer/install/templates/puffer.rb
191
+ - lib/generators/puffer/install/templates/puffer/javascripts/application.js
192
+ - lib/generators/puffer/install/templates/puffer/javascripts/controls.js
193
+ - lib/generators/puffer/install/templates/puffer/javascripts/dragdrop.js
194
+ - lib/generators/puffer/install/templates/puffer/javascripts/effects.js
195
+ - lib/generators/puffer/install/templates/puffer/javascripts/prototype.js
196
+ - lib/generators/puffer/install/templates/puffer/javascripts/rails.js
189
197
  - lib/puffer.rb
190
198
  - lib/puffer/base.rb
191
199
  - lib/puffer/controller/actions.rb
@@ -197,7 +205,8 @@ files:
197
205
  - lib/puffer/extensions/controller.rb
198
206
  - lib/puffer/extensions/core.rb
199
207
  - lib/puffer/extensions/mapper.rb
200
- - lib/puffer/field.rb
208
+ - lib/puffer/fields.rb
209
+ - lib/puffer/fields/field.rb
201
210
  - lib/puffer/railtie.rb
202
211
  - lib/puffer/resource.rb
203
212
  - lib/puffer/resource/routing.rb
@@ -260,6 +269,7 @@ files:
260
269
  - spec/fabricators/tags_fabricator.rb
261
270
  - spec/fabricators/users_fabricator.rb
262
271
  - spec/integration/navigation_spec.rb
272
+ - spec/lib/fields_spec.rb
263
273
  - spec/lib/params_spec.rb
264
274
  - spec/lib/render_fallback_spec.rb
265
275
  - spec/lib/resource/routing_spec.rb
@@ -296,7 +306,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
296
306
  requirements: []
297
307
 
298
308
  rubyforge_project:
299
- rubygems_version: 1.3.7
309
+ rubygems_version: 1.4.1
300
310
  signing_key:
301
311
  specification_version: 3
302
312
  summary: Admin interface builder
@@ -341,6 +351,7 @@ test_files:
341
351
  - spec/fabricators/tags_fabricator.rb
342
352
  - spec/fabricators/users_fabricator.rb
343
353
  - spec/integration/navigation_spec.rb
354
+ - spec/lib/fields_spec.rb
344
355
  - spec/lib/params_spec.rb
345
356
  - spec/lib/render_fallback_spec.rb
346
357
  - spec/lib/resource/routing_spec.rb
data/lib/puffer/field.rb DELETED
@@ -1,88 +0,0 @@
1
- module Puffer
2
- class Field
3
-
4
- attr_accessor :name, :options, :main_model
5
-
6
- def initialize(model, name, options = {})
7
- @main_model = model
8
- @name = name
9
- @options = options
10
- end
11
-
12
- def order
13
- @order ||= options[:order] || query_column
14
- end
15
-
16
- def label
17
- @label ||= options[:label] || @name.to_s.humanize
18
- end
19
-
20
- def [](key)
21
- @options[key]
22
- end
23
-
24
- def to_s
25
- @name.to_s
26
- end
27
-
28
- def own?
29
- model == main_model
30
- end
31
-
32
- def toggable?
33
- options[:toggable] = true if options[:toggable].nil?
34
- own? && type == :boolean && options[:toggable]
35
- end
36
-
37
- def association
38
- @association ||= main_model.reflect_on_association(to_s.split('.').first.to_sym)
39
- end
40
-
41
- def association?
42
- !!association
43
- end
44
-
45
- def collection?
46
- association? && [:has_many, :has_and_belongs_to_many].include?(association.macro)
47
- end
48
-
49
- def association_fields
50
- @association_fields ||= @options[:fields].map {|sym| self.class.new(association.klass, sym) }
51
- end
52
-
53
- def association_key
54
- association.primary_key_name
55
- end
56
-
57
- def record
58
- name.split('.')[0..-2].join('.')
59
- end
60
-
61
- def model
62
- unless @model
63
- try_model = to_s.split('.')[-2]
64
- @model = try_model.classify.constantize rescue nil if try_model
65
- @model ||= main_model
66
- end
67
- @model
68
- end
69
-
70
- def type
71
- @options[:type] = :association if association?
72
- @options[:type].to_sym || swallow_nil{column.type}
73
- end
74
-
75
- def column
76
- @column ||= model.columns.detect { |c| c.name == to_s.split('.').last}
77
- end
78
-
79
- def column?
80
- !!column
81
- end
82
-
83
- def query_column
84
- "#{model.to_s.tableize}.#{to_s.split('.').last}" if column
85
- end
86
-
87
- end
88
- end