aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorYehuda Katz <wycats@gmail.com>2009-07-20 00:58:59 +0900
committerYehuda Katz <wycats@gmail.com>2009-07-20 00:58:59 +0900
commit13e18dd94000cef2b2058b96d62de16b7d3a2200 (patch)
tree54b5cbd18b31066744e67e226d8d603f70a5f8c6 /actionpack
parent5ffaaa71d149c9807260c950c9a61d01fe734827 (diff)
downloadrails-13e18dd94000cef2b2058b96d62de16b7d3a2200.tar.gz
rails-13e18dd94000cef2b2058b96d62de16b7d3a2200.tar.bz2
rails-13e18dd94000cef2b2058b96d62de16b7d3a2200.zip
Update some tests and add a to_model to form helpers
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_view/context.rb8
-rw-r--r--actionpack/lib/action_view/helpers/active_record_helper.rb6
-rw-r--r--actionpack/lib/action_view/helpers/form_helper.rb2
-rw-r--r--actionpack/lib/action_view/test_case.rb1
-rw-r--r--actionpack/test/template/active_record_helper_i18n_test.rb1
-rw-r--r--actionpack/test/template/form_helper_test.rb10
-rw-r--r--actionpack/test/template/record_tag_helper_test.rb2
7 files changed, 19 insertions, 11 deletions
diff --git a/actionpack/lib/action_view/context.rb b/actionpack/lib/action_view/context.rb
index 63651fa3f1..f212fe25eb 100644
--- a/actionpack/lib/action_view/context.rb
+++ b/actionpack/lib/action_view/context.rb
@@ -2,7 +2,7 @@ module ActionView
module CompiledTemplates #:nodoc:
# holds compiled template code
end
-
+
# ActionView contexts are supplied to ActionController
# to render template. The default ActionView context
# is ActionView::Base.
@@ -10,7 +10,7 @@ module ActionView
# In order to work with ActionController, a Context
# must implement:
#
- # Context.for_controller[controller] Create a new ActionView instance for a
+ # Context.for_controller[controller] Create a new ActionView instance for a
# controller
# Context#_render_partial_from_controller[options]
# - responsible for setting options[:_template]
@@ -36,5 +36,9 @@ module ActionView
module Context
include CompiledTemplates
attr_accessor :output_buffer
+
+ def convert_to_model(object)
+ object.respond_to?(:to_model) ? object.to_model : object
+ end
end
end \ No newline at end of file
diff --git a/actionpack/lib/action_view/helpers/active_record_helper.rb b/actionpack/lib/action_view/helpers/active_record_helper.rb
index 8dffd3bc91..409b27de73 100644
--- a/actionpack/lib/action_view/helpers/active_record_helper.rb
+++ b/actionpack/lib/action_view/helpers/active_record_helper.rb
@@ -77,7 +77,7 @@ module ActionView
# * <tt>:submit_value</tt> - The text of the submit button (default: "Create" if a new record, otherwise "Update").
def form(record_name, options = {})
record = instance_variable_get("@#{record_name}")
- record = record.to_model if record.respond_to?(:to_model)
+ record = convert_to_model(record)
options = options.symbolize_keys
options[:action] ||= record.new_record? ? "create" : "update"
@@ -122,7 +122,7 @@ module ActionView
end
options.reverse_merge!(:prepend_text => '', :append_text => '', :css_class => 'formError')
- object = object.to_model if object.respond_to?(:to_model)
+ object = convert_to_model(object)
if (obj = (object.respond_to?(:errors) ? object : instance_variable_get("@#{object}"))) &&
(errors = obj.errors[method])
@@ -182,7 +182,7 @@ module ActionView
objects = params.collect {|object_name| instance_variable_get("@#{object_name}") }.compact
end
- objects.map! {|o| o.respond_to?(:to_model) ? o.to_model : o }
+ objects.map! {|o| convert_to_model(o) }
count = objects.inject(0) {|sum, object| sum + object.errors.count }
unless count.zero?
diff --git a/actionpack/lib/action_view/helpers/form_helper.rb b/actionpack/lib/action_view/helpers/form_helper.rb
index ecbdcd8e7a..56ee43496c 100644
--- a/actionpack/lib/action_view/helpers/form_helper.rb
+++ b/actionpack/lib/action_view/helpers/form_helper.rb
@@ -288,6 +288,8 @@ module ActionView
def apply_form_for_options!(object_or_array, options) #:nodoc:
object = object_or_array.is_a?(Array) ? object_or_array.last : object_or_array
+ object = convert_to_model(object)
+
html_options =
if object.respond_to?(:new_record?) && object.new_record?
{ :class => dom_class(object, :new), :id => dom_id(object), :method => :post }
diff --git a/actionpack/lib/action_view/test_case.rb b/actionpack/lib/action_view/test_case.rb
index 7355af4192..3f3951509a 100644
--- a/actionpack/lib/action_view/test_case.rb
+++ b/actionpack/lib/action_view/test_case.rb
@@ -23,6 +23,7 @@ module ActionView
class TestCase < ActiveSupport::TestCase
include ActionDispatch::Assertions
include ActionController::TestProcess
+ include ActionView::Context
class_inheritable_accessor :helper_class
@@helper_class = nil
diff --git a/actionpack/test/template/active_record_helper_i18n_test.rb b/actionpack/test/template/active_record_helper_i18n_test.rb
index 9d04c882c8..7dda9fe275 100644
--- a/actionpack/test/template/active_record_helper_i18n_test.rb
+++ b/actionpack/test/template/active_record_helper_i18n_test.rb
@@ -1,6 +1,7 @@
require 'abstract_unit'
class ActiveRecordHelperI18nTest < Test::Unit::TestCase
+ include ActionView::Context
include ActionView::Helpers::ActiveRecordHelper
attr_reader :request
diff --git a/actionpack/test/template/form_helper_test.rb b/actionpack/test/template/form_helper_test.rb
index bc24ea3556..431ac35e54 100644
--- a/actionpack/test/template/form_helper_test.rb
+++ b/actionpack/test/template/form_helper_test.rb
@@ -1,11 +1,9 @@
require 'abstract_unit'
silence_warnings do
- Post = Struct.new(:title, :author_name, :body, :secret, :written_on, :cost)
- Post.class_eval do
- alias_method :title_before_type_cast, :title unless respond_to?(:title_before_type_cast)
- alias_method :body_before_type_cast, :body unless respond_to?(:body_before_type_cast)
- alias_method :author_name_before_type_cast, :author_name unless respond_to?(:author_name_before_type_cast)
+ class Post < Struct.new(:title, :author_name, :body, :secret, :written_on, :cost)
+ extend ActiveModel::APICompliant
+
alias_method :secret?, :secret
def new_record=(boolean)
@@ -27,6 +25,8 @@ silence_warnings do
end
class Comment
+ extend ActiveModel::APICompliant
+
attr_reader :id
attr_reader :post_id
def initialize(id = nil, post_id = nil); @id, @post_id = id, post_id end
diff --git a/actionpack/test/template/record_tag_helper_test.rb b/actionpack/test/template/record_tag_helper_test.rb
index 861958ffa9..bae26f555d 100644
--- a/actionpack/test/template/record_tag_helper_test.rb
+++ b/actionpack/test/template/record_tag_helper_test.rb
@@ -6,7 +6,7 @@ class Post
45
end
def body
- "What a wonderful world!"
+ super || "What a wonderful world!"
end
end