deOMGifying Railties, Active Support, and Action Pack

This commit is contained in:
Mikel Lindsaar 2010-01-31 16:27:24 +11:00 committed by Jeremy Kemper
parent b3a028259f
commit 2ebea1c02d
18 changed files with 65 additions and 66 deletions

View File

@ -4,7 +4,7 @@ module ActionController
include RackDelegation
# OMG MEGA HAX
# TODO: Clean this up
def process_with_new_base_test(request, response)
@_request = request
@_response = response

View File

@ -141,8 +141,7 @@ module ActionView
end
end
# OMG HAX
# TODO: remove hax
# TODO: remove hack
class FileSystemResolverWithFallback < Resolver
def initialize(path, options = {})
super(options)

View File

@ -13,7 +13,7 @@ module AbstractControllerTests
"layouts/hello_override.erb" => "With Override <%= yield %>",
"layouts/abstract_controller_tests/layouts/with_string_implied_child.erb" =>
"With Implied <%= yield %>",
"layouts/omg.erb" => "OMGHI2U <%= yield %>",
"layouts/overwrite.erb" => "Overwrite <%= yield %>",
"layouts/with_false_layout.erb" => "False Layout <%= yield %>"
)]
end
@ -42,7 +42,7 @@ module AbstractControllerTests
end
def overwrite_string
render :_template => ActionView::Template::Text.new("Hello string!"), :layout => "omg"
render :_template => ActionView::Template::Text.new("Hello string!"), :layout => "overwrite"
end
def overwrite_skip
@ -68,7 +68,7 @@ module AbstractControllerTests
end
class WithProc < Base
layout proc { |c| "omg" }
layout proc { |c| "overwrite" }
def index
render :_template => ActionView::Template::Text.new("Hello proc!")
@ -83,7 +83,7 @@ module AbstractControllerTests
end
private
def hello
"omg"
"overwrite"
end
end
@ -122,7 +122,7 @@ module AbstractControllerTests
end
class WithSymbolAndNoMethod < Base
layout :omg_no_method
layout :no_method
def index
render :_template => ActionView::Template::Text.new("Hello boom!")
@ -175,7 +175,7 @@ module AbstractControllerTests
test "when layout is overwriten by string in render, render new layout" do
controller = WithString.new
controller.process(:overwrite_string)
assert_equal "OMGHI2U Hello string!", controller.response_body
assert_equal "Overwrite Hello string!", controller.response_body
end
test "when layout is overwriten by false in render, render no layout" do
@ -209,13 +209,13 @@ module AbstractControllerTests
test "when layout is specified as a proc, call it and use the layout returned" do
controller = WithProc.new
controller.process(:index)
assert_equal "OMGHI2U Hello proc!", controller.response_body
assert_equal "Overwrite Hello proc!", controller.response_body
end
test "when layout is specified as a symbol, call the requested method and use the layout returned" do
controller = WithSymbol.new
controller.process(:index)
assert_equal "OMGHI2U Hello symbol!", controller.response_body
assert_equal "Overwrite Hello symbol!", controller.response_body
end
test "when layout is specified as a symbol and the method returns nil, don't use a layout" do
@ -266,7 +266,7 @@ module AbstractControllerTests
test "raises an exception when specifying layout true" do
assert_raises ArgumentError do
Object.class_eval do
class ::BadOmgFailLolLayout < AbstractControllerTests::Layouts::Base
class ::BadFailLayout < AbstractControllerTests::Layouts::Base
layout true
end
end

View File

@ -435,7 +435,7 @@ class FilterTest < ActionController::TestCase
end
def non_yielding_filter
@filters << "zomg it didn't yield"
@filters << "it didn't yield"
@filter_return_value
end
@ -465,14 +465,14 @@ class FilterTest < ActionController::TestCase
controller = NonYieldingAroundFilterController.new
controller.instance_variable_set "@filter_return_value", false
test_process(controller, "index")
assert_equal ["filter_one", "zomg it didn't yield"], controller.assigns['filters']
assert_equal ["filter_one", "it didn't yield"], controller.assigns['filters']
end
def test_after_filters_are_not_run_if_around_filter_does_not_yield
controller = NonYieldingAroundFilterController.new
controller.instance_variable_set "@filter_return_value", true
test_process(controller, "index")
assert_equal ["filter_one", "zomg it didn't yield"], controller.assigns['filters']
assert_equal ["filter_one", "it didn't yield"], controller.assigns['filters']
end
def test_added_filter_to_inheritance_graph

View File

@ -119,9 +119,9 @@ module RenderActionWithApplicationLayout
# Set the view path to an application view structure with layouts
self.view_paths = self.view_paths = [ActionView::FixtureResolver.new(
"render_action_with_application_layout/basic/hello_world.html.erb" => "Hello World!",
"render_action_with_application_layout/basic/hello.html.builder" => "xml.p 'Omg'",
"layouts/application.html.erb" => "OHAI <%= yield %> KTHXBAI",
"layouts/greetings.html.erb" => "Greetings <%= yield %> Bai",
"render_action_with_application_layout/basic/hello.html.builder" => "xml.p 'Hello'",
"layouts/application.html.erb" => "Hi <%= yield %> OK, Bye",
"layouts/greetings.html.erb" => "Greetings <%= yield %> Bye",
"layouts/builder.html.builder" => "xml.html do\n xml << yield\nend"
)]
@ -156,14 +156,14 @@ module RenderActionWithApplicationLayout
test "rendering implicit application.html.erb as layout" do
get "/render_action_with_application_layout/basic/hello_world"
assert_body "OHAI Hello World! KTHXBAI"
assert_body "Hi Hello World! OK, Bye"
assert_status 200
end
test "rendering with layout => true" do
get "/render_action_with_application_layout/basic/hello_world_with_layout"
assert_body "OHAI Hello World! KTHXBAI"
assert_body "Hi Hello World! OK, Bye"
assert_status 200
end
@ -184,7 +184,7 @@ module RenderActionWithApplicationLayout
test "rendering with layout => 'greetings'" do
get "/render_action_with_application_layout/basic/hello_world_with_custom_layout"
assert_body "Greetings Hello World! Bai"
assert_body "Greetings Hello World! Bye"
assert_status 200
end
end
@ -194,7 +194,7 @@ module RenderActionWithApplicationLayout
test "builder works with layouts" do
get :with_builder_and_layout
assert_response "<html>\n<p>Omg</p>\n</html>\n"
assert_response "<html>\n<p>Hello</p>\n</html>\n"
end
end
@ -204,7 +204,7 @@ module RenderActionWithControllerLayout
class BasicController < ActionController::Base
self.view_paths = self.view_paths = [ActionView::FixtureResolver.new(
"render_action_with_controller_layout/basic/hello_world.html.erb" => "Hello World!",
"layouts/render_action_with_controller_layout/basic.html.erb" => "With Controller Layout! <%= yield %> KTHXBAI"
"layouts/render_action_with_controller_layout/basic.html.erb" => "With Controller Layout! <%= yield %> Bye"
)]
def hello_world
@ -234,14 +234,14 @@ module RenderActionWithControllerLayout
test "render hello_world and implicitly use <controller_path>.html.erb as a layout." do
get "/render_action_with_controller_layout/basic/hello_world"
assert_body "With Controller Layout! Hello World! KTHXBAI"
assert_body "With Controller Layout! Hello World! Bye"
assert_status 200
end
test "rendering with layout => true" do
get "/render_action_with_controller_layout/basic/hello_world_with_layout"
assert_body "With Controller Layout! Hello World! KTHXBAI"
assert_body "With Controller Layout! Hello World! Bye"
assert_status 200
end
@ -265,8 +265,8 @@ module RenderActionWithBothLayouts
class BasicController < ActionController::Base
self.view_paths = [ActionView::FixtureResolver.new({
"render_action_with_both_layouts/basic/hello_world.html.erb" => "Hello World!",
"layouts/application.html.erb" => "OHAI <%= yield %> KTHXBAI",
"layouts/render_action_with_both_layouts/basic.html.erb" => "With Controller Layout! <%= yield %> KTHXBAI"
"layouts/application.html.erb" => "Oh Hi <%= yield %> Bye",
"layouts/render_action_with_both_layouts/basic.html.erb" => "With Controller Layout! <%= yield %> Bye"
})]
def hello_world
@ -292,14 +292,14 @@ module RenderActionWithBothLayouts
test "rendering implicitly use <controller_path>.html.erb over application.html.erb as a layout" do
get "/render_action_with_both_layouts/basic/hello_world"
assert_body "With Controller Layout! Hello World! KTHXBAI"
assert_body "With Controller Layout! Hello World! Bye"
assert_status 200
end
test "rendering with layout => true" do
get "/render_action_with_both_layouts/basic/hello_world_with_layout"
assert_body "With Controller Layout! Hello World! KTHXBAI"
assert_body "With Controller Layout! Hello World! Bye"
assert_status 200
end

View File

@ -3,10 +3,10 @@ require 'abstract_unit'
module ControllerLayouts
class ImplicitController < ::ApplicationController
self.view_paths = [ActionView::FixtureResolver.new(
"layouts/application.html.erb" => "OMG <%= yield %> KTHXBAI",
"layouts/application.html.erb" => "Main <%= yield %> Layout",
"layouts/override.html.erb" => "Override! <%= yield %>",
"basic.html.erb" => "Hello world!",
"controller_layouts/implicit/layout_false.html.erb" => "hai(layout_false.html.erb)"
"controller_layouts/implicit/layout_false.html.erb" => "hi(layout_false.html.erb)"
)]
def index
@ -27,7 +27,7 @@ module ControllerLayouts
class ImplicitNameController < ::ApplicationController
self.view_paths = [ActionView::FixtureResolver.new(
"layouts/controller_layouts/implicit_name.html.erb" => "OMGIMPLICIT <%= yield %> KTHXBAI",
"layouts/controller_layouts/implicit_name.html.erb" => "Implicit <%= yield %> Layout",
"basic.html.erb" => "Hello world!"
)]
@ -40,14 +40,14 @@ module ControllerLayouts
test "rendering a normal template, but using the implicit layout" do
get "/controller_layouts/implicit/index"
assert_body "OMG Hello world! KTHXBAI"
assert_body "Main Hello world! Layout"
assert_status 200
end
test "rendering a normal template, but using an implicit NAMED layout" do
get "/controller_layouts/implicit_name/index"
assert_body "OMGIMPLICIT Hello world! KTHXBAI"
assert_body "Implicit Hello world! Layout"
assert_status 200
end
@ -63,15 +63,15 @@ module ControllerLayouts
test "rendering with :layout => false leaves out the implicit layout" do
get :layout_false
assert_response "hai(layout_false.html.erb)"
assert_response "hi(layout_false.html.erb)"
end
end
class MismatchFormatController < ::ApplicationController
self.view_paths = [ActionView::FixtureResolver.new(
"layouts/application.html.erb" => "<html><%= yield %></html>",
"controller_layouts/mismatch_format/index.js.rjs" => "page[:test].omg",
"controller_layouts/mismatch_format/implicit.rjs" => "page[:test].omg"
"controller_layouts/mismatch_format/index.js.rjs" => "page[:test].ext",
"controller_layouts/mismatch_format/implicit.rjs" => "page[:test].ext"
)]
def explicit
@ -84,12 +84,12 @@ module ControllerLayouts
test "if JS is selected, an HTML template is not also selected" do
get :index, "format" => "js"
assert_response "$(\"test\").omg();"
assert_response "$(\"test\").ext();"
end
test "if JS is implicitly selected, an HTML template is not also selected" do
get :implicit
assert_response "$(\"test\").omg();"
assert_response "$(\"test\").ext();"
end
test "if an HTML template is explicitly provides for a JS template, an error is raised" do

View File

@ -5,7 +5,7 @@ module RenderPartial
class BasicController < ActionController::Base
self.view_paths = [ActionView::FixtureResolver.new(
"render_partial/basic/_basic.html.erb" => "OMG!",
"render_partial/basic/_basic.html.erb" => "BasicPartial!",
"render_partial/basic/basic.html.erb" => "<%= @test_unchanged = 'goodbye' %><%= render :partial => 'basic' %><%= @test_unchanged %>"
)]
@ -20,7 +20,7 @@ module RenderPartial
test "rendering a partial in ActionView doesn't pull the ivars again from the controller" do
get :changing
assert_response("goodbyeOMG!goodbye")
assert_response("goodbyeBasicPartial!goodbye")
end
end

View File

@ -13,7 +13,7 @@ module Another
end
def data_sender
send_data "cool data", :filename => "omg.txt"
send_data "cool data", :filename => "file.txt"
end
def xfile_sender
@ -121,7 +121,7 @@ class ACSubscriberTest < ActionController::TestCase
wait
assert_equal 3, logs.size
assert_match /Sent data omg\.txt/, logs[1]
assert_match /Sent data file\.txt/, logs[1]
end
def test_send_file

View File

@ -23,7 +23,7 @@ class MimeTypeTest < ActiveSupport::TestCase
end
# Accept header send with user HTTP_USER_AGENT: Sunrise/0.42j (Windows XP)
test "parse crappy broken acceptlines" do
test "parse broken acceptlines" do
accept = "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/*,,*/*;q=0.5"
expect = [Mime::HTML, Mime::XML, "image/*", Mime::TEXT, Mime::ALL]
assert_equal expect, Mime::Type.parse(accept).collect { |c| c.to_s }
@ -31,7 +31,7 @@ class MimeTypeTest < ActiveSupport::TestCase
# Accept header send with user HTTP_USER_AGENT: Mozilla/4.0
# (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1)
test "parse crappy broken acceptlines2" do
test "parse other broken acceptlines" do
accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, , pronto/1.00.00, sslvpn/1.00.00.00, */*"
expect = ['image/gif', 'image/x-xbitmap', 'image/jpeg','image/pjpeg', 'application/x-shockwave-flash', 'application/vnd.ms-excel', 'application/vnd.ms-powerpoint', 'application/msword', 'pronto/1.00.00', 'sslvpn/1.00.00.00', Mime::ALL ]
assert_equal expect, Mime::Type.parse(accept).collect { |c| c.to_s }

View File

@ -48,7 +48,7 @@ class SanitizerTest < ActionController::TestCase
assert_sanitized "a b c<script language=\"Javascript\">blah blah blah</script>d e f", "a b cd e f"
end
# fucked
# TODO: Clean up
def test_sanitize_js_handlers
raw = %{onthis="do that" <a href="#" onclick="hello" name="foo" onbogus="remove me">hello</a>}
assert_sanitized raw, %{onthis="do that" <a name="foo" href="#">hello</a>}
@ -193,7 +193,7 @@ class SanitizerTest < ActionController::TestCase
assert_sanitized img_hack, "<img>"
end
# fucked
# TODO: Clean up
def test_should_sanitize_attributes
assert_sanitized %(<SPAN title="'><script>alert()</script>">blah</SPAN>), %(<span title="'&gt;&lt;script&gt;alert()&lt;/script&gt;">blah</span>)
end

View File

@ -33,7 +33,7 @@ class AVSubscriberTest < ActiveSupport::TestCase
end
def test_render_text_template
@view.render(:text => "OMG")
@view.render(:text => "TEXT")
wait
assert_equal 1, @logger.logged(:info).size
@ -41,7 +41,7 @@ class AVSubscriberTest < ActiveSupport::TestCase
end
def test_render_inline_template
@view.render(:inline => "<%= 'OMG' %>")
@view.render(:inline => "<%= 'TEXT' %>")
wait
assert_equal 1, @logger.logged(:info).size

View File

@ -264,12 +264,12 @@ module CallbacksTest
define_callbacks :save
attr_reader :stuff
set_callback :save, :before, :omg, :per_key => {:if => :yes}
set_callback :save, :before, :action, :per_key => {:if => :yes}
def yes() true end
def omg
@stuff = "OMG"
def action
@stuff = "ACTION"
end
def save
@ -522,7 +522,7 @@ module CallbacksTest
def test_save
obj = HyphenatedCallbacks.new
obj.save
assert_equal obj.stuff, "OMG"
assert_equal obj.stuff, "ACTION"
end
end
end

2
activesupport/test/fixtures/custom.rb vendored Normal file
View File

@ -0,0 +1,2 @@
class Custom
end

View File

@ -1,2 +0,0 @@
class OmgOmg
end

View File

@ -59,15 +59,15 @@ elsif ENV['CHILD']
end
test "resets requires one" do
assert !defined?(OmgOmg)
assert_equal 0, $LOADED_FEATURES.grep(/fixtures\/omgomg/).size
require File.expand_path(File.join(File.dirname(__FILE__), "fixtures", "omgomg"))
assert !defined?(Custom)
assert_equal 0, $LOADED_FEATURES.grep(/fixtures\/custom/).size
require File.expand_path(File.join(File.dirname(__FILE__), "fixtures", "custom"))
end
test "resets requires two" do
assert !defined?(OmgOmg)
assert_equal 0, $LOADED_FEATURES.grep(/fixtures\/omgomg/).size
require File.expand_path(File.join(File.dirname(__FILE__), "fixtures", "omgomg"))
assert !defined?(Custom)
assert_equal 0, $LOADED_FEATURES.grep(/fixtures\/custom/).size
require File.expand_path(File.join(File.dirname(__FILE__), "fixtures", "custom"))
end
end
else

View File

@ -77,7 +77,7 @@ module Notifications
def test_instrument_with_bang_returns_result_even_on_failure
begin
instrument!(:awesome, :payload => "notifications") do
raise "OMG"
raise "FAIL"
end
flunk
rescue
@ -126,10 +126,10 @@ module Notifications
def test_instrument_does_not_publish_when_exception_is_raised
begin
instrument(:awesome, :payload => "notifications") do
raise "OMG"
raise "FAIL"
end
rescue RuntimeError => e
assert_equal "OMG", e.message
assert_equal "FAIL", e.message
end
drain

View File

@ -88,7 +88,7 @@ Please note that you need to +git :init+ before you can install a plugin as a su
Or use plain old SVN :
<ruby>
plugin 'wtfsvn', :svn => 'svn://crap.com/wtf/trunk'
plugin 'usingsvn', :svn => 'svn://example.com/usingsvn/trunk'
</ruby>
h4. vendor/lib/file/initializer(filename, data = nil, &block)

View File

@ -10,7 +10,7 @@ module InitializableTests
attr_accessor :foo, :bar
end
initializer :omg do
initializer :start do
@foo ||= 0
@foo += 1
end