Upgraded to Rails 2.3.4 (#3597)
* Ran the Rails upgrade
* Upgraded to Rails Engines 2.3.2
* Added a plugin to let Engines override application views.
* Converted tests to use the new classes:
** ActionController::TestCase for functional
** ActiveSupport::TestCase for units
* Converted ActiveRecord::Error message to a string.
* ActiveRecord grouping returns an ordered hash which doesn't have #sort!
* Updated the I18n storage_units format.
* Added some default initializers from a fresh rails app
* Changed the order of check_box_tags and hidden_field_tags. The hidden tag
needs to appear first in Rails 2.3, otherwise it will override any value in
the check_box_tag.
* Removed the custom handler for when the cookie store is tampered with.
Rails 2.3 removed the TamperedWithCookie exception and instead Rails will not
load the data from it when it's been tampered with (e.g. no user login).
* Fixed mail layouts, 2.3 has problems with implicit multipart emails that
use layouts. Also removed some custom Redmine mailer code.
* Fixed a bug that occurred in tests where the "required" span tag would be
added to the :field_status translation. This resulted in an email string of:
<li>Status<span class="required"> *</span><span class="required"> *</span>
Instead of:
<li>Status: New</li>
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2887 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# Tests in this file ensure that:
|
||||
#
|
||||
# * plugin controller actions are found
|
||||
# * actions defined in application controllers take precedence over those in plugins
|
||||
# * actions in controllers in subsequently loaded plugins take precendence over those in previously loaded plugins
|
||||
# * this works for actions in namespaced controllers accordingly
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class ControllerLoadingTest < ActionController::TestCase
|
||||
def setup
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
end
|
||||
|
||||
# plugin controller actions should be found
|
||||
|
||||
def test_WITH_an_action_defined_only_in_a_plugin_IT_should_use_this_action
|
||||
get_action_on_controller :an_action, :alpha_plugin
|
||||
assert_response_body 'rendered in AlphaPluginController#an_action'
|
||||
end
|
||||
|
||||
def test_WITH_an_action_defined_only_in_a_namespaced_plugin_controller_IT_should_use_this_action
|
||||
get_action_on_controller :an_action, :alpha_plugin, :namespace
|
||||
assert_response_body 'rendered in Namespace::AlphaPluginController#an_action'
|
||||
end
|
||||
|
||||
# app takes precedence over plugins
|
||||
|
||||
def test_WITH_an_action_defined_in_both_app_and_plugin_IT_should_use_the_one_in_app
|
||||
get_action_on_controller :an_action, :app_and_plugin
|
||||
assert_response_body 'rendered in AppAndPluginController#an_action (from app)'
|
||||
end
|
||||
|
||||
def test_WITH_an_action_defined_in_namespaced_controllers_in_both_app_and_plugin_IT_should_use_the_one_in_app
|
||||
get_action_on_controller :an_action, :app_and_plugin, :namespace
|
||||
assert_response_body 'rendered in Namespace::AppAndPluginController#an_action (from app)'
|
||||
end
|
||||
|
||||
# subsequently loaded plugins take precendence over previously loaded plugins
|
||||
|
||||
def test_WITH_an_action_defined_in_two_plugin_controllers_IT_should_use_the_latter_of_both
|
||||
get_action_on_controller :an_action, :shared_plugin
|
||||
assert_response_body 'rendered in SharedPluginController#an_action (from beta_plugin)'
|
||||
end
|
||||
|
||||
def test_WITH_an_action_defined_in_two_namespaced_plugin_controllers_IT_should_use_the_latter_of_both
|
||||
get_action_on_controller :an_action, :shared_plugin, :namespace
|
||||
assert_response_body 'rendered in Namespace::SharedPluginController#an_action (from beta_plugin)'
|
||||
end
|
||||
end
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class ExceptionNotificationCompatibilityTest < ActionController::TestCase
|
||||
ExceptionNotifier.exception_recipients = %w(joe@schmoe.com bill@schmoe.com)
|
||||
class SimpleController < ApplicationController
|
||||
include ExceptionNotifiable
|
||||
local_addresses.clear
|
||||
consider_all_requests_local = false
|
||||
def index
|
||||
begin
|
||||
raise "Fail!"
|
||||
rescue Exception => e
|
||||
rescue_action_in_public(e)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def setup
|
||||
@controller = SimpleController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
end
|
||||
|
||||
def test_should_work
|
||||
assert_nothing_raised do
|
||||
get :index
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,26 @@
|
||||
# Tests in this file ensure that:
|
||||
#
|
||||
# * translations in the application take precedence over those in plugins
|
||||
# * translations in subsequently loaded plugins take precendence over those in previously loaded plugins
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class LocaleLoadingTest < ActionController::TestCase
|
||||
def setup
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
end
|
||||
|
||||
# app takes precedence over plugins
|
||||
|
||||
def test_WITH_a_translation_defined_in_both_app_and_plugin_IT_should_find_the_one_in_app
|
||||
assert_equal I18n.t('hello'), 'Hello world'
|
||||
end
|
||||
|
||||
# subsequently loaded plugins take precendence over previously loaded plugins
|
||||
|
||||
def test_WITH_a_translation_defined_in_two_plugins_IT_should_find_the_latter_of_both
|
||||
assert_equal I18n.t('plugin'), 'beta'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
# Tests in this file ensure that:
|
||||
#
|
||||
# * Routes from plugins can be routed to
|
||||
# * Named routes can be defined within a plugin
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class RoutesTest < ActionController::TestCase
|
||||
tests TestRoutingController
|
||||
|
||||
def test_WITH_a_route_defined_in_a_plugin_IT_should_route_it
|
||||
path = '/routes/an_action'
|
||||
opts = {:controller => 'test_routing', :action => 'an_action'}
|
||||
assert_routing path, opts
|
||||
assert_recognizes opts, path # not sure what exactly the difference is, but it won't hurt either
|
||||
end
|
||||
|
||||
def test_WITH_a_route_for_a_namespaced_controller_defined_in_a_plugin_IT_should_route_it
|
||||
path = 'somespace/routes/an_action'
|
||||
opts = {:controller => 'namespace/test_routing', :action => 'an_action'}
|
||||
assert_routing path, opts
|
||||
assert_recognizes opts, path
|
||||
end
|
||||
|
||||
def test_should_properly_generate_named_routes
|
||||
get :test_named_routes_from_plugin
|
||||
assert_response_body '/somespace/routes'
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,37 @@
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class ViewHelpersTest < ActionController::TestCase
|
||||
tests AssetsController
|
||||
|
||||
def setup
|
||||
get :index
|
||||
end
|
||||
|
||||
def test_plugin_javascript_helpers
|
||||
base_selector = "script[type='text/javascript']"
|
||||
js_dir = "/plugin_assets/test_assets/javascripts"
|
||||
assert_select "#{base_selector}[src='#{js_dir}/file.1.js']"
|
||||
assert_select "#{base_selector}[src='#{js_dir}/file2.js']"
|
||||
end
|
||||
|
||||
def test_plugin_stylesheet_helpers
|
||||
base_selector = "link[media='screen'][rel='stylesheet'][type='text/css']"
|
||||
css_dir = "/plugin_assets/test_assets/stylesheets"
|
||||
assert_select "#{base_selector}[href='#{css_dir}/file.1.css']"
|
||||
assert_select "#{base_selector}[href='#{css_dir}/file2.css']"
|
||||
end
|
||||
|
||||
def test_plugin_image_helpers
|
||||
assert_select "img[src='/plugin_assets/test_assets/images/image.png'][alt='Image']"
|
||||
end
|
||||
|
||||
def test_plugin_layouts
|
||||
get :index
|
||||
assert_select "div[id='assets_layout']"
|
||||
end
|
||||
|
||||
def test_plugin_image_submit_helpers
|
||||
assert_select "input[src='/plugin_assets/test_assets/images/image.png'][type='image']"
|
||||
end
|
||||
|
||||
end
|
||||
@@ -0,0 +1,60 @@
|
||||
# Tests in this file ensure that:
|
||||
#
|
||||
# * plugin views are found
|
||||
# * views in the application take precedence over those in plugins
|
||||
# * views in subsequently loaded plugins take precendence over those in previously loaded plugins
|
||||
# * this works for namespaced views accordingly
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class ViewLoadingTest < ActionController::TestCase
|
||||
def setup
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
end
|
||||
|
||||
# plugin views should be found
|
||||
|
||||
def test_WITH_a_view_defined_only_in_a_plugin_IT_should_find_the_view
|
||||
get_action_on_controller :a_view, :alpha_plugin
|
||||
assert_response_body 'alpha_plugin/a_view'
|
||||
end
|
||||
|
||||
def test_WITH_a_namespaced_view_defined_only_in_a_plugin_IT_should_find_the_view
|
||||
get_action_on_controller :a_view, :alpha_plugin, :namespace
|
||||
assert_response_body 'namespace/alpha_plugin/a_view'
|
||||
end
|
||||
|
||||
# app takes precedence over plugins
|
||||
|
||||
def test_WITH_a_view_defined_in_both_app_and_plugin_IT_should_find_the_one_in_app
|
||||
get_action_on_controller :a_view, :app_and_plugin
|
||||
assert_response_body 'app_and_plugin/a_view (from app)'
|
||||
end
|
||||
|
||||
def test_WITH_a_namespaced_view_defined_in_both_app_and_plugin_IT_should_find_the_one_in_app
|
||||
get_action_on_controller :a_view, :app_and_plugin, :namespace
|
||||
assert_response_body 'namespace/app_and_plugin/a_view (from app)'
|
||||
end
|
||||
|
||||
# subsequently loaded plugins take precendence over previously loaded plugins
|
||||
|
||||
def test_WITH_a_view_defined_in_two_plugins_IT_should_find_the_latter_of_both
|
||||
get_action_on_controller :a_view, :shared_plugin
|
||||
assert_response_body 'shared_plugin/a_view (from beta_plugin)'
|
||||
end
|
||||
|
||||
def test_WITH_a_namespaced_view_defined_in_two_plugins_IT_should_find_the_latter_of_both
|
||||
get_action_on_controller :a_view, :shared_plugin, :namespace
|
||||
assert_response_body 'namespace/shared_plugin/a_view (from beta_plugin)'
|
||||
end
|
||||
|
||||
# layouts loaded from plugins
|
||||
|
||||
def test_should_be_able_to_load_a_layout_from_a_plugin
|
||||
get_action_on_controller :action_with_layout, :alpha_plugin
|
||||
assert_response_body 'rendered in AlphaPluginController#action_with_layout (with plugin layout)'
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user