actionpack_csi 2.3.5.p6
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 +5184 -0
- data/MIT-LICENSE +21 -0
- data/README +409 -0
- data/RUNNING_UNIT_TESTS +24 -0
- data/Rakefile +160 -0
- data/install.rb +30 -0
- data/lib/action_controller/assertions/dom_assertions.rb +55 -0
- data/lib/action_controller/assertions/model_assertions.rb +21 -0
- data/lib/action_controller/assertions/response_assertions.rb +160 -0
- data/lib/action_controller/assertions/routing_assertions.rb +146 -0
- data/lib/action_controller/assertions/selector_assertions.rb +638 -0
- data/lib/action_controller/assertions/tag_assertions.rb +127 -0
- data/lib/action_controller/base.rb +1423 -0
- data/lib/action_controller/benchmarking.rb +107 -0
- data/lib/action_controller/caching/actions.rb +177 -0
- data/lib/action_controller/caching/fragments.rb +120 -0
- data/lib/action_controller/caching/pages.rb +152 -0
- data/lib/action_controller/caching/sweeper.rb +45 -0
- data/lib/action_controller/caching/sweeping.rb +55 -0
- data/lib/action_controller/caching.rb +71 -0
- data/lib/action_controller/cgi_ext/cookie.rb +112 -0
- data/lib/action_controller/cgi_ext/query_extension.rb +22 -0
- data/lib/action_controller/cgi_ext/stdinput.rb +24 -0
- data/lib/action_controller/cgi_ext.rb +15 -0
- data/lib/action_controller/cgi_process.rb +77 -0
- data/lib/action_controller/cookies.rb +95 -0
- data/lib/action_controller/dispatcher.rb +133 -0
- data/lib/action_controller/failsafe.rb +86 -0
- data/lib/action_controller/filters.rb +680 -0
- data/lib/action_controller/flash.rb +171 -0
- data/lib/action_controller/headers.rb +33 -0
- data/lib/action_controller/helpers.rb +225 -0
- data/lib/action_controller/http_authentication.rb +309 -0
- data/lib/action_controller/integration.rb +692 -0
- data/lib/action_controller/layout.rb +286 -0
- data/lib/action_controller/middleware_stack.rb +119 -0
- data/lib/action_controller/middlewares.rb +14 -0
- data/lib/action_controller/mime_responds.rb +193 -0
- data/lib/action_controller/mime_type.rb +212 -0
- data/lib/action_controller/mime_types.rb +21 -0
- data/lib/action_controller/params_parser.rb +77 -0
- data/lib/action_controller/performance_test.rb +15 -0
- data/lib/action_controller/polymorphic_routes.rb +189 -0
- data/lib/action_controller/rack_lint_patch.rb +36 -0
- data/lib/action_controller/record_identifier.rb +104 -0
- data/lib/action_controller/reloader.rb +54 -0
- data/lib/action_controller/request.rb +493 -0
- data/lib/action_controller/request_forgery_protection.rb +113 -0
- data/lib/action_controller/rescue.rb +183 -0
- data/lib/action_controller/resources.rb +682 -0
- data/lib/action_controller/response.rb +239 -0
- data/lib/action_controller/routing/builder.rb +197 -0
- data/lib/action_controller/routing/optimisations.rb +130 -0
- data/lib/action_controller/routing/recognition_optimisation.rb +167 -0
- data/lib/action_controller/routing/route.rb +265 -0
- data/lib/action_controller/routing/route_set.rb +502 -0
- data/lib/action_controller/routing/routing_ext.rb +49 -0
- data/lib/action_controller/routing/segments.rb +343 -0
- data/lib/action_controller/routing.rb +388 -0
- data/lib/action_controller/session/abstract_store.rb +181 -0
- data/lib/action_controller/session/cookie_store.rb +221 -0
- data/lib/action_controller/session/mem_cache_store.rb +51 -0
- data/lib/action_controller/session_management.rb +54 -0
- data/lib/action_controller/status_codes.rb +88 -0
- data/lib/action_controller/streaming.rb +181 -0
- data/lib/action_controller/string_coercion.rb +29 -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 +209 -0
- data/lib/action_controller/test_process.rb +580 -0
- data/lib/action_controller/translation.rb +13 -0
- data/lib/action_controller/uploaded_file.rb +44 -0
- data/lib/action_controller/url_rewriter.rb +216 -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/vendor/html-scanner.rb +16 -0
- data/lib/action_controller/verification.rb +130 -0
- data/lib/action_controller.rb +113 -0
- data/lib/action_pack/version.rb +9 -0
- data/lib/action_pack.rb +24 -0
- data/lib/action_view/base.rb +362 -0
- data/lib/action_view/erb/util.rb +44 -0
- data/lib/action_view/helpers/active_record_helper.rb +305 -0
- data/lib/action_view/helpers/asset_tag_helper.rb +694 -0
- data/lib/action_view/helpers/atom_feed_helper.rb +198 -0
- data/lib/action_view/helpers/benchmark_helper.rb +54 -0
- data/lib/action_view/helpers/cache_helper.rb +39 -0
- data/lib/action_view/helpers/capture_helper.rb +136 -0
- data/lib/action_view/helpers/date_helper.rb +988 -0
- data/lib/action_view/helpers/debug_helper.rb +38 -0
- data/lib/action_view/helpers/form_helper.rb +1074 -0
- data/lib/action_view/helpers/form_options_helper.rb +600 -0
- data/lib/action_view/helpers/form_tag_helper.rb +487 -0
- data/lib/action_view/helpers/javascript_helper.rb +208 -0
- data/lib/action_view/helpers/number_helper.rb +308 -0
- data/lib/action_view/helpers/prototype_helper.rb +1305 -0
- data/lib/action_view/helpers/raw_output_helper.rb +9 -0
- data/lib/action_view/helpers/record_identification_helper.rb +20 -0
- data/lib/action_view/helpers/record_tag_helper.rb +58 -0
- data/lib/action_view/helpers/sanitize_helper.rb +259 -0
- data/lib/action_view/helpers/scriptaculous_helper.rb +226 -0
- data/lib/action_view/helpers/tag_helper.rb +150 -0
- data/lib/action_view/helpers/text_helper.rb +587 -0
- data/lib/action_view/helpers/translation_helper.rb +39 -0
- data/lib/action_view/helpers/url_helper.rb +639 -0
- data/lib/action_view/helpers.rb +59 -0
- data/lib/action_view/inline_template.rb +19 -0
- data/lib/action_view/locale/en.yml +117 -0
- data/lib/action_view/partials.rb +240 -0
- data/lib/action_view/paths.rb +69 -0
- data/lib/action_view/reloadable_template.rb +117 -0
- data/lib/action_view/renderable.rb +95 -0
- data/lib/action_view/renderable_partial.rb +47 -0
- data/lib/action_view/safe_buffer.rb +28 -0
- data/lib/action_view/template.rb +252 -0
- data/lib/action_view/template_error.rb +99 -0
- data/lib/action_view/template_handler.rb +34 -0
- data/lib/action_view/template_handlers/builder.rb +17 -0
- data/lib/action_view/template_handlers/erb.rb +22 -0
- data/lib/action_view/template_handlers/rjs.rb +13 -0
- data/lib/action_view/template_handlers.rb +48 -0
- data/lib/action_view/test_case.rb +162 -0
- data/lib/action_view.rb +58 -0
- data/lib/actionpack.rb +2 -0
- data/test/abstract_unit.rb +61 -0
- data/test/active_record_unit.rb +104 -0
- data/test/activerecord/active_record_store_test.rb +174 -0
- data/test/activerecord/render_partial_with_record_identification_test.rb +188 -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 +37 -0
- data/test/controller/assert_select_test.rb +734 -0
- data/test/controller/base_test.rb +217 -0
- data/test/controller/benchmark_test.rb +32 -0
- data/test/controller/caching_test.rb +729 -0
- data/test/controller/capture_test.rb +66 -0
- data/test/controller/content_type_test.rb +168 -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 +134 -0
- data/test/controller/deprecation/deprecated_base_methods_test.rb +32 -0
- data/test/controller/dispatcher_test.rb +144 -0
- data/test/controller/dom_assertions_test.rb +53 -0
- data/test/controller/failsafe_test.rb +60 -0
- data/test/controller/fake_controllers.rb +33 -0
- data/test/controller/fake_models.rb +19 -0
- data/test/controller/filter_params_test.rb +52 -0
- data/test/controller/filters_test.rb +885 -0
- data/test/controller/flash_test.rb +147 -0
- data/test/controller/header_test.rb +14 -0
- data/test/controller/helper_test.rb +224 -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 +274 -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_basic_authentication_test.rb +113 -0
- data/test/controller/http_digest_authentication_test.rb +254 -0
- data/test/controller/integration_test.rb +483 -0
- data/test/controller/layout_test.rb +215 -0
- data/test/controller/logging_test.rb +46 -0
- data/test/controller/middleware_stack_test.rb +90 -0
- data/test/controller/mime_responds_test.rb +536 -0
- data/test/controller/mime_type_test.rb +93 -0
- data/test/controller/polymorphic_routes_test.rb +297 -0
- data/test/controller/rack_test.rb +311 -0
- data/test/controller/record_identifier_test.rb +139 -0
- data/test/controller/redirect_test.rb +285 -0
- data/test/controller/reloader_test.rb +124 -0
- data/test/controller/render_test.rb +1762 -0
- data/test/controller/request/json_params_parsing_test.rb +65 -0
- data/test/controller/request/multipart_params_parsing_test.rb +162 -0
- data/test/controller/request/query_string_parsing_test.rb +120 -0
- data/test/controller/request/test_request_test.rb +35 -0
- data/test/controller/request/url_encoded_params_parsing_test.rb +146 -0
- data/test/controller/request/xml_params_parsing_test.rb +103 -0
- data/test/controller/request_forgery_protection_test.rb +265 -0
- data/test/controller/request_test.rb +395 -0
- data/test/controller/rescue_test.rb +536 -0
- data/test/controller/resources_test.rb +1393 -0
- data/test/controller/routing_test.rb +2591 -0
- data/test/controller/selector_test.rb +628 -0
- data/test/controller/send_file_test.rb +171 -0
- data/test/controller/session/cookie_store_test.rb +216 -0
- data/test/controller/session/mem_cache_store_test.rb +127 -0
- data/test/controller/session/test_session_test.rb +58 -0
- data/test/controller/test_test.rb +700 -0
- data/test/controller/translation_test.rb +26 -0
- data/test/controller/url_rewriter_test.rb +385 -0
- data/test/controller/verification_test.rb +270 -0
- data/test/controller/view_paths_test.rb +141 -0
- data/test/controller/webservice_test.rb +273 -0
- data/test/fixtures/_top_level_partial.html.erb +1 -0
- data/test/fixtures/_top_level_partial_only.erb +1 -0
- data/test/fixtures/addresses/list.erb +1 -0
- data/test/fixtures/alternate_helpers/foo_helper.rb +3 -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_rhtml.rhtml +1 -0
- data/test/fixtures/content_type/render_default_for_rjs.rjs +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/_developer.erb +1 -0
- data/test/fixtures/developers.yml +21 -0
- data/test/fixtures/developers_projects.yml +13 -0
- data/test/fixtures/failsafe/500.html +1 -0
- data/test/fixtures/fun/games/_game.erb +1 -0
- data/test/fixtures/fun/games/hello_world.erb +1 -0
- data/test/fixtures/fun/serious/games/_game.erb +1 -0
- data/test/fixtures/functional_caching/_partial.erb +3 -0
- data/test/fixtures/functional_caching/formatted_fragment_cached.html.erb +3 -0
- data/test/fixtures/functional_caching/formatted_fragment_cached.js.rjs +6 -0
- data/test/fixtures/functional_caching/formatted_fragment_cached.xml.builder +5 -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/inline_fragment_cached.html.erb +2 -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/abs_path_layout.rhtml +1 -0
- data/test/fixtures/layout_tests/alt/hello.rhtml +1 -0
- data/test/fixtures/layout_tests/alt/layouts/alt.rhtml +0 -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/_column.html.erb +2 -0
- data/test/fixtures/layouts/block_with_layout.erb +3 -0
- data/test/fixtures/layouts/builder.builder +3 -0
- data/test/fixtures/layouts/default_html.html.erb +1 -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/xhr.html.erb +2 -0
- data/test/fixtures/layouts/yield.erb +2 -0
- data/test/fixtures/mascot.rb +3 -0
- data/test/fixtures/mascots/_mascot.html.erb +1 -0
- data/test/fixtures/mascots.yml +4 -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/empty +10 -0
- data/test/fixtures/multipart/hello.txt +1 -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/none +9 -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/_project.erb +1 -0
- data/test/fixtures/projects.yml +7 -0
- data/test/fixtures/public/404.html +1 -0
- data/test/fixtures/public/500.da.html +1 -0
- data/test/fixtures/public/500.html +1 -0
- data/test/fixtures/public/absolute/test.css +23 -0
- data/test/fixtures/public/absolute/test.js +63 -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/controls.js +1 -0
- data/test/fixtures/public/javascripts/dragdrop.js +1 -0
- data/test/fixtures/public/javascripts/effects.js +1 -0
- data/test/fixtures/public/javascripts/prototype.js +1 -0
- data/test/fixtures/public/javascripts/robber.js +1 -0
- data/test/fixtures/public/javascripts/subdir/subdir.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/subdir/subdir.css +1 -0
- data/test/fixtures/public/stylesheets/version.1.0.css +1 -0
- data/test/fixtures/quiz/questions/_question.html.erb +1 -0
- data/test/fixtures/replies/_reply.erb +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/all_types_with_layout.js.rjs +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/_counter.html.erb +1 -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/_customer_with_var.erb +1 -0
- data/test/fixtures/test/_form.erb +1 -0
- data/test/fixtures/test/_from_helper.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_block_with_args.html.erb +3 -0
- data/test/fixtures/test/_layout_for_partial.html.erb +3 -0
- data/test/fixtures/test/_local_inspector.html.erb +1 -0
- data/test/fixtures/test/_one.html.erb +1 -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/_partial_with_only_html_version.html.erb +1 -0
- data/test/fixtures/test/_person.erb +2 -0
- data/test/fixtures/test/_raise.html.erb +1 -0
- data/test/fixtures/test/_two.html.erb +1 -0
- data/test/fixtures/test/action_talk_to_layout.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/dont_pick_me +1 -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/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.da.html.erb +1 -0
- data/test/fixtures/test/hello_world.erb +1 -0
- data/test/fixtures/test/hello_world.erb~ +1 -0
- data/test/fixtures/test/hello_world.pt-BR.html.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/hyphen-ated.erb +1 -0
- data/test/fixtures/test/implicit_content_type.atom.builder +2 -0
- data/test/fixtures/test/list.erb +1 -0
- data/test/fixtures/test/malformed/malformed.en.html.erb~ +1 -0
- data/test/fixtures/test/malformed/malformed.erb~ +1 -0
- data/test/fixtures/test/malformed/malformed.html.erb~ +1 -0
- data/test/fixtures/test/nested_layout.erb +3 -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_explicit_html_template.js.rjs +1 -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_implicit_html_template.js.rjs +1 -0
- data/test/fixtures/test/render_implicit_html_template_from_xhr_request.da.html.erb +1 -0
- data/test/fixtures/test/render_implicit_html_template_from_xhr_request.html.erb +1 -0
- data/test/fixtures/test/render_implicit_js_template_without_layout.js.erb +1 -0
- data/test/fixtures/test/render_to_string_test.erb +1 -0
- data/test/fixtures/test/sub_template_raise.html.erb +1 -0
- data/test/fixtures/test/template.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/test/using_layout_around_block_with_args.html.erb +1 -0
- data/test/fixtures/test/utf8.html.erb +2 -0
- data/test/fixtures/topic.rb +3 -0
- data/test/fixtures/topics/_topic.html.erb +1 -0
- data/test/fixtures/topics.yml +22 -0
- data/test/template/active_record_helper_i18n_test.rb +44 -0
- data/test/template/active_record_helper_test.rb +302 -0
- data/test/template/asset_tag_helper_test.rb +771 -0
- data/test/template/atom_feed_helper_test.rb +315 -0
- data/test/template/benchmark_helper_test.rb +86 -0
- data/test/template/compiled_templates_test.rb +204 -0
- data/test/template/date_helper_i18n_test.rb +121 -0
- data/test/template/date_helper_test.rb +2485 -0
- data/test/template/erb_util_test.rb +24 -0
- data/test/template/form_helper_test.rb +1393 -0
- data/test/template/form_options_helper_i18n_test.rb +27 -0
- data/test/template/form_options_helper_test.rb +807 -0
- data/test/template/form_tag_helper_test.rb +344 -0
- data/test/template/javascript_helper_test.rb +106 -0
- data/test/template/number_helper_i18n_test.rb +69 -0
- data/test/template/number_helper_test.rb +132 -0
- data/test/template/prototype_helper_test.rb +639 -0
- data/test/template/raw_output_helper_test.rb +21 -0
- data/test/template/record_tag_helper_test.rb +58 -0
- data/test/template/render_test.rb +290 -0
- data/test/template/sanitize_helper_test.rb +57 -0
- data/test/template/scriptaculous_helper_test.rb +90 -0
- data/test/template/tag_helper_test.rb +98 -0
- data/test/template/template_test.rb +32 -0
- data/test/template/test_test.rb +54 -0
- data/test/template/text_helper_test.rb +543 -0
- data/test/template/translation_helper_test.rb +32 -0
- data/test/template/url_helper_test.rb +622 -0
- data/test/testing_sandbox.rb +15 -0
- data/test/view/safe_buffer_test.rb +36 -0
- data/test/view/test_case_test.rb +176 -0
- metadata +531 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
module ActionController
|
|
2
|
+
module Assertions
|
|
3
|
+
module DomAssertions
|
|
4
|
+
def self.strip_whitespace!(nodes)
|
|
5
|
+
nodes.reject! do |node|
|
|
6
|
+
if node.is_a?(HTML::Text)
|
|
7
|
+
node.content.strip!
|
|
8
|
+
node.content.empty?
|
|
9
|
+
else
|
|
10
|
+
strip_whitespace! node.children
|
|
11
|
+
false
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Test two HTML strings for equivalency (e.g., identical up to reordering of attributes)
|
|
17
|
+
#
|
|
18
|
+
# ==== Examples
|
|
19
|
+
#
|
|
20
|
+
# # assert that the referenced method generates the appropriate HTML string
|
|
21
|
+
# assert_dom_equal '<a href="http://www.example.com">Apples</a>', link_to("Apples", "http://www.example.com")
|
|
22
|
+
#
|
|
23
|
+
def assert_dom_equal(expected, actual, message = "")
|
|
24
|
+
clean_backtrace do
|
|
25
|
+
expected_dom = HTML::Document.new(expected).root
|
|
26
|
+
actual_dom = HTML::Document.new(actual).root
|
|
27
|
+
DomAssertions.strip_whitespace!(expected_dom.children)
|
|
28
|
+
DomAssertions.strip_whitespace!(actual_dom.children)
|
|
29
|
+
|
|
30
|
+
full_message = build_message(message, "<?> expected but was\n<?>.", expected_dom.to_s, actual_dom.to_s)
|
|
31
|
+
assert_block(full_message) { expected_dom == actual_dom }
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# The negated form of +assert_dom_equal+.
|
|
36
|
+
#
|
|
37
|
+
# ==== Examples
|
|
38
|
+
#
|
|
39
|
+
# # assert that the referenced method does not generate the specified HTML string
|
|
40
|
+
# assert_dom_not_equal '<a href="http://www.example.com">Apples</a>', link_to("Oranges", "http://www.example.com")
|
|
41
|
+
#
|
|
42
|
+
def assert_dom_not_equal(expected, actual, message = "")
|
|
43
|
+
clean_backtrace do
|
|
44
|
+
expected_dom = HTML::Document.new(expected).root
|
|
45
|
+
actual_dom = HTML::Document.new(actual).root
|
|
46
|
+
DomAssertions.strip_whitespace!(expected_dom.children)
|
|
47
|
+
DomAssertions.strip_whitespace!(actual_dom.children)
|
|
48
|
+
|
|
49
|
+
full_message = build_message(message, "<?> expected to be != to\n<?>.", expected_dom.to_s, actual_dom.to_s)
|
|
50
|
+
assert_block(full_message) { expected_dom != actual_dom }
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module ActionController
|
|
2
|
+
module Assertions
|
|
3
|
+
module ModelAssertions
|
|
4
|
+
# Ensures that the passed record is valid by Active Record standards and
|
|
5
|
+
# returns any error messages if it is not.
|
|
6
|
+
#
|
|
7
|
+
# ==== Examples
|
|
8
|
+
#
|
|
9
|
+
# # assert that a newly created record is valid
|
|
10
|
+
# model = Model.new
|
|
11
|
+
# assert_valid(model)
|
|
12
|
+
#
|
|
13
|
+
def assert_valid(record)
|
|
14
|
+
::ActiveSupport::Deprecation.warn("assert_valid is deprecated. Use assert record.valid? instead", caller)
|
|
15
|
+
clean_backtrace do
|
|
16
|
+
assert record.valid?, record.errors.full_messages.join("\n")
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
module ActionController
|
|
2
|
+
module Assertions
|
|
3
|
+
# A small suite of assertions that test responses from Rails applications.
|
|
4
|
+
module ResponseAssertions
|
|
5
|
+
# Asserts that the response is one of the following types:
|
|
6
|
+
#
|
|
7
|
+
# * <tt>:success</tt> - Status code was 200
|
|
8
|
+
# * <tt>:redirect</tt> - Status code was in the 300-399 range
|
|
9
|
+
# * <tt>:missing</tt> - Status code was 404
|
|
10
|
+
# * <tt>:error</tt> - Status code was in the 500-599 range
|
|
11
|
+
#
|
|
12
|
+
# You can also pass an explicit status number like assert_response(501)
|
|
13
|
+
# or its symbolic equivalent assert_response(:not_implemented).
|
|
14
|
+
# See ActionController::StatusCodes for a full list.
|
|
15
|
+
#
|
|
16
|
+
# ==== Examples
|
|
17
|
+
#
|
|
18
|
+
# # assert that the response was a redirection
|
|
19
|
+
# assert_response :redirect
|
|
20
|
+
#
|
|
21
|
+
# # assert that the response code was status code 401 (unauthorized)
|
|
22
|
+
# assert_response 401
|
|
23
|
+
#
|
|
24
|
+
def assert_response(type, message = nil)
|
|
25
|
+
clean_backtrace do
|
|
26
|
+
if [ :success, :missing, :redirect, :error ].include?(type) && @response.send("#{type}?")
|
|
27
|
+
assert_block("") { true } # to count the assertion
|
|
28
|
+
elsif type.is_a?(Fixnum) && @response.response_code == type
|
|
29
|
+
assert_block("") { true } # to count the assertion
|
|
30
|
+
elsif type.is_a?(Symbol) && @response.response_code == ActionController::StatusCodes::SYMBOL_TO_STATUS_CODE[type]
|
|
31
|
+
assert_block("") { true } # to count the assertion
|
|
32
|
+
else
|
|
33
|
+
if @response.error?
|
|
34
|
+
exception = @response.template.instance_variable_get(:@exception)
|
|
35
|
+
exception_message = exception && exception.message
|
|
36
|
+
assert_block(build_message(message, "Expected response to be a <?>, but was <?>\n<?>", type, @response.response_code, exception_message.to_s)) { false }
|
|
37
|
+
else
|
|
38
|
+
assert_block(build_message(message, "Expected response to be a <?>, but was <?>", type, @response.response_code)) { false }
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Assert that the redirection options passed in match those of the redirect called in the latest action.
|
|
45
|
+
# This match can be partial, such that assert_redirected_to(:controller => "weblog") will also
|
|
46
|
+
# match the redirection of redirect_to(:controller => "weblog", :action => "show") and so on.
|
|
47
|
+
#
|
|
48
|
+
# ==== Examples
|
|
49
|
+
#
|
|
50
|
+
# # assert that the redirection was to the "index" action on the WeblogController
|
|
51
|
+
# assert_redirected_to :controller => "weblog", :action => "index"
|
|
52
|
+
#
|
|
53
|
+
# # assert that the redirection was to the named route login_url
|
|
54
|
+
# assert_redirected_to login_url
|
|
55
|
+
#
|
|
56
|
+
# # assert that the redirection was to the url for @customer
|
|
57
|
+
# assert_redirected_to @customer
|
|
58
|
+
#
|
|
59
|
+
def assert_redirected_to(options = {}, message=nil)
|
|
60
|
+
clean_backtrace do
|
|
61
|
+
assert_response(:redirect, message)
|
|
62
|
+
return true if options == @response.redirected_to
|
|
63
|
+
|
|
64
|
+
# Support partial arguments for hash redirections
|
|
65
|
+
if options.is_a?(Hash) && @response.redirected_to.is_a?(Hash)
|
|
66
|
+
if options.all? {|(key, value)| @response.redirected_to[key] == value}
|
|
67
|
+
callstack = caller.dup
|
|
68
|
+
callstack.slice!(0, 2)
|
|
69
|
+
::ActiveSupport::Deprecation.warn("Using assert_redirected_to with partial hash arguments is deprecated. Specify the full set arguments instead", callstack)
|
|
70
|
+
return true
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
redirected_to_after_normalisation = normalize_argument_to_redirection(@response.redirected_to)
|
|
75
|
+
options_after_normalisation = normalize_argument_to_redirection(options)
|
|
76
|
+
|
|
77
|
+
if redirected_to_after_normalisation != options_after_normalisation
|
|
78
|
+
flunk "Expected response to be a redirect to <#{options_after_normalisation}> but was a redirect to <#{redirected_to_after_normalisation}>"
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Asserts that the request was rendered with the appropriate template file or partials
|
|
84
|
+
#
|
|
85
|
+
# ==== Examples
|
|
86
|
+
#
|
|
87
|
+
# # assert that the "new" view template was rendered
|
|
88
|
+
# assert_template "new"
|
|
89
|
+
#
|
|
90
|
+
# # assert that the "new" view template was rendered with Symbol
|
|
91
|
+
# assert_template :new
|
|
92
|
+
#
|
|
93
|
+
# # assert that the "_customer" partial was rendered twice
|
|
94
|
+
# assert_template :partial => '_customer', :count => 2
|
|
95
|
+
#
|
|
96
|
+
# # assert that no partials were rendered
|
|
97
|
+
# assert_template :partial => false
|
|
98
|
+
#
|
|
99
|
+
def assert_template(options = {}, message = nil)
|
|
100
|
+
clean_backtrace do
|
|
101
|
+
case options
|
|
102
|
+
when NilClass, String, Symbol
|
|
103
|
+
rendered = @response.rendered[:template].to_s
|
|
104
|
+
msg = build_message(message,
|
|
105
|
+
"expecting <?> but rendering with <?>",
|
|
106
|
+
options, rendered)
|
|
107
|
+
assert_block(msg) do
|
|
108
|
+
if options.nil?
|
|
109
|
+
@response.rendered[:template].blank?
|
|
110
|
+
else
|
|
111
|
+
rendered.to_s.match(options.to_s)
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
when Hash
|
|
115
|
+
if expected_partial = options[:partial]
|
|
116
|
+
partials = @response.rendered[:partials]
|
|
117
|
+
if expected_count = options[:count]
|
|
118
|
+
found = partials.detect { |p, _| p.to_s.match(expected_partial) }
|
|
119
|
+
actual_count = found.nil? ? 0 : found.second
|
|
120
|
+
msg = build_message(message,
|
|
121
|
+
"expecting ? to be rendered ? time(s) but rendered ? time(s)",
|
|
122
|
+
expected_partial, expected_count, actual_count)
|
|
123
|
+
assert(actual_count == expected_count.to_i, msg)
|
|
124
|
+
else
|
|
125
|
+
msg = build_message(message,
|
|
126
|
+
"expecting partial <?> but action rendered <?>",
|
|
127
|
+
options[:partial], partials.keys)
|
|
128
|
+
assert(partials.keys.any? { |p| p.to_s.match(expected_partial) }, msg)
|
|
129
|
+
end
|
|
130
|
+
else
|
|
131
|
+
assert @response.rendered[:partials].empty?,
|
|
132
|
+
"Expected no partials to be rendered"
|
|
133
|
+
end
|
|
134
|
+
else
|
|
135
|
+
raise ArgumentError
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
private
|
|
141
|
+
# Proxy to to_param if the object will respond to it.
|
|
142
|
+
def parameterize(value)
|
|
143
|
+
value.respond_to?(:to_param) ? value.to_param : value
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def normalize_argument_to_redirection(fragment)
|
|
147
|
+
after_routing = @controller.url_for(fragment)
|
|
148
|
+
if after_routing =~ %r{^\w+://.*}
|
|
149
|
+
after_routing
|
|
150
|
+
else
|
|
151
|
+
# FIXME - this should probably get removed.
|
|
152
|
+
if after_routing.first != '/'
|
|
153
|
+
after_routing = '/' + after_routing
|
|
154
|
+
end
|
|
155
|
+
@request.protocol + @request.host_with_port + after_routing
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
end
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
module ActionController
|
|
2
|
+
module Assertions
|
|
3
|
+
# Suite of assertions to test routes generated by Rails and the handling of requests made to them.
|
|
4
|
+
module RoutingAssertions
|
|
5
|
+
# Asserts that the routing of the given +path+ was handled correctly and that the parsed options (given in the +expected_options+ hash)
|
|
6
|
+
# match +path+. Basically, it asserts that Rails recognizes the route given by +expected_options+.
|
|
7
|
+
#
|
|
8
|
+
# Pass a hash in the second argument (+path+) to specify the request method. This is useful for routes
|
|
9
|
+
# requiring a specific HTTP method. The hash should contain a :path with the incoming request path
|
|
10
|
+
# and a :method containing the required HTTP verb.
|
|
11
|
+
#
|
|
12
|
+
# # assert that POSTing to /items will call the create action on ItemsController
|
|
13
|
+
# assert_recognizes {:controller => 'items', :action => 'create'}, {:path => 'items', :method => :post}
|
|
14
|
+
#
|
|
15
|
+
# You can also pass in +extras+ with a hash containing URL parameters that would normally be in the query string. This can be used
|
|
16
|
+
# to assert that values in the query string string will end up in the params hash correctly. To test query strings you must use the
|
|
17
|
+
# extras argument, appending the query string on the path directly will not work. For example:
|
|
18
|
+
#
|
|
19
|
+
# # assert that a path of '/items/list/1?view=print' returns the correct options
|
|
20
|
+
# assert_recognizes {:controller => 'items', :action => 'list', :id => '1', :view => 'print'}, 'items/list/1', { :view => "print" }
|
|
21
|
+
#
|
|
22
|
+
# The +message+ parameter allows you to pass in an error message that is displayed upon failure.
|
|
23
|
+
#
|
|
24
|
+
# ==== Examples
|
|
25
|
+
# # Check the default route (i.e., the index action)
|
|
26
|
+
# assert_recognizes {:controller => 'items', :action => 'index'}, 'items'
|
|
27
|
+
#
|
|
28
|
+
# # Test a specific action
|
|
29
|
+
# assert_recognizes {:controller => 'items', :action => 'list'}, 'items/list'
|
|
30
|
+
#
|
|
31
|
+
# # Test an action with a parameter
|
|
32
|
+
# assert_recognizes {:controller => 'items', :action => 'destroy', :id => '1'}, 'items/destroy/1'
|
|
33
|
+
#
|
|
34
|
+
# # Test a custom route
|
|
35
|
+
# assert_recognizes {:controller => 'items', :action => 'show', :id => '1'}, 'view/item1'
|
|
36
|
+
#
|
|
37
|
+
# # Check a Simply RESTful generated route
|
|
38
|
+
# assert_recognizes list_items_url, 'items/list'
|
|
39
|
+
def assert_recognizes(expected_options, path, extras={}, message=nil)
|
|
40
|
+
if path.is_a? Hash
|
|
41
|
+
request_method = path[:method]
|
|
42
|
+
path = path[:path]
|
|
43
|
+
else
|
|
44
|
+
request_method = nil
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
clean_backtrace do
|
|
48
|
+
ActionController::Routing::Routes.reload if ActionController::Routing::Routes.empty?
|
|
49
|
+
request = recognized_request_for(path, request_method)
|
|
50
|
+
|
|
51
|
+
expected_options = expected_options.clone
|
|
52
|
+
extras.each_key { |key| expected_options.delete key } unless extras.nil?
|
|
53
|
+
|
|
54
|
+
expected_options.stringify_keys!
|
|
55
|
+
routing_diff = expected_options.diff(request.path_parameters)
|
|
56
|
+
msg = build_message(message, "The recognized options <?> did not match <?>, difference: <?>",
|
|
57
|
+
request.path_parameters, expected_options, expected_options.diff(request.path_parameters))
|
|
58
|
+
assert_block(msg) { request.path_parameters == expected_options }
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Asserts that the provided options can be used to generate the provided path. This is the inverse of +assert_recognizes+.
|
|
63
|
+
# The +extras+ parameter is used to tell the request the names and values of additional request parameters that would be in
|
|
64
|
+
# a query string. The +message+ parameter allows you to specify a custom error message for assertion failures.
|
|
65
|
+
#
|
|
66
|
+
# The +defaults+ parameter is unused.
|
|
67
|
+
#
|
|
68
|
+
# ==== Examples
|
|
69
|
+
# # Asserts that the default action is generated for a route with no action
|
|
70
|
+
# assert_generates "/items", :controller => "items", :action => "index"
|
|
71
|
+
#
|
|
72
|
+
# # Tests that the list action is properly routed
|
|
73
|
+
# assert_generates "/items/list", :controller => "items", :action => "list"
|
|
74
|
+
#
|
|
75
|
+
# # Tests the generation of a route with a parameter
|
|
76
|
+
# assert_generates "/items/list/1", { :controller => "items", :action => "list", :id => "1" }
|
|
77
|
+
#
|
|
78
|
+
# # Asserts that the generated route gives us our custom route
|
|
79
|
+
# assert_generates "changesets/12", { :controller => 'scm', :action => 'show_diff', :revision => "12" }
|
|
80
|
+
def assert_generates(expected_path, options, defaults={}, extras = {}, message=nil)
|
|
81
|
+
clean_backtrace do
|
|
82
|
+
expected_path = "/#{expected_path}" unless expected_path[0] == ?/
|
|
83
|
+
# Load routes.rb if it hasn't been loaded.
|
|
84
|
+
ActionController::Routing::Routes.reload if ActionController::Routing::Routes.empty?
|
|
85
|
+
|
|
86
|
+
generated_path, extra_keys = ActionController::Routing::Routes.generate_extras(options, defaults)
|
|
87
|
+
found_extras = options.reject {|k, v| ! extra_keys.include? k}
|
|
88
|
+
|
|
89
|
+
msg = build_message(message, "found extras <?>, not <?>", found_extras, extras)
|
|
90
|
+
assert_block(msg) { found_extras == extras }
|
|
91
|
+
|
|
92
|
+
msg = build_message(message, "The generated path <?> did not match <?>", generated_path,
|
|
93
|
+
expected_path)
|
|
94
|
+
assert_block(msg) { expected_path == generated_path }
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# Asserts that path and options match both ways; in other words, it verifies that <tt>path</tt> generates
|
|
99
|
+
# <tt>options</tt> and then that <tt>options</tt> generates <tt>path</tt>. This essentially combines +assert_recognizes+
|
|
100
|
+
# and +assert_generates+ into one step.
|
|
101
|
+
#
|
|
102
|
+
# The +extras+ hash allows you to specify options that would normally be provided as a query string to the action. The
|
|
103
|
+
# +message+ parameter allows you to specify a custom error message to display upon failure.
|
|
104
|
+
#
|
|
105
|
+
# ==== Examples
|
|
106
|
+
# # Assert a basic route: a controller with the default action (index)
|
|
107
|
+
# assert_routing '/home', :controller => 'home', :action => 'index'
|
|
108
|
+
#
|
|
109
|
+
# # Test a route generated with a specific controller, action, and parameter (id)
|
|
110
|
+
# assert_routing '/entries/show/23', :controller => 'entries', :action => 'show', id => 23
|
|
111
|
+
#
|
|
112
|
+
# # Assert a basic route (controller + default action), with an error message if it fails
|
|
113
|
+
# assert_routing '/store', { :controller => 'store', :action => 'index' }, {}, {}, 'Route for store index not generated properly'
|
|
114
|
+
#
|
|
115
|
+
# # Tests a route, providing a defaults hash
|
|
116
|
+
# assert_routing 'controller/action/9', {:id => "9", :item => "square"}, {:controller => "controller", :action => "action"}, {}, {:item => "square"}
|
|
117
|
+
#
|
|
118
|
+
# # Tests a route with a HTTP method
|
|
119
|
+
# assert_routing { :method => 'put', :path => '/product/321' }, { :controller => "product", :action => "update", :id => "321" }
|
|
120
|
+
def assert_routing(path, options, defaults={}, extras={}, message=nil)
|
|
121
|
+
assert_recognizes(options, path, extras, message)
|
|
122
|
+
|
|
123
|
+
controller, default_controller = options[:controller], defaults[:controller]
|
|
124
|
+
if controller && controller.include?(?/) && default_controller && default_controller.include?(?/)
|
|
125
|
+
options[:controller] = "/#{controller}"
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
assert_generates(path.is_a?(Hash) ? path[:path] : path, options, defaults, extras, message)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
private
|
|
132
|
+
# Recognizes the route for a given path.
|
|
133
|
+
def recognized_request_for(path, request_method = nil)
|
|
134
|
+
path = "/#{path}" unless path.first == '/'
|
|
135
|
+
|
|
136
|
+
# Assume given controller
|
|
137
|
+
request = ActionController::TestRequest.new
|
|
138
|
+
request.env["REQUEST_METHOD"] = request_method.to_s.upcase if request_method
|
|
139
|
+
request.path = path
|
|
140
|
+
|
|
141
|
+
ActionController::Routing::Routes.recognize(request)
|
|
142
|
+
request
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
end
|