diff options
Diffstat (limited to 'actionpack/test')
-rw-r--r-- | actionpack/test/abstract_unit.rb | 3 | ||||
-rw-r--r-- | actionpack/test/activerecord/render_partial_with_record_identification_test.rb | 1 | ||||
-rw-r--r-- | actionpack/test/controller/record_identifier_test.rb | 1 | ||||
-rw-r--r-- | actionpack/test/controller/redirect_test.rb | 1 | ||||
-rw-r--r-- | actionpack/test/javascript/ajax_test.rb | 115 | ||||
-rw-r--r-- | actionpack/test/lib/controller/fake_models.rb | 2 | ||||
-rw-r--r-- | actionpack/test/template/active_record_helper_i18n_test.rb | 3 | ||||
-rw-r--r-- | actionpack/test/template/active_record_helper_test.rb | 21 | ||||
-rw-r--r-- | actionpack/test/template/asset_tag_helper_test.rb | 40 | ||||
-rw-r--r-- | actionpack/test/template/atom_feed_helper_test.rb | 10 | ||||
-rw-r--r-- | actionpack/test/template/compiled_templates_test.rb | 2 | ||||
-rw-r--r-- | actionpack/test/template/form_helper_test.rb | 27 | ||||
-rw-r--r-- | actionpack/test/template/prototype_helper_test.rb | 10 | ||||
-rw-r--r-- | actionpack/test/template/record_tag_helper_test.rb | 3 | ||||
-rw-r--r-- | actionpack/test/template/url_helper_test.rb | 2 |
15 files changed, 211 insertions, 30 deletions
diff --git a/actionpack/test/abstract_unit.rb b/actionpack/test/abstract_unit.rb index 30e795a7a2..6e71b85645 100644 --- a/actionpack/test/abstract_unit.rb +++ b/actionpack/test/abstract_unit.rb @@ -20,6 +20,7 @@ require 'action_controller/testing/process' require 'action_view/test_case' require 'action_controller/testing/integration' require 'active_support/dependencies' +require 'active_model' $tags[:new_base] = true @@ -97,7 +98,7 @@ module ActionController partials = hax[:partials] if expected_count = options[:count] found = partials.detect { |p, _| p.identifier.match(expected_partial) } - actual_count = found.nil? ? 0 : found.second + actual_count = found.nil? ? 0 : found[1] msg = build_message(message, "expecting ? to be rendered ? time(s) but rendered ? time(s)", expected_partial, expected_count, actual_count) diff --git a/actionpack/test/activerecord/render_partial_with_record_identification_test.rb b/actionpack/test/activerecord/render_partial_with_record_identification_test.rb index 2a31f3be44..df50c3dc6f 100644 --- a/actionpack/test/activerecord/render_partial_with_record_identification_test.rb +++ b/actionpack/test/activerecord/render_partial_with_record_identification_test.rb @@ -127,6 +127,7 @@ end class Game < Struct.new(:name, :id) extend ActiveModel::Naming + include ActiveModel::Conversion def to_param id.to_s end diff --git a/actionpack/test/controller/record_identifier_test.rb b/actionpack/test/controller/record_identifier_test.rb index 28bc608d47..44e49ed3f8 100644 --- a/actionpack/test/controller/record_identifier_test.rb +++ b/actionpack/test/controller/record_identifier_test.rb @@ -2,6 +2,7 @@ require 'abstract_unit' class Comment extend ActiveModel::Naming + include ActiveModel::Conversion attr_reader :id def save; @id = 1 end diff --git a/actionpack/test/controller/redirect_test.rb b/actionpack/test/controller/redirect_test.rb index 453a77e7bc..b3321303c0 100644 --- a/actionpack/test/controller/redirect_test.rb +++ b/actionpack/test/controller/redirect_test.rb @@ -5,6 +5,7 @@ end class Workshop extend ActiveModel::Naming + include ActiveModel::Conversion attr_accessor :id, :new_record def initialize(id, new_record) diff --git a/actionpack/test/javascript/ajax_test.rb b/actionpack/test/javascript/ajax_test.rb new file mode 100644 index 0000000000..b67a91dad3 --- /dev/null +++ b/actionpack/test/javascript/ajax_test.rb @@ -0,0 +1,115 @@ +require "abstract_unit" + +class AjaxTestCase < ActiveSupport::TestCase + include ActionView::Helpers::AjaxHelper + include ActionView::Helpers::TagHelper + + def assert_html(html, matches) + matches.each do |match| + assert_match Regexp.new(Regexp.escape(match)), html + end + end + + def self.assert_callbacks_work(&blk) + define_method(:assert_callbacks_work, &blk) + + [:complete, :failure, :success, :interactive, :loaded, :loading, 404].each do |callback| + test "#{callback} callback" do + markup = assert_callbacks_work(callback) + assert_html markup, %W(data-#{callback}-code="undoRequestCompleted\(request\)") + end + end + end +end + +class LinkToRemoteTest < AjaxTestCase + def url_for(hash) + "/blog/destroy/4" + end + + def link(options = {}) + link_to_remote("Delete this post", "/blog/destroy/3", options) + end + + test "with no update" do + assert_html link, %w(href="/blog/destroy/3" Delete\ this\ post data-remote="true") + end + + test "basic" do + assert_html link(:update => "#posts"), + %w(data-update-success="#posts") + end + + test "using a url hash" do + link = link_to_remote("Delete this post", {:controller => :blog}, :update => "#posts") + assert_html link, %w(href="/blog/destroy/4" data-update-success="#posts") + end + + test "with :html options" do + expected = %{<a href="/blog/destroy/3" data-custom="me" data-update-success="#posts">Delete this post</a>} + assert_equal expected, link(:update => "#posts", :html => {"data-custom" => "me"}) + end + + test "with a hash for :update" do + link = link(:update => {:success => "#posts", :failure => "#error"}) + assert_match /data-update-success="#posts"/, link + assert_match /data-update-failure="#error"/, link + end + + test "with positional parameters" do + link = link(:position => :top, :update => "#posts") + assert_match /data\-update\-position="top"/, link + end + + test "with an optional method" do + link = link(:method => "delete") + assert_match /data-method="delete"/, link + end + + class LegacyLinkToRemoteTest < AjaxTestCase + include ActionView::Helpers::AjaxHelper::Rails2Compatibility + + def link(options) + link_to_remote("Delete this post", "/blog/destroy/3", options) + end + + test "basic link_to_remote with :url =>" do + expected = %{<a href="/blog/destroy/3" data-update-success="#posts">Delete this post</a>} + assert_equal expected, + link_to_remote("Delete this post", :url => "/blog/destroy/3", :update => "#posts") + end + + assert_callbacks_work do |callback| + link(callback => "undoRequestCompleted(request)") + end + end +end + +class ButtonToRemoteTest < AjaxTestCase + def button(options, html = {}) + button_to_remote("Remote outpost", options, html) + end + + def url_for(*) + "/whatnot" + end + + class StandardTest < ButtonToRemoteTest + test "basic" do + button = button({:url => {:action => "whatnot"}}, {:class => "fine"}) + [/input/, /class="fine"/, /type="button"/, /value="Remote outpost"/, + /data-url="\/whatnot"/].each do |match| + assert_match match, button + end + end + end + + class LegacyButtonToRemoteTest < ButtonToRemoteTest + include ActionView::Helpers::AjaxHelper::Rails2Compatibility + + assert_callbacks_work do |callback| + button(callback => "undoRequestCompleted(request)") + end + end + +end
\ No newline at end of file diff --git a/actionpack/test/lib/controller/fake_models.rb b/actionpack/test/lib/controller/fake_models.rb index 9e6f14d373..c6726432ec 100644 --- a/actionpack/test/lib/controller/fake_models.rb +++ b/actionpack/test/lib/controller/fake_models.rb @@ -2,6 +2,7 @@ require "active_model" class Customer < Struct.new(:name, :id) extend ActiveModel::Naming + include ActiveModel::Conversion def to_param id.to_s @@ -17,6 +18,7 @@ end module Quiz class Question < Struct.new(:name, :id) extend ActiveModel::Naming + include ActiveModel::Conversion def to_param id.to_s diff --git a/actionpack/test/template/active_record_helper_i18n_test.rb b/actionpack/test/template/active_record_helper_i18n_test.rb index 9d04c882c8..63032e4e5c 100644 --- a/actionpack/test/template/active_record_helper_i18n_test.rb +++ b/actionpack/test/template/active_record_helper_i18n_test.rb @@ -1,7 +1,8 @@ require 'abstract_unit' class ActiveRecordHelperI18nTest < Test::Unit::TestCase - include ActionView::Helpers::ActiveRecordHelper + include ActionView::Context + include ActionView::Helpers::ActiveModelHelper attr_reader :request diff --git a/actionpack/test/template/active_record_helper_test.rb b/actionpack/test/template/active_record_helper_test.rb index e1be048838..b07ce6cf5d 100644 --- a/actionpack/test/template/active_record_helper_test.rb +++ b/actionpack/test/template/active_record_helper_test.rb @@ -1,22 +1,23 @@ require 'abstract_unit' class ActiveRecordHelperTest < ActionView::TestCase - tests ActionView::Helpers::ActiveRecordHelper + tests ActionView::Helpers::ActiveModelHelper silence_warnings do - Post = Struct.new("Post", :title, :author_name, :body, :secret, :written_on) - 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) + extend ActiveModel::Naming + include ActiveModel::Conversion end - User = Struct.new("User", :email) - User.class_eval do - alias_method :email_before_type_cast, :email unless respond_to?(:email_before_type_cast) + class User < Struct.new(:email) + extend ActiveModel::Naming + include ActiveModel::Conversion end - Column = Struct.new("Column", :type, :name, :human_name) + class Column < Struct.new(:type, :name, :human_name) + extend ActiveModel::Naming + include ActiveModel::Conversion + end end class DirtyPost diff --git a/actionpack/test/template/asset_tag_helper_test.rb b/actionpack/test/template/asset_tag_helper_test.rb index e7d70302f8..921bfeb93a 100644 --- a/actionpack/test/template/asset_tag_helper_test.rb +++ b/actionpack/test/template/asset_tag_helper_test.rb @@ -158,8 +158,8 @@ class AssetTagHelperTest < ActionView::TestCase VideoLinkToTag = { %(video_tag("xml.ogg")) => %(<video src="/videos/xml.ogg" />), - %(video_tag("rss.m4v", :autoplay => true, :controls => true)) => %(<video autoplay="autoplay" controls="controls" src="/videos/rss.m4v" />), - %(video_tag("rss.m4v", :autobuffer => true)) => %(<video autobuffer="autobuffer" src="/videos/rss.m4v" />), + %(video_tag("rss.m4v", :autoplay => true, :controls => true)) => %(<video autoplay="true" controls="true" src="/videos/rss.m4v" />), + %(video_tag("rss.m4v", :autobuffer => true)) => %(<video autobuffer="true" src="/videos/rss.m4v" />), %(video_tag("gold.m4v", :size => "160x120")) => %(<video height="120" src="/videos/gold.m4v" width="160" />), %(video_tag("gold.m4v", "size" => "320x240")) => %(<video height="240" src="/videos/gold.m4v" width="320" />), %(video_tag("trailer.ogg", :poster => "screenshot.png")) => %(<video poster="/images/screenshot.png" src="/videos/trailer.ogg" />), @@ -168,7 +168,27 @@ class AssetTagHelperTest < ActionView::TestCase %(video_tag("error.avi", "size" => "x")) => %(<video src="/videos/error.avi" />), %(video_tag("http://media.rubyonrails.org/video/rails_blog_2.mov")) => %(<video src="http://media.rubyonrails.org/video/rails_blog_2.mov" />), %(video_tag(["multiple.ogg", "multiple.avi"])) => %(<video><source src="multiple.ogg" /><source src="multiple.avi" /></video>), - %(video_tag(["multiple.ogg", "multiple.avi"], :size => "160x120", :controls => true)) => %(<video controls="controls" height="120" width="160"><source src="multiple.ogg" /><source src="multiple.avi" /></video>) + %(video_tag(["multiple.ogg", "multiple.avi"], :size => "160x120", :controls => true)) => %(<video controls="true" height="120" width="160"><source src="multiple.ogg" /><source src="multiple.avi" /></video>) + } + + AudioPathToTag = { + %(audio_path("xml")) => %(/audios/xml), + %(audio_path("xml.wav")) => %(/audios/xml.wav), + %(audio_path("dir/xml.wav")) => %(/audios/dir/xml.wav), + %(audio_path("/dir/xml.wav")) => %(/dir/xml.wav) + } + + PathToAudioToTag = { + %(path_to_audio("xml")) => %(/audios/xml), + %(path_to_audio("xml.wav")) => %(/audios/xml.wav), + %(path_to_audio("dir/xml.wav")) => %(/audios/dir/xml.wav), + %(path_to_audio("/dir/xml.wav")) => %(/dir/xml.wav) + } + + AudioLinkToTag = { + %(audio_tag("xml.wav")) => %(<audio src="/audios/xml.wav" />), + %(audio_tag("rss.wav", :autoplay => true, :controls => true)) => %(<audio autoplay="true" controls="true" src="/audios/rss.wav" />), + %(audio_tag("http://media.rubyonrails.org/audio/rails_blog_2.mov")) => %(<audio src="http://media.rubyonrails.org/audio/rails_blog_2.mov" />), } def test_auto_discovery_link_tag @@ -311,6 +331,18 @@ class AssetTagHelperTest < ActionView::TestCase VideoLinkToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } end + def test_audio_path + AudioPathToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } + end + + def test_path_to_audio_alias_for_audio_path + PathToAudioToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } + end + + def test_audio_tag + AudioLinkToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } + end + def test_timebased_asset_id expected_time = File.stat(File.expand_path(File.dirname(__FILE__) + "/../fixtures/public/images/rails.png")).mtime.to_i.to_s assert_equal %(<img alt="Rails" src="/images/rails.png?#{expected_time}" />), image_tag("rails.png") @@ -354,7 +386,7 @@ class AssetTagHelperTest < ActionView::TestCase "#{request.protocol}assets#{source.length}.example.com" end end - + ActionController::Base.perform_caching = true diff --git a/actionpack/test/template/atom_feed_helper_test.rb b/actionpack/test/template/atom_feed_helper_test.rb index 6f1179f359..3acaecd142 100644 --- a/actionpack/test/template/atom_feed_helper_test.rb +++ b/actionpack/test/template/atom_feed_helper_test.rb @@ -1,7 +1,13 @@ require 'abstract_unit' -Scroll = Struct.new(:id, :to_param, :title, :body, :updated_at, :created_at) -Scroll.extend ActiveModel::Naming +class Scroll < Struct.new(:id, :to_param, :title, :body, :updated_at, :created_at) + extend ActiveModel::Naming + include ActiveModel::Conversion + + def new_record? + true + end +end class ScrollsController < ActionController::Base FEEDS = {} diff --git a/actionpack/test/template/compiled_templates_test.rb b/actionpack/test/template/compiled_templates_test.rb index 9c268aef27..7734e6da73 100644 --- a/actionpack/test/template/compiled_templates_test.rb +++ b/actionpack/test/template/compiled_templates_test.rb @@ -3,7 +3,7 @@ require 'controller/fake_models' class CompiledTemplatesTest < Test::Unit::TestCase def setup - @compiled_templates = ActionView::Base::CompiledTemplates + @compiled_templates = ActionView::CompiledTemplates @compiled_templates.instance_methods.each do |m| @compiled_templates.send(:remove_method, m) if m =~ /^_render_template_/ end diff --git a/actionpack/test/template/form_helper_test.rb b/actionpack/test/template/form_helper_test.rb index 515f73c339..99160dd8b1 100644 --- a/actionpack/test/template/form_helper_test.rb +++ b/actionpack/test/template/form_helper_test.rb @@ -1,11 +1,10 @@ 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::Naming + include ActiveModel::Conversion + alias_method :secret?, :secret def new_record=(boolean) @@ -27,6 +26,9 @@ silence_warnings do end class Comment + extend ActiveModel::Naming + include ActiveModel::Conversion + attr_reader :id attr_reader :post_id def initialize(id = nil, post_id = nil); @id, @post_id = id, post_id end @@ -43,6 +45,9 @@ silence_warnings do end class Tag + extend ActiveModel::Naming + include ActiveModel::Conversion + attr_reader :id attr_reader :post_id def initialize(id = nil, post_id = nil); @id, @post_id = id, post_id end @@ -59,6 +64,9 @@ silence_warnings do end class CommentRelevance + extend ActiveModel::Naming + include ActiveModel::Conversion + attr_reader :id attr_reader :comment_id def initialize(id = nil, comment_id = nil); @id, @comment_id = id, comment_id end @@ -71,6 +79,9 @@ silence_warnings do end class TagRelevance + extend ActiveModel::Naming + include ActiveModel::Conversion + attr_reader :id attr_reader :tag_id def initialize(id = nil, tag_id = nil); @id, @tag_id = id, tag_id end @@ -1024,8 +1035,8 @@ class FormHelperTest < ActionView::TestCase end def test_default_form_builder - old_default_form_builder, ActionView::Base.default_form_builder = - ActionView::Base.default_form_builder, LabelledFormBuilder + old_default_form_builder, ActionView.default_form_builder = + ActionView.default_form_builder, LabelledFormBuilder form_for(:post, @post) do |f| concat f.text_field(:title) @@ -1042,7 +1053,7 @@ class FormHelperTest < ActionView::TestCase assert_dom_equal expected, output_buffer ensure - ActionView::Base.default_form_builder = old_default_form_builder + ActionView.default_form_builder = old_default_form_builder end def test_default_form_builder_with_active_record_helpers diff --git a/actionpack/test/template/prototype_helper_test.rb b/actionpack/test/template/prototype_helper_test.rb index a7a1bc99f3..acbf311212 100644 --- a/actionpack/test/template/prototype_helper_test.rb +++ b/actionpack/test/template/prototype_helper_test.rb @@ -1,10 +1,15 @@ require 'abstract_unit' +require 'active_model' -Bunny = Struct.new(:Bunny, :id) -Bunny.extend ActiveModel::Naming +class Bunny < Struct.new(:Bunny, :id) + extend ActiveModel::Naming + include ActiveModel::Conversion +end class Author extend ActiveModel::Naming + include ActiveModel::Conversion + attr_reader :id def save; @id = 1 end def new_record?; @id.nil? end @@ -15,6 +20,7 @@ end class Article extend ActiveModel::Naming + include ActiveModel::Conversion attr_reader :id attr_reader :author_id def save; @id = 1; @author_id = 1 end diff --git a/actionpack/test/template/record_tag_helper_test.rb b/actionpack/test/template/record_tag_helper_test.rb index 5b840d123b..4144fea678 100644 --- a/actionpack/test/template/record_tag_helper_test.rb +++ b/actionpack/test/template/record_tag_helper_test.rb @@ -2,11 +2,12 @@ require 'abstract_unit' class Post extend ActiveModel::Naming + include ActiveModel::Conversion def id 45 end def body - "What a wonderful world!" + super || "What a wonderful world!" end end diff --git a/actionpack/test/template/url_helper_test.rb b/actionpack/test/template/url_helper_test.rb index f0364fd660..9eeb26831c 100644 --- a/actionpack/test/template/url_helper_test.rb +++ b/actionpack/test/template/url_helper_test.rb @@ -495,6 +495,7 @@ end class Workshop extend ActiveModel::Naming + include ActiveModel::Conversion attr_accessor :id, :new_record def initialize(id, new_record) @@ -512,6 +513,7 @@ end class Session extend ActiveModel::Naming + include ActiveModel::Conversion attr_accessor :id, :workshop_id, :new_record def initialize(id, new_record) |