active_presenter 0.0.1 → 0.0.2
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.
- data/Rakefile +0 -9
- data/lib/active_presenter/base.rb +9 -2
- data/lib/active_presenter/version.rb +1 -1
- data/lib/tasks/doc.rake +19 -0
- data/test/base_test.rb +5 -0
- data/test/test_helper.rb +6 -0
- metadata +3 -2
data/Rakefile
CHANGED
@@ -8,12 +8,3 @@ task :default => :test
|
|
8
8
|
task :test do
|
9
9
|
Dir['test/**/*_test.rb'].each { |l| require l }
|
10
10
|
end
|
11
|
-
|
12
|
-
desc 'Generate documentation for the ResourceController plugin.'
|
13
|
-
Rake::RDocTask.new(:rdoc) do |rdoc|
|
14
|
-
rdoc.rdoc_dir = 'rdoc'
|
15
|
-
rdoc.title = 'ActivePresenter'
|
16
|
-
rdoc.options << '--line-numbers' << '--inline-source'
|
17
|
-
rdoc.rdoc_files.include('README')
|
18
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
19
|
-
end
|
@@ -58,7 +58,7 @@ module ActivePresenter
|
|
58
58
|
# Set the attributes of the presentable instances using the type_attribute form (i.e. user_login => 'james')
|
59
59
|
#
|
60
60
|
def attributes=(attrs)
|
61
|
-
attrs.each { |k,v| send("#{k}=", v) }
|
61
|
+
attrs.each { |k,v| send("#{k}=", v) unless attribute_protected?(k)}
|
62
62
|
end
|
63
63
|
|
64
64
|
# Makes sure that the presenter is accurate about responding to presentable's attributes, even though they are handled by method_missing.
|
@@ -145,7 +145,8 @@ module ActivePresenter
|
|
145
145
|
end
|
146
146
|
|
147
147
|
def presented_attribute?(method_name)
|
148
|
-
|
148
|
+
p = presentable_for(method_name)
|
149
|
+
!p.nil? && send(p).respond_to?(flatten_attribute_name(method_name,p))
|
149
150
|
end
|
150
151
|
|
151
152
|
def flatten_attribute_name(name, type)
|
@@ -161,5 +162,11 @@ module ActivePresenter
|
|
161
162
|
errors.add(attribute_prefix(type)+att, msg)
|
162
163
|
end
|
163
164
|
end
|
165
|
+
|
166
|
+
def attribute_protected?(name)
|
167
|
+
presentable = presentable_for(name)
|
168
|
+
flat_attribute = {flatten_attribute_name(name, presentable) => ''} #remove_att... normally takes a hash, so we use a ''
|
169
|
+
presentable.to_s.classify.constantize.new.send(:remove_attributes_protected_from_mass_assignment, flat_attribute).empty?
|
170
|
+
end
|
164
171
|
end
|
165
172
|
end
|
data/lib/tasks/doc.rake
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
desc 'Generate documentation for the ResourceController plugin.'
|
2
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
3
|
+
rdoc.rdoc_dir = 'rdoc'
|
4
|
+
rdoc.title = 'ActivePresenter'
|
5
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
6
|
+
rdoc.rdoc_files.include('README')
|
7
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
8
|
+
end
|
9
|
+
|
10
|
+
task :upload_docs => :rdoc do
|
11
|
+
puts 'Deleting previous rdoc'
|
12
|
+
`ssh jamesgolick.com 'rm -Rf /home/apps/jamesgolick.com/public/active_presenter/rdoc'`
|
13
|
+
|
14
|
+
puts "Uploading current rdoc"
|
15
|
+
`scp -r rdoc jamesgolick.com:/home/apps/jamesgolick.com/public/active_presenter/rdoc`
|
16
|
+
|
17
|
+
puts "Deleting rdoc"
|
18
|
+
`rm -Rf rdoc`
|
19
|
+
end
|
data/test/base_test.rb
CHANGED
@@ -17,6 +17,10 @@ Expectations do
|
|
17
17
|
SignupPresenter.new(:user_login => 'james')
|
18
18
|
end
|
19
19
|
|
20
|
+
# admin= should be protected from mass assignment
|
21
|
+
expect SignupPresenter.new.to.be.attribute_protected?(:user_admin)
|
22
|
+
expect SignupPresenter.new(:user_admin => true).user.not.to.be.admin?
|
23
|
+
|
20
24
|
expect 'mymockvalue' do
|
21
25
|
User.any_instance.stubs(:login).returns('mymockvalue')
|
22
26
|
SignupPresenter.new.user_login
|
@@ -101,6 +105,7 @@ Expectations do
|
|
101
105
|
expect SignupPresenter.new(:user => User.new(hash_for_user)).to.be.save!
|
102
106
|
|
103
107
|
expect SignupPresenter.new.to.be.respond_to?(:user_login)
|
108
|
+
expect SignupPresenter.new.to.be.respond_to?(:user_password_confirmation)
|
104
109
|
expect SignupPresenter.new.to.be.respond_to?(:valid?) # just making sure i didn't break everything :)
|
105
110
|
|
106
111
|
expect User.create!(hash_for_user).not.to.be.login_changed? do |user|
|
data/test/test_helper.rb
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
require File.dirname(__FILE__)+'/../lib/active_presenter'
|
2
2
|
require 'expectations'
|
3
|
+
require 'logger'
|
3
4
|
|
4
5
|
ActiveRecord::Base.configurations = {'sqlite3' => {:adapter => 'sqlite3', :database => ':memory:'}}
|
5
6
|
ActiveRecord::Base.establish_connection('sqlite3')
|
6
7
|
|
8
|
+
ActiveRecord::Base.logger = Logger.new(STDERR)
|
9
|
+
ActiveRecord::Base.logger.level = Logger::WARN
|
10
|
+
|
7
11
|
ActiveRecord::Schema.define(:version => 0) do
|
8
12
|
create_table :users do |t|
|
9
13
|
t.boolean :admin, :default => false
|
@@ -19,6 +23,8 @@ end
|
|
19
23
|
|
20
24
|
class User < ActiveRecord::Base
|
21
25
|
validates_presence_of :login, :password
|
26
|
+
attr_accessible :login, :password
|
27
|
+
attr_accessor :password_confirmation
|
22
28
|
end
|
23
29
|
class Account < ActiveRecord::Base; end
|
24
30
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_presenter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Golick & Daniel Haran
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-07-
|
12
|
+
date: 2008-07-28 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -30,6 +30,7 @@ files:
|
|
30
30
|
- lib/active_presenter/version.rb
|
31
31
|
- lib/active_presenter.rb
|
32
32
|
- lib/tasks
|
33
|
+
- lib/tasks/doc.rake
|
33
34
|
- lib/tasks/gem.rake
|
34
35
|
- test/base_test.rb
|
35
36
|
- test/test_helper.rb
|