eactionpack 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +7 -0
- data/MIT-LICENSE +21 -0
- data/README +469 -0
- data/RUNNING_UNIT_TESTS +24 -0
- data/Rakefile +146 -0
- data/install.rb +30 -0
- data/lib/action_controller.rb +79 -0
- data/lib/action_controller/assertions.rb +69 -0
- data/lib/action_controller/assertions/dom_assertions.rb +39 -0
- data/lib/action_controller/assertions/model_assertions.rb +20 -0
- data/lib/action_controller/assertions/response_assertions.rb +172 -0
- data/lib/action_controller/assertions/routing_assertions.rb +146 -0
- data/lib/action_controller/assertions/selector_assertions.rb +491 -0
- data/lib/action_controller/assertions/tag_assertions.rb +130 -0
- data/lib/action_controller/base.rb +1288 -0
- data/lib/action_controller/benchmarking.rb +94 -0
- data/lib/action_controller/caching.rb +72 -0
- data/lib/action_controller/caching/actions.rb +144 -0
- data/lib/action_controller/caching/fragments.rb +138 -0
- data/lib/action_controller/caching/pages.rb +154 -0
- data/lib/action_controller/caching/sql_cache.rb +18 -0
- data/lib/action_controller/caching/sweeping.rb +97 -0
- data/lib/action_controller/cgi_ext.rb +16 -0
- data/lib/action_controller/cgi_ext/cookie.rb +110 -0
- data/lib/action_controller/cgi_ext/query_extension.rb +22 -0
- data/lib/action_controller/cgi_ext/session.rb +73 -0
- data/lib/action_controller/cgi_ext/stdinput.rb +24 -0
- data/lib/action_controller/cgi_process.rb +223 -0
- data/lib/action_controller/components.rb +166 -0
- data/lib/action_controller/cookies.rb +96 -0
- data/lib/action_controller/dispatcher.rb +162 -0
- data/lib/action_controller/filters.rb +642 -0
- data/lib/action_controller/flash.rb +172 -0
- data/lib/action_controller/headers.rb +31 -0
- data/lib/action_controller/helpers.rb +221 -0
- data/lib/action_controller/http_authentication.rb +124 -0
- data/lib/action_controller/integration.rb +634 -0
- data/lib/action_controller/layout.rb +309 -0
- data/lib/action_controller/mime_responds.rb +173 -0
- data/lib/action_controller/mime_type.rb +186 -0
- data/lib/action_controller/mime_types.rb +20 -0
- data/lib/action_controller/polymorphic_routes.rb +191 -0
- data/lib/action_controller/record_identifier.rb +102 -0
- data/lib/action_controller/request.rb +764 -0
- data/lib/action_controller/request_forgery_protection.rb +140 -0
- data/lib/action_controller/request_profiler.rb +169 -0
- data/lib/action_controller/rescue.rb +258 -0
- data/lib/action_controller/resources.rb +572 -0
- data/lib/action_controller/response.rb +76 -0
- data/lib/action_controller/routing.rb +387 -0
- data/lib/action_controller/routing/builder.rb +203 -0
- data/lib/action_controller/routing/optimisations.rb +120 -0
- data/lib/action_controller/routing/recognition_optimisation.rb +162 -0
- data/lib/action_controller/routing/route.rb +240 -0
- data/lib/action_controller/routing/route_set.rb +436 -0
- data/lib/action_controller/routing/routing_ext.rb +46 -0
- data/lib/action_controller/routing/segments.rb +283 -0
- data/lib/action_controller/session/active_record_store.rb +340 -0
- data/lib/action_controller/session/cookie_store.rb +166 -0
- data/lib/action_controller/session/drb_server.rb +32 -0
- data/lib/action_controller/session/drb_store.rb +35 -0
- data/lib/action_controller/session/mem_cache_store.rb +98 -0
- data/lib/action_controller/session_management.rb +158 -0
- data/lib/action_controller/status_codes.rb +88 -0
- data/lib/action_controller/streaming.rb +155 -0
- data/lib/action_controller/templates/rescues/_request_and_response.erb +24 -0
- data/lib/action_controller/templates/rescues/_trace.erb +26 -0
- data/lib/action_controller/templates/rescues/diagnostics.erb +11 -0
- data/lib/action_controller/templates/rescues/layout.erb +29 -0
- data/lib/action_controller/templates/rescues/missing_template.erb +2 -0
- data/lib/action_controller/templates/rescues/routing_error.erb +10 -0
- data/lib/action_controller/templates/rescues/template_error.erb +21 -0
- data/lib/action_controller/templates/rescues/unknown_action.erb +2 -0
- data/lib/action_controller/test_case.rb +83 -0
- data/lib/action_controller/test_process.rb +526 -0
- data/lib/action_controller/url_rewriter.rb +142 -0
- data/lib/action_controller/vendor/html-scanner/html/document.rb +68 -0
- data/lib/action_controller/vendor/html-scanner/html/node.rb +537 -0
- data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +173 -0
- data/lib/action_controller/vendor/html-scanner/html/selector.rb +828 -0
- data/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +105 -0
- data/lib/action_controller/vendor/html-scanner/html/version.rb +11 -0
- data/lib/action_controller/verification.rb +130 -0
- data/lib/action_pack.rb +24 -0
- data/lib/action_pack/version.rb +9 -0
- data/lib/action_view.rb +44 -0
- data/lib/action_view/base.rb +335 -0
- data/lib/action_view/helpers/active_record_helper.rb +276 -0
- data/lib/action_view/helpers/asset_tag_helper.rb +599 -0
- data/lib/action_view/helpers/atom_feed_helper.rb +143 -0
- data/lib/action_view/helpers/benchmark_helper.rb +33 -0
- data/lib/action_view/helpers/cache_helper.rb +40 -0
- data/lib/action_view/helpers/capture_helper.rb +161 -0
- data/lib/action_view/helpers/date_helper.rb +711 -0
- data/lib/action_view/helpers/debug_helper.rb +31 -0
- data/lib/action_view/helpers/form_helper.rb +767 -0
- data/lib/action_view/helpers/form_options_helper.rb +458 -0
- data/lib/action_view/helpers/form_tag_helper.rb +458 -0
- data/lib/action_view/helpers/javascript_helper.rb +148 -0
- data/lib/action_view/helpers/number_helper.rb +186 -0
- data/lib/action_view/helpers/record_identification_helper.rb +20 -0
- data/lib/action_view/helpers/record_tag_helper.rb +59 -0
- data/lib/action_view/helpers/sanitize_helper.rb +229 -0
- data/lib/action_view/helpers/tag_helper.rb +134 -0
- data/lib/action_view/helpers/text_helper.rb +507 -0
- data/lib/action_view/helpers/url_helper.rb +573 -0
- data/lib/action_view/inline_template.rb +20 -0
- data/lib/action_view/partial_template.rb +70 -0
- data/lib/action_view/partials.rb +158 -0
- data/lib/action_view/template.rb +125 -0
- data/lib/action_view/template_error.rb +110 -0
- data/lib/action_view/template_finder.rb +176 -0
- data/lib/action_view/template_handler.rb +34 -0
- data/lib/action_view/template_handlers/builder.rb +27 -0
- data/lib/action_view/template_handlers/compilable.rb +128 -0
- data/lib/action_view/template_handlers/erb.rb +56 -0
- data/lib/action_view/test_case.rb +58 -0
- data/lib/actionpack.rb +1 -0
- data/test/abstract_unit.rb +36 -0
- data/test/active_record_unit.rb +105 -0
- data/test/activerecord/active_record_store_test.rb +141 -0
- data/test/activerecord/render_partial_with_record_identification_test.rb +191 -0
- data/test/adv_attr_test.rb +20 -0
- data/test/controller/action_pack_assertions_test.rb +543 -0
- data/test/controller/addresses_render_test.rb +43 -0
- data/test/controller/assert_select_test.rb +331 -0
- data/test/controller/base_test.rb +219 -0
- data/test/controller/benchmark_test.rb +32 -0
- data/test/controller/caching_test.rb +581 -0
- data/test/controller/capture_test.rb +89 -0
- data/test/controller/cgi_test.rb +116 -0
- data/test/controller/components_test.rb +140 -0
- data/test/controller/content_type_test.rb +139 -0
- data/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
- data/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
- data/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
- data/test/controller/cookie_test.rb +146 -0
- data/test/controller/custom_handler_test.rb +45 -0
- data/test/controller/deprecation/deprecated_base_methods_test.rb +37 -0
- data/test/controller/dispatcher_test.rb +105 -0
- data/test/controller/fake_controllers.rb +33 -0
- data/test/controller/fake_models.rb +11 -0
- data/test/controller/filter_params_test.rb +49 -0
- data/test/controller/filters_test.rb +881 -0
- data/test/controller/flash_test.rb +146 -0
- data/test/controller/header_test.rb +14 -0
- data/test/controller/helper_test.rb +210 -0
- data/test/controller/html-scanner/cdata_node_test.rb +15 -0
- data/test/controller/html-scanner/document_test.rb +148 -0
- data/test/controller/html-scanner/node_test.rb +89 -0
- data/test/controller/html-scanner/sanitizer_test.rb +269 -0
- data/test/controller/html-scanner/tag_node_test.rb +238 -0
- data/test/controller/html-scanner/text_node_test.rb +50 -0
- data/test/controller/html-scanner/tokenizer_test.rb +131 -0
- data/test/controller/http_authentication_test.rb +54 -0
- data/test/controller/integration_test.rb +252 -0
- data/test/controller/integration_upload_test.rb +43 -0
- data/test/controller/layout_test.rb +255 -0
- data/test/controller/mime_responds_test.rb +514 -0
- data/test/controller/mime_type_test.rb +84 -0
- data/test/controller/new_render_test.rb +843 -0
- data/test/controller/polymorphic_routes_test.rb +174 -0
- data/test/controller/record_identifier_test.rb +139 -0
- data/test/controller/redirect_test.rb +289 -0
- data/test/controller/render_test.rb +484 -0
- data/test/controller/request_forgery_protection_test.rb +305 -0
- data/test/controller/request_test.rb +928 -0
- data/test/controller/rescue_test.rb +517 -0
- data/test/controller/resources_test.rb +873 -0
- data/test/controller/routing_test.rb +2464 -0
- data/test/controller/selector_test.rb +628 -0
- data/test/controller/send_file_test.rb +138 -0
- data/test/controller/session/cookie_store_test.rb +258 -0
- data/test/controller/session/mem_cache_store_test.rb +181 -0
- data/test/controller/session_fixation_test.rb +89 -0
- data/test/controller/session_management_test.rb +178 -0
- data/test/controller/test_test.rb +695 -0
- data/test/controller/url_rewriter_test.rb +310 -0
- data/test/controller/verification_test.rb +270 -0
- data/test/controller/view_paths_test.rb +140 -0
- data/test/controller/webservice_test.rb +229 -0
- data/test/fixtures/addresses/list.erb +1 -0
- data/test/fixtures/bad_customers/_bad_customer.html.erb +1 -0
- data/test/fixtures/companies.yml +24 -0
- data/test/fixtures/company.rb +10 -0
- data/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +1 -0
- data/test/fixtures/content_type/render_default_for_js.js.erb +1 -0
- data/test/fixtures/content_type/render_default_for_rhtml.rhtml +1 -0
- data/test/fixtures/content_type/render_default_for_rxml.rxml +1 -0
- data/test/fixtures/customers/_customer.html.erb +1 -0
- data/test/fixtures/db_definitions/sqlite.sql +49 -0
- data/test/fixtures/developer.rb +9 -0
- data/test/fixtures/developers.yml +21 -0
- data/test/fixtures/developers_projects.yml +13 -0
- data/test/fixtures/fun/games/hello_world.erb +1 -0
- data/test/fixtures/functional_caching/_partial.erb +3 -0
- data/test/fixtures/functional_caching/fragment_cached.html.erb +2 -0
- data/test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb +1 -0
- data/test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs +1 -0
- data/test/fixtures/good_customers/_good_customer.html.erb +1 -0
- data/test/fixtures/helpers/abc_helper.rb +5 -0
- data/test/fixtures/helpers/fun/games_helper.rb +3 -0
- data/test/fixtures/helpers/fun/pdf_helper.rb +3 -0
- data/test/fixtures/layout_tests/alt/hello.rhtml +1 -0
- data/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +1 -0
- data/test/fixtures/layout_tests/layouts/item.rhtml +1 -0
- data/test/fixtures/layout_tests/layouts/layout_test.rhtml +1 -0
- data/test/fixtures/layout_tests/layouts/multiple_extensions.html.erb +1 -0
- data/test/fixtures/layout_tests/layouts/third_party_template_library.mab +1 -0
- data/test/fixtures/layout_tests/views/hello.rhtml +1 -0
- data/test/fixtures/layouts/block_with_layout.erb +3 -0
- data/test/fixtures/layouts/builder.builder +3 -0
- data/test/fixtures/layouts/partial_with_layout.erb +3 -0
- data/test/fixtures/layouts/standard.erb +1 -0
- data/test/fixtures/layouts/talk_from_action.erb +2 -0
- data/test/fixtures/layouts/yield.erb +2 -0
- data/test/fixtures/mascot.rb +3 -0
- data/test/fixtures/mascots.yml +4 -0
- data/test/fixtures/mascots/_mascot.html.erb +1 -0
- data/test/fixtures/multipart/binary_file +0 -0
- data/test/fixtures/multipart/boundary_problem_file +10 -0
- data/test/fixtures/multipart/bracketed_param +5 -0
- data/test/fixtures/multipart/large_text_file +10 -0
- data/test/fixtures/multipart/mixed_files +0 -0
- data/test/fixtures/multipart/mona_lisa.jpg +0 -0
- data/test/fixtures/multipart/single_parameter +5 -0
- data/test/fixtures/multipart/text_file +10 -0
- data/test/fixtures/override/test/hello_world.erb +1 -0
- data/test/fixtures/override2/layouts/test/sub.erb +1 -0
- data/test/fixtures/post_test/layouts/post.html.erb +1 -0
- data/test/fixtures/post_test/layouts/super_post.iphone.erb +1 -0
- data/test/fixtures/post_test/post/index.html.erb +1 -0
- data/test/fixtures/post_test/post/index.iphone.erb +1 -0
- data/test/fixtures/post_test/super_post/index.html.erb +1 -0
- data/test/fixtures/post_test/super_post/index.iphone.erb +1 -0
- data/test/fixtures/project.rb +3 -0
- data/test/fixtures/projects.yml +7 -0
- data/test/fixtures/public/404.html +1 -0
- data/test/fixtures/public/500.html +1 -0
- data/test/fixtures/public/images/rails.png +0 -0
- data/test/fixtures/public/javascripts/application.js +1 -0
- data/test/fixtures/public/javascripts/bank.js +1 -0
- data/test/fixtures/public/javascripts/robber.js +1 -0
- data/test/fixtures/public/javascripts/version.1.0.js +1 -0
- data/test/fixtures/public/stylesheets/bank.css +1 -0
- data/test/fixtures/public/stylesheets/robber.css +1 -0
- data/test/fixtures/public/stylesheets/version.1.0.css +1 -0
- data/test/fixtures/replies.yml +15 -0
- data/test/fixtures/reply.rb +7 -0
- data/test/fixtures/respond_to/all_types_with_layout.html.erb +1 -0
- data/test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb +1 -0
- data/test/fixtures/respond_to/iphone_with_html_response_type.html.erb +1 -0
- data/test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb +1 -0
- data/test/fixtures/respond_to/layouts/missing.html.erb +1 -0
- data/test/fixtures/respond_to/layouts/standard.html.erb +1 -0
- data/test/fixtures/respond_to/layouts/standard.iphone.erb +1 -0
- data/test/fixtures/respond_to/using_defaults.html.erb +1 -0
- data/test/fixtures/respond_to/using_defaults.js.rjs +1 -0
- data/test/fixtures/respond_to/using_defaults.xml.builder +1 -0
- data/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +1 -0
- data/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +1 -0
- data/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +1 -0
- data/test/fixtures/scope/test/modgreet.erb +1 -0
- data/test/fixtures/shared.html.erb +1 -0
- data/test/fixtures/symlink_parent/symlinked_layout.erb +5 -0
- data/test/fixtures/test/_customer.erb +1 -0
- data/test/fixtures/test/_customer_counter.erb +1 -0
- data/test/fixtures/test/_customer_greeting.erb +1 -0
- data/test/fixtures/test/_form.erb +1 -0
- data/test/fixtures/test/_hash_greeting.erb +1 -0
- data/test/fixtures/test/_hash_object.erb +2 -0
- data/test/fixtures/test/_hello.builder +1 -0
- data/test/fixtures/test/_labelling_form.erb +1 -0
- data/test/fixtures/test/_layout_for_partial.html.erb +3 -0
- data/test/fixtures/test/_partial.erb +1 -0
- data/test/fixtures/test/_partial.html.erb +1 -0
- data/test/fixtures/test/_partial.js.erb +1 -0
- data/test/fixtures/test/_partial_for_use_in_layout.html.erb +1 -0
- data/test/fixtures/test/_partial_only.erb +1 -0
- data/test/fixtures/test/_person.erb +2 -0
- data/test/fixtures/test/_raise.html.erb +1 -0
- data/test/fixtures/test/action_talk_to_layout.erb +2 -0
- data/test/fixtures/test/block_content_for.erb +2 -0
- data/test/fixtures/test/calling_partial_with_layout.html.erb +1 -0
- data/test/fixtures/test/capturing.erb +4 -0
- data/test/fixtures/test/content_for.erb +2 -0
- data/test/fixtures/test/content_for_concatenated.erb +3 -0
- data/test/fixtures/test/content_for_with_parameter.erb +2 -0
- data/test/fixtures/test/delete_with_js.rjs +2 -0
- data/test/fixtures/test/dot.directory/render_file_with_ivar.erb +1 -0
- data/test/fixtures/test/enum_rjs_test.rjs +6 -0
- data/test/fixtures/test/erb_content_for.erb +2 -0
- data/test/fixtures/test/formatted_html_erb.html.erb +1 -0
- data/test/fixtures/test/formatted_xml_erb.builder +1 -0
- data/test/fixtures/test/formatted_xml_erb.html.erb +1 -0
- data/test/fixtures/test/formatted_xml_erb.xml.erb +1 -0
- data/test/fixtures/test/greeting.erb +1 -0
- data/test/fixtures/test/greeting.js.rjs +1 -0
- data/test/fixtures/test/hello.builder +4 -0
- data/test/fixtures/test/hello_world.erb +1 -0
- data/test/fixtures/test/hello_world_container.builder +3 -0
- data/test/fixtures/test/hello_world_from_rxml.builder +4 -0
- data/test/fixtures/test/hello_world_with_layout_false.erb +1 -0
- data/test/fixtures/test/hello_xml_world.builder +11 -0
- data/test/fixtures/test/list.erb +1 -0
- data/test/fixtures/test/non_erb_block_content_for.builder +4 -0
- data/test/fixtures/test/potential_conflicts.erb +4 -0
- data/test/fixtures/test/render_file_from_template.html.erb +1 -0
- data/test/fixtures/test/render_file_with_ivar.erb +1 -0
- data/test/fixtures/test/render_file_with_locals.erb +1 -0
- data/test/fixtures/test/render_to_string_test.erb +1 -0
- data/test/fixtures/test/update_element_with_capture.erb +9 -0
- data/test/fixtures/test/using_layout_around_block.html.erb +1 -0
- data/test/fixtures/topic.rb +3 -0
- data/test/fixtures/topics.yml +22 -0
- data/test/fixtures/topics/_topic.html.erb +1 -0
- data/test/template/active_record_helper_test.rb +268 -0
- data/test/template/asset_tag_helper_test.rb +514 -0
- data/test/template/atom_feed_helper_test.rb +179 -0
- data/test/template/benchmark_helper_test.rb +60 -0
- data/test/template/date_helper_test.rb +1791 -0
- data/test/template/deprecated_erb_variable_test.rb +9 -0
- data/test/template/erb_util_test.rb +24 -0
- data/test/template/form_helper_test.rb +885 -0
- data/test/template/form_options_helper_test.rb +1333 -0
- data/test/template/form_tag_helper_test.rb +272 -0
- data/test/template/javascript_helper_test.rb +73 -0
- data/test/template/number_helper_test.rb +97 -0
- data/test/template/record_tag_helper_test.rb +54 -0
- data/test/template/sanitize_helper_test.rb +48 -0
- data/test/template/tag_helper_test.rb +77 -0
- data/test/template/template_finder_test.rb +73 -0
- data/test/template/template_object_test.rb +95 -0
- data/test/template/test_test.rb +56 -0
- data/test/template/text_helper_test.rb +367 -0
- data/test/template/url_helper_test.rb +544 -0
- data/test/testing_sandbox.rb +15 -0
- metadata +469 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require 'abstract_unit'
|
|
2
|
+
|
|
3
|
+
class Address
|
|
4
|
+
|
|
5
|
+
def Address.count(conditions = nil, join = nil)
|
|
6
|
+
nil
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def Address.find_all(arg1, arg2, arg3, arg4)
|
|
10
|
+
[]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.find(*args)
|
|
14
|
+
[]
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
class AddressesTestController < ActionController::Base
|
|
19
|
+
def self.controller_name; "addresses"; end
|
|
20
|
+
def self.controller_path; "addresses"; end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
AddressesTestController.view_paths = [ File.dirname(__FILE__) + "/../fixtures/" ]
|
|
24
|
+
|
|
25
|
+
class AddressesTest < Test::Unit::TestCase
|
|
26
|
+
def setup
|
|
27
|
+
@controller = AddressesTestController.new
|
|
28
|
+
|
|
29
|
+
# enable a logger so that (e.g.) the benchmarking stuff runs, so we can get
|
|
30
|
+
# a more accurate simulation of what happens in "real life".
|
|
31
|
+
@controller.logger = Logger.new(nil)
|
|
32
|
+
|
|
33
|
+
@request = ActionController::TestRequest.new
|
|
34
|
+
@response = ActionController::TestResponse.new
|
|
35
|
+
|
|
36
|
+
@request.host = "www.nextangle.com"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_list
|
|
40
|
+
get :list
|
|
41
|
+
assert_equal "We only need to get this far!", @response.body.chomp
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright (c) 2006 Assaf Arkin (http://labnotes.org)
|
|
3
|
+
# Under MIT and/or CC By license.
|
|
4
|
+
#++
|
|
5
|
+
|
|
6
|
+
require 'abstract_unit'
|
|
7
|
+
require 'controller/fake_controllers'
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
unless defined?(ActionMailer)
|
|
11
|
+
begin
|
|
12
|
+
$:.unshift(File.dirname(__FILE__) + "/../../../actionmailer/lib")
|
|
13
|
+
require 'action_mailer'
|
|
14
|
+
rescue LoadError
|
|
15
|
+
require 'rubygems'
|
|
16
|
+
gem 'actionmailer'
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class AssertSelectTest < Test::Unit::TestCase
|
|
21
|
+
class AssertSelectController < ActionController::Base
|
|
22
|
+
def response_with=(content)
|
|
23
|
+
@content = content
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def response_with(&block)
|
|
27
|
+
@update = block
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def html()
|
|
31
|
+
render :text=>@content, :layout=>false, :content_type=>Mime::HTML
|
|
32
|
+
@content = nil
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def xml()
|
|
36
|
+
render :text=>@content, :layout=>false, :content_type=>Mime::XML
|
|
37
|
+
@content = nil
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def rescue_action(e)
|
|
41
|
+
raise e
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
class AssertSelectMailer < ActionMailer::Base
|
|
46
|
+
def test(html)
|
|
47
|
+
recipients "test <test@test.host>"
|
|
48
|
+
from "test@test.host"
|
|
49
|
+
subject "Test e-mail"
|
|
50
|
+
part :content_type=>"text/html", :body=>html
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
AssertionFailedError = Test::Unit::AssertionFailedError
|
|
55
|
+
|
|
56
|
+
def setup
|
|
57
|
+
@controller = AssertSelectController.new
|
|
58
|
+
@request = ActionController::TestRequest.new
|
|
59
|
+
@response = ActionController::TestResponse.new
|
|
60
|
+
ActionMailer::Base.delivery_method = :test
|
|
61
|
+
ActionMailer::Base.perform_deliveries = true
|
|
62
|
+
ActionMailer::Base.deliveries = []
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def teardown
|
|
67
|
+
ActionMailer::Base.deliveries.clear
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def assert_failure(message, &block)
|
|
71
|
+
e = assert_raises(AssertionFailedError, &block)
|
|
72
|
+
assert_match(message, e.message) if Regexp === message
|
|
73
|
+
assert_equal(message, e.message) if String === message
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
#
|
|
77
|
+
# Test assert select.
|
|
78
|
+
#
|
|
79
|
+
|
|
80
|
+
def test_assert_select
|
|
81
|
+
render_html %Q{<div id="1"></div><div id="2"></div>}
|
|
82
|
+
assert_select "div", 2
|
|
83
|
+
assert_failure(/Expected at least 3 elements matching \"div\", found 2/) { assert_select "div", 3 }
|
|
84
|
+
assert_failure(/Expected at least 1 element matching \"p\", found 0/) { assert_select "p" }
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def test_equality_true_false
|
|
89
|
+
render_html %Q{<div id="1"></div><div id="2"></div>}
|
|
90
|
+
assert_nothing_raised { assert_select "div" }
|
|
91
|
+
assert_raises(AssertionFailedError) { assert_select "p" }
|
|
92
|
+
assert_nothing_raised { assert_select "div", true }
|
|
93
|
+
assert_raises(AssertionFailedError) { assert_select "p", true }
|
|
94
|
+
assert_raises(AssertionFailedError) { assert_select "div", false }
|
|
95
|
+
assert_nothing_raised { assert_select "p", false }
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def test_equality_string_and_regexp
|
|
100
|
+
render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
|
|
101
|
+
assert_nothing_raised { assert_select "div", "foo" }
|
|
102
|
+
assert_raises(AssertionFailedError) { assert_select "div", "bar" }
|
|
103
|
+
assert_nothing_raised { assert_select "div", :text=>"foo" }
|
|
104
|
+
assert_raises(AssertionFailedError) { assert_select "div", :text=>"bar" }
|
|
105
|
+
assert_nothing_raised { assert_select "div", /(foo|bar)/ }
|
|
106
|
+
assert_raises(AssertionFailedError) { assert_select "div", /foobar/ }
|
|
107
|
+
assert_nothing_raised { assert_select "div", :text=>/(foo|bar)/ }
|
|
108
|
+
assert_raises(AssertionFailedError) { assert_select "div", :text=>/foobar/ }
|
|
109
|
+
assert_raises(AssertionFailedError) { assert_select "p", :text=>/foobar/ }
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def test_equality_of_html
|
|
114
|
+
render_html %Q{<p>\n<em>"This is <strong>not</strong> a big problem,"</em> he said.\n</p>}
|
|
115
|
+
text = "\"This is not a big problem,\" he said."
|
|
116
|
+
html = "<em>\"This is <strong>not</strong> a big problem,\"</em> he said."
|
|
117
|
+
assert_nothing_raised { assert_select "p", text }
|
|
118
|
+
assert_raises(AssertionFailedError) { assert_select "p", html }
|
|
119
|
+
assert_nothing_raised { assert_select "p", :html=>html }
|
|
120
|
+
assert_raises(AssertionFailedError) { assert_select "p", :html=>text }
|
|
121
|
+
# No stripping for pre.
|
|
122
|
+
render_html %Q{<pre>\n<em>"This is <strong>not</strong> a big problem,"</em> he said.\n</pre>}
|
|
123
|
+
text = "\n\"This is not a big problem,\" he said.\n"
|
|
124
|
+
html = "\n<em>\"This is <strong>not</strong> a big problem,\"</em> he said.\n"
|
|
125
|
+
assert_nothing_raised { assert_select "pre", text }
|
|
126
|
+
assert_raises(AssertionFailedError) { assert_select "pre", html }
|
|
127
|
+
assert_nothing_raised { assert_select "pre", :html=>html }
|
|
128
|
+
assert_raises(AssertionFailedError) { assert_select "pre", :html=>text }
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def test_counts
|
|
133
|
+
render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
|
|
134
|
+
assert_nothing_raised { assert_select "div", 2 }
|
|
135
|
+
assert_failure(/Expected at least 3 elements matching \"div\", found 2/) do
|
|
136
|
+
assert_select "div", 3
|
|
137
|
+
end
|
|
138
|
+
assert_nothing_raised { assert_select "div", 1..2 }
|
|
139
|
+
assert_failure(/Expected between 3 and 4 elements matching \"div\", found 2/) do
|
|
140
|
+
assert_select "div", 3..4
|
|
141
|
+
end
|
|
142
|
+
assert_nothing_raised { assert_select "div", :count=>2 }
|
|
143
|
+
assert_failure(/Expected at least 3 elements matching \"div\", found 2/) do
|
|
144
|
+
assert_select "div", :count=>3
|
|
145
|
+
end
|
|
146
|
+
assert_nothing_raised { assert_select "div", :minimum=>1 }
|
|
147
|
+
assert_nothing_raised { assert_select "div", :minimum=>2 }
|
|
148
|
+
assert_failure(/Expected at least 3 elements matching \"div\", found 2/) do
|
|
149
|
+
assert_select "div", :minimum=>3
|
|
150
|
+
end
|
|
151
|
+
assert_nothing_raised { assert_select "div", :maximum=>2 }
|
|
152
|
+
assert_nothing_raised { assert_select "div", :maximum=>3 }
|
|
153
|
+
assert_failure(/Expected at most 1 element matching \"div\", found 2/) do
|
|
154
|
+
assert_select "div", :maximum=>1
|
|
155
|
+
end
|
|
156
|
+
assert_nothing_raised { assert_select "div", :minimum=>1, :maximum=>2 }
|
|
157
|
+
assert_failure(/Expected between 3 and 4 elements matching \"div\", found 2/) do
|
|
158
|
+
assert_select "div", :minimum=>3, :maximum=>4
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def test_substitution_values
|
|
164
|
+
render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
|
|
165
|
+
assert_select "div#?", /\d+/ do |elements|
|
|
166
|
+
assert_equal 2, elements.size
|
|
167
|
+
end
|
|
168
|
+
assert_select "div" do
|
|
169
|
+
assert_select "div#?", /\d+/ do |elements|
|
|
170
|
+
assert_equal 2, elements.size
|
|
171
|
+
assert_select "#1"
|
|
172
|
+
assert_select "#2"
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
def test_nested_assert_select
|
|
179
|
+
render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
|
|
180
|
+
assert_select "div" do |elements|
|
|
181
|
+
assert_equal 2, elements.size
|
|
182
|
+
assert_select elements[0], "#1"
|
|
183
|
+
assert_select elements[1], "#2"
|
|
184
|
+
end
|
|
185
|
+
assert_select "div" do
|
|
186
|
+
assert_select "div" do |elements|
|
|
187
|
+
assert_equal 2, elements.size
|
|
188
|
+
# Testing in a group is one thing
|
|
189
|
+
assert_select "#1,#2"
|
|
190
|
+
# Testing individually is another.
|
|
191
|
+
assert_select "#1"
|
|
192
|
+
assert_select "#2"
|
|
193
|
+
assert_select "#3", false
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
assert_failure(/Expected at least 1 element matching \"#4\", found 0\./) do
|
|
198
|
+
assert_select "div" do
|
|
199
|
+
assert_select "#4"
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
def test_assert_select_text_match
|
|
206
|
+
render_html %Q{<div id="1"><span>foo</span></div><div id="2"><span>bar</span></div>}
|
|
207
|
+
assert_select "div" do
|
|
208
|
+
assert_nothing_raised { assert_select "div", "foo" }
|
|
209
|
+
assert_nothing_raised { assert_select "div", "bar" }
|
|
210
|
+
assert_nothing_raised { assert_select "div", /\w*/ }
|
|
211
|
+
assert_nothing_raised { assert_select "div", /\w*/, :count=>2 }
|
|
212
|
+
assert_raises(AssertionFailedError) { assert_select "div", :text=>"foo", :count=>2 }
|
|
213
|
+
assert_nothing_raised { assert_select "div", :html=>"<span>bar</span>" }
|
|
214
|
+
assert_nothing_raised { assert_select "div", :html=>"<span>bar</span>" }
|
|
215
|
+
assert_nothing_raised { assert_select "div", :html=>/\w*/ }
|
|
216
|
+
assert_nothing_raised { assert_select "div", :html=>/\w*/, :count=>2 }
|
|
217
|
+
assert_raises(AssertionFailedError) { assert_select "div", :html=>"<span>foo</span>", :count=>2 }
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
#
|
|
222
|
+
# Test css_select.
|
|
223
|
+
#
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
def test_css_select
|
|
227
|
+
render_html %Q{<div id="1"></div><div id="2"></div>}
|
|
228
|
+
assert 2, css_select("div").size
|
|
229
|
+
assert 0, css_select("p").size
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
def test_nested_css_select
|
|
234
|
+
render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
|
|
235
|
+
assert_select "div#?", /\d+/ do |elements|
|
|
236
|
+
assert_equal 1, css_select(elements[0], "div").size
|
|
237
|
+
assert_equal 1, css_select(elements[1], "div").size
|
|
238
|
+
end
|
|
239
|
+
assert_select "div" do
|
|
240
|
+
assert_equal 2, css_select("div").size
|
|
241
|
+
css_select("div").each do |element|
|
|
242
|
+
# Testing as a group is one thing
|
|
243
|
+
assert !css_select("#1,#2").empty?
|
|
244
|
+
# Testing individually is another
|
|
245
|
+
assert !css_select("#1").empty?
|
|
246
|
+
assert !css_select("#2").empty?
|
|
247
|
+
end
|
|
248
|
+
end
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
def test_feed_item_encoded
|
|
252
|
+
render_xml <<-EOF
|
|
253
|
+
<rss version="2.0">
|
|
254
|
+
<channel>
|
|
255
|
+
<item>
|
|
256
|
+
<description>
|
|
257
|
+
<![CDATA[
|
|
258
|
+
<p>Test 1</p>
|
|
259
|
+
]]>
|
|
260
|
+
</description>
|
|
261
|
+
</item>
|
|
262
|
+
<item>
|
|
263
|
+
<description>
|
|
264
|
+
<![CDATA[
|
|
265
|
+
<p>Test 2</p>
|
|
266
|
+
]]>
|
|
267
|
+
</description>
|
|
268
|
+
</item>
|
|
269
|
+
</channel>
|
|
270
|
+
</rss>
|
|
271
|
+
EOF
|
|
272
|
+
assert_select "channel item description" do
|
|
273
|
+
# Test element regardless of wrapper.
|
|
274
|
+
assert_select_encoded do
|
|
275
|
+
assert_select "p", :count=>2, :text=>/Test/
|
|
276
|
+
end
|
|
277
|
+
# Test through encoded wrapper.
|
|
278
|
+
assert_select_encoded do
|
|
279
|
+
assert_select "encoded p", :count=>2, :text=>/Test/
|
|
280
|
+
end
|
|
281
|
+
# Use :root instead (recommended)
|
|
282
|
+
assert_select_encoded do
|
|
283
|
+
assert_select ":root p", :count=>2, :text=>/Test/
|
|
284
|
+
end
|
|
285
|
+
# Test individually.
|
|
286
|
+
assert_select "description" do |elements|
|
|
287
|
+
assert_select_encoded elements[0] do
|
|
288
|
+
assert_select "p", "Test 1"
|
|
289
|
+
end
|
|
290
|
+
assert_select_encoded elements[1] do
|
|
291
|
+
assert_select "p", "Test 2"
|
|
292
|
+
end
|
|
293
|
+
end
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
# Test that we only un-encode element itself.
|
|
297
|
+
assert_select "channel item" do
|
|
298
|
+
assert_select_encoded do
|
|
299
|
+
assert_select "p", 0
|
|
300
|
+
end
|
|
301
|
+
end
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
#
|
|
306
|
+
# Test assert_select_email
|
|
307
|
+
#
|
|
308
|
+
|
|
309
|
+
def test_assert_select_email
|
|
310
|
+
assert_raises(AssertionFailedError) { assert_select_email {} }
|
|
311
|
+
AssertSelectMailer.deliver_test "<div><p>foo</p><p>bar</p></div>"
|
|
312
|
+
assert_select_email do
|
|
313
|
+
assert_select "div:root" do
|
|
314
|
+
assert_select "p:first-child", "foo"
|
|
315
|
+
assert_select "p:last-child", "bar"
|
|
316
|
+
end
|
|
317
|
+
end
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
protected
|
|
322
|
+
def render_html(html)
|
|
323
|
+
@controller.response_with = html
|
|
324
|
+
get :html
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
def render_xml(xml)
|
|
328
|
+
@controller.response_with = xml
|
|
329
|
+
get :xml
|
|
330
|
+
end
|
|
331
|
+
end
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
require 'abstract_unit'
|
|
2
|
+
require 'pp' # require 'pp' early to prevent hidden_methods from not picking up the pretty-print methods until too late
|
|
3
|
+
|
|
4
|
+
# Provide some controller to run the tests on.
|
|
5
|
+
module Submodule
|
|
6
|
+
class ContainedEmptyController < ActionController::Base
|
|
7
|
+
end
|
|
8
|
+
class ContainedNonEmptyController < ActionController::Base
|
|
9
|
+
def public_action
|
|
10
|
+
render :nothing => true
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
hide_action :hidden_action
|
|
14
|
+
def hidden_action
|
|
15
|
+
raise "Noooo!"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def another_hidden_action
|
|
19
|
+
end
|
|
20
|
+
hide_action :another_hidden_action
|
|
21
|
+
end
|
|
22
|
+
class SubclassedController < ContainedNonEmptyController
|
|
23
|
+
hide_action :public_action # Hiding it here should not affect the superclass.
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
class EmptyController < ActionController::Base
|
|
27
|
+
end
|
|
28
|
+
class NonEmptyController < ActionController::Base
|
|
29
|
+
def public_action
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
hide_action :hidden_action
|
|
33
|
+
def hidden_action
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
class MethodMissingController < ActionController::Base
|
|
38
|
+
|
|
39
|
+
hide_action :shouldnt_be_called
|
|
40
|
+
def shouldnt_be_called
|
|
41
|
+
raise "NO WAY!"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
protected
|
|
45
|
+
|
|
46
|
+
def method_missing(selector)
|
|
47
|
+
render :text => selector.to_s
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
class DefaultUrlOptionsController < ActionController::Base
|
|
53
|
+
def default_url_options_action
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def default_url_options(options = nil)
|
|
57
|
+
{ :host => 'www.override.com', :action => 'new', :bacon => 'chunky' }
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
class ControllerClassTests < Test::Unit::TestCase
|
|
62
|
+
def test_controller_path
|
|
63
|
+
assert_equal 'empty', EmptyController.controller_path
|
|
64
|
+
assert_equal EmptyController.controller_path, EmptyController.new.controller_path
|
|
65
|
+
assert_equal 'submodule/contained_empty', Submodule::ContainedEmptyController.controller_path
|
|
66
|
+
assert_equal Submodule::ContainedEmptyController.controller_path, Submodule::ContainedEmptyController.new.controller_path
|
|
67
|
+
end
|
|
68
|
+
def test_controller_name
|
|
69
|
+
assert_equal 'empty', EmptyController.controller_name
|
|
70
|
+
assert_equal 'contained_empty', Submodule::ContainedEmptyController.controller_name
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
class ControllerInstanceTests < Test::Unit::TestCase
|
|
75
|
+
def setup
|
|
76
|
+
@empty = EmptyController.new
|
|
77
|
+
@contained = Submodule::ContainedEmptyController.new
|
|
78
|
+
@empty_controllers = [@empty, @contained, Submodule::SubclassedController.new]
|
|
79
|
+
|
|
80
|
+
@non_empty_controllers = [NonEmptyController.new,
|
|
81
|
+
Submodule::ContainedNonEmptyController.new]
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def test_action_methods
|
|
85
|
+
@empty_controllers.each do |c|
|
|
86
|
+
hide_mocha_methods_from_controller(c)
|
|
87
|
+
assert_equal Set.new, c.send!(:action_methods), "#{c.controller_path} should be empty!"
|
|
88
|
+
end
|
|
89
|
+
@non_empty_controllers.each do |c|
|
|
90
|
+
hide_mocha_methods_from_controller(c)
|
|
91
|
+
assert_equal Set.new(%w(public_action)), c.send!(:action_methods), "#{c.controller_path} should not be empty!"
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
protected
|
|
96
|
+
# Mocha adds some public instance methods to Object that would be
|
|
97
|
+
# considered actions, so explicitly hide_action them.
|
|
98
|
+
def hide_mocha_methods_from_controller(controller)
|
|
99
|
+
mocha_methods = [
|
|
100
|
+
:expects, :mocha, :mocha_inspect, :reset_mocha, :stubba_object,
|
|
101
|
+
:stubba_method, :stubs, :verify, :__metaclass__, :__is_a__, :to_matcher,
|
|
102
|
+
]
|
|
103
|
+
controller.class.send!(:hide_action, *mocha_methods)
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
class PerformActionTest < Test::Unit::TestCase
|
|
109
|
+
class MockLogger
|
|
110
|
+
attr_reader :logged
|
|
111
|
+
|
|
112
|
+
def initialize
|
|
113
|
+
@logged = []
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def method_missing(method, *args)
|
|
117
|
+
@logged << args.first
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def use_controller(controller_class)
|
|
122
|
+
@controller = controller_class.new
|
|
123
|
+
|
|
124
|
+
# enable a logger so that (e.g.) the benchmarking stuff runs, so we can get
|
|
125
|
+
# a more accurate simulation of what happens in "real life".
|
|
126
|
+
@controller.logger = Logger.new(nil)
|
|
127
|
+
|
|
128
|
+
@request = ActionController::TestRequest.new
|
|
129
|
+
@response = ActionController::TestResponse.new
|
|
130
|
+
|
|
131
|
+
@request.host = "www.nextangle.com"
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def test_get_on_priv_should_show_selector
|
|
135
|
+
use_controller MethodMissingController
|
|
136
|
+
get :shouldnt_be_called
|
|
137
|
+
assert_response :success
|
|
138
|
+
assert_equal 'shouldnt_be_called', @response.body
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def test_method_missing_is_not_an_action_name
|
|
142
|
+
use_controller MethodMissingController
|
|
143
|
+
assert ! @controller.send!(:action_methods).include?('method_missing')
|
|
144
|
+
|
|
145
|
+
get :method_missing
|
|
146
|
+
assert_response :success
|
|
147
|
+
assert_equal 'method_missing', @response.body
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def test_get_on_hidden_should_fail
|
|
151
|
+
use_controller NonEmptyController
|
|
152
|
+
get :hidden_action
|
|
153
|
+
assert_response 404
|
|
154
|
+
|
|
155
|
+
get :another_hidden_action
|
|
156
|
+
assert_response 404
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def test_namespaced_action_should_log_module_name
|
|
160
|
+
use_controller Submodule::ContainedNonEmptyController
|
|
161
|
+
@controller.logger = MockLogger.new
|
|
162
|
+
get :public_action
|
|
163
|
+
assert_match /Processing\sSubmodule::ContainedNonEmptyController#public_action/, @controller.logger.logged[1]
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
class DefaultUrlOptionsTest < Test::Unit::TestCase
|
|
168
|
+
def setup
|
|
169
|
+
@controller = DefaultUrlOptionsController.new
|
|
170
|
+
|
|
171
|
+
@request = ActionController::TestRequest.new
|
|
172
|
+
@response = ActionController::TestResponse.new
|
|
173
|
+
|
|
174
|
+
@request.host = 'www.example.com'
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
def test_default_url_options_are_used_if_set
|
|
178
|
+
ActionController::Routing::Routes.draw do |map|
|
|
179
|
+
map.default_url_options 'default_url_options', :controller => 'default_url_options'
|
|
180
|
+
map.connect ':controller/:action/:id'
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
get :default_url_options_action # Make a dummy request so that the controller is initialized properly.
|
|
184
|
+
|
|
185
|
+
assert_equal 'http://www.override.com/default_url_options/new?bacon=chunky', @controller.url_for(:controller => 'default_url_options')
|
|
186
|
+
assert_equal 'http://www.override.com/default_url_options?bacon=chunky', @controller.send(:default_url_options_url)
|
|
187
|
+
ensure
|
|
188
|
+
ActionController::Routing::Routes.load!
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
class EmptyUrlOptionsTest < Test::Unit::TestCase
|
|
193
|
+
def setup
|
|
194
|
+
@controller = NonEmptyController.new
|
|
195
|
+
|
|
196
|
+
@request = ActionController::TestRequest.new
|
|
197
|
+
@response = ActionController::TestResponse.new
|
|
198
|
+
|
|
199
|
+
@request.host = 'www.example.com'
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
def test_ensure_url_for_works_as_expected_when_called_with_no_options_if_default_url_options_is_not_set
|
|
203
|
+
get :public_action
|
|
204
|
+
assert_equal "http://www.example.com/non_empty/public_action", @controller.url_for
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
class EnsureNamedRoutesWorksTicket22BugTest < Test::Unit::TestCase
|
|
209
|
+
def test_named_routes_still_work
|
|
210
|
+
ActionController::Routing::Routes.draw do |map|
|
|
211
|
+
map.resources :things
|
|
212
|
+
end
|
|
213
|
+
EmptyController.send :include, ActionController::UrlWriter
|
|
214
|
+
|
|
215
|
+
assert_equal '/things', EmptyController.new.send(:things_path)
|
|
216
|
+
ensure
|
|
217
|
+
ActionController::Routing::Routes.load!
|
|
218
|
+
end
|
|
219
|
+
end
|