From 13e18dd94000cef2b2058b96d62de16b7d3a2200 Mon Sep 17 00:00:00 2001 From: Yehuda Katz Date: Mon, 20 Jul 2009 00:58:59 +0900 Subject: Update some tests and add a to_model to form helpers --- actionpack/lib/action_view/context.rb | 8 ++++++-- actionpack/lib/action_view/helpers/active_record_helper.rb | 6 +++--- actionpack/lib/action_view/helpers/form_helper.rb | 2 ++ actionpack/lib/action_view/test_case.rb | 1 + actionpack/test/template/active_record_helper_i18n_test.rb | 1 + actionpack/test/template/form_helper_test.rb | 10 +++++----- actionpack/test/template/record_tag_helper_test.rb | 2 +- 7 files changed, 19 insertions(+), 11 deletions(-) (limited to 'actionpack') 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 # * :submit_value - 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 -- cgit v1.2.3