actionpack 2.3.18 → 3.0.0.beta
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of actionpack might be problematic. Click here for more details.
- data/CHANGELOG +15 -64
- data/README +39 -48
- data/lib/abstract_controller.rb +22 -0
- data/lib/abstract_controller/base.rb +191 -0
- data/lib/abstract_controller/callbacks.rb +113 -0
- data/lib/abstract_controller/collector.rb +30 -0
- data/lib/abstract_controller/compatibility.rb +18 -0
- data/lib/abstract_controller/helpers.rb +163 -0
- data/lib/abstract_controller/layouts.rb +413 -0
- data/lib/abstract_controller/localized_cache.rb +49 -0
- data/lib/abstract_controller/logger.rb +13 -0
- data/lib/abstract_controller/rendering.rb +238 -0
- data/lib/{action_controller → abstract_controller}/translation.rb +1 -1
- data/lib/action_controller.rb +68 -102
- data/lib/action_controller/base.rb +77 -1409
- data/lib/action_controller/caching.rb +58 -45
- data/lib/action_controller/caching/actions.rb +100 -114
- data/lib/action_controller/caching/fragments.rb +17 -19
- data/lib/action_controller/caching/pages.rb +12 -6
- data/lib/action_controller/caching/sweeping.rb +42 -0
- data/lib/action_controller/deprecated.rb +5 -0
- data/lib/action_controller/deprecated/dispatcher.rb +28 -0
- data/lib/action_controller/deprecated/integration_test.rb +2 -0
- data/lib/action_controller/deprecated/performance_test.rb +1 -0
- data/lib/action_controller/metal.rb +125 -0
- data/lib/action_controller/metal/compatibility.rb +141 -0
- data/lib/action_controller/metal/conditional_get.rb +86 -0
- data/lib/action_controller/metal/configuration.rb +28 -0
- data/lib/action_controller/metal/cookies.rb +17 -0
- data/lib/action_controller/metal/exceptions.rb +46 -0
- data/lib/action_controller/metal/flash.rb +28 -0
- data/lib/action_controller/metal/head.rb +33 -0
- data/lib/action_controller/metal/helpers.rb +116 -0
- data/lib/action_controller/metal/hide_actions.rb +50 -0
- data/lib/action_controller/{http_authentication.rb → metal/http_authentication.rb} +18 -15
- data/lib/action_controller/metal/instrumentation.rb +99 -0
- data/lib/action_controller/metal/mime_responds.rb +300 -0
- data/lib/action_controller/metal/rack_delegation.rb +35 -0
- data/lib/action_controller/metal/redirecting.rb +90 -0
- data/lib/action_controller/metal/renderers.rb +95 -0
- data/lib/action_controller/metal/rendering.rb +69 -0
- data/lib/action_controller/metal/request_forgery_protection.rb +115 -0
- data/lib/action_controller/metal/rescue.rb +13 -0
- data/lib/action_controller/metal/responder.rb +220 -0
- data/lib/action_controller/{session_management.rb → metal/session_management.rb} +5 -14
- data/lib/action_controller/{streaming.rb → metal/streaming.rb} +13 -12
- data/lib/action_controller/metal/testing.rb +42 -0
- data/lib/action_controller/metal/url_for.rb +157 -0
- data/lib/action_controller/{verification.rb → metal/verification.rb} +41 -41
- data/lib/action_controller/middleware.rb +38 -0
- data/lib/action_controller/polymorphic_routes.rb +20 -26
- data/lib/action_controller/railtie.rb +30 -0
- data/lib/action_controller/railties/subscriber.rb +63 -0
- data/lib/action_controller/record_identifier.rb +3 -16
- data/lib/action_controller/test_case.rb +156 -18
- data/lib/action_controller/url_rewriter.rb +47 -200
- data/lib/action_controller/vendor/html-scanner.rb +16 -12
- data/lib/action_controller/vendor/html-scanner/html/node.rb +1 -1
- data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +12 -9
- data/lib/action_dispatch.rb +88 -0
- data/lib/action_dispatch/http/cache.rb +123 -0
- data/lib/action_dispatch/http/filter_parameters.rb +98 -0
- data/lib/{action_controller → action_dispatch/http}/headers.rb +8 -8
- data/lib/action_dispatch/http/mime_negotiation.rb +101 -0
- data/lib/{action_controller → action_dispatch/http}/mime_type.rb +30 -11
- data/lib/{action_controller → action_dispatch/http}/mime_types.rb +5 -3
- data/lib/action_dispatch/http/parameters.rb +49 -0
- data/lib/action_dispatch/http/request.rb +223 -0
- data/lib/action_dispatch/http/response.rb +209 -0
- data/lib/action_dispatch/http/upload.rb +48 -0
- data/lib/action_dispatch/http/url.rb +129 -0
- data/lib/action_dispatch/middleware/callbacks.rb +50 -0
- data/lib/action_dispatch/middleware/cascade.rb +29 -0
- data/lib/action_dispatch/middleware/cookies.rb +216 -0
- data/lib/{action_controller → action_dispatch/middleware}/flash.rb +51 -90
- data/lib/action_dispatch/middleware/head.rb +18 -0
- data/lib/action_dispatch/middleware/params_parser.rb +78 -0
- data/lib/action_dispatch/middleware/rescue.rb +26 -0
- data/lib/action_dispatch/middleware/session/abstract_store.rb +209 -0
- data/lib/{action_controller → action_dispatch/middleware}/session/cookie_store.rb +56 -60
- data/lib/action_dispatch/middleware/session/mem_cache_store.rb +47 -0
- data/lib/action_dispatch/middleware/show_exceptions.rb +173 -0
- data/lib/{action_controller/middleware_stack.rb → action_dispatch/middleware/stack.rb} +23 -13
- data/lib/action_dispatch/middleware/static.rb +44 -0
- data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/_request_and_response.erb +10 -3
- data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/_trace.erb +4 -4
- data/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb +10 -0
- data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/layout.erb +2 -2
- data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/missing_template.erb +0 -0
- data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/routing_error.erb +0 -0
- data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/template_error.erb +3 -3
- data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/unknown_action.erb +0 -0
- data/lib/action_dispatch/railtie.rb +15 -0
- data/lib/action_dispatch/routing.rb +217 -0
- data/lib/action_dispatch/routing/deprecated_mapper.rb +877 -0
- data/lib/action_dispatch/routing/mapper.rb +649 -0
- data/lib/action_dispatch/routing/route.rb +55 -0
- data/lib/action_dispatch/routing/route_set.rb +445 -0
- data/lib/action_dispatch/testing/assertions.rb +21 -0
- data/lib/action_dispatch/testing/assertions/dom.rb +37 -0
- data/lib/{action_controller/assertions/model_assertions.rb → action_dispatch/testing/assertions/model.rb} +2 -4
- data/lib/action_dispatch/testing/assertions/response.rb +154 -0
- data/lib/{action_controller/assertions/routing_assertions.rb → action_dispatch/testing/assertions/routing.rb} +72 -34
- data/lib/{action_controller/assertions/selector_assertions.rb → action_dispatch/testing/assertions/selector.rb} +14 -11
- data/lib/{action_controller/assertions/tag_assertions.rb → action_dispatch/testing/assertions/tag.rb} +25 -14
- data/lib/{action_controller → action_dispatch/testing}/integration.rb +173 -406
- data/lib/action_dispatch/testing/performance_test.rb +17 -0
- data/lib/action_dispatch/testing/test_process.rb +42 -0
- data/lib/action_dispatch/testing/test_request.rb +83 -0
- data/lib/action_dispatch/testing/test_response.rb +136 -0
- data/lib/action_pack/version.rb +3 -3
- data/lib/action_view.rb +29 -26
- data/lib/action_view/base.rb +101 -148
- data/lib/action_view/context.rb +44 -0
- data/lib/action_view/helpers.rb +6 -4
- data/lib/action_view/helpers/{active_record_helper.rb → active_model_helper.rb} +63 -63
- data/lib/action_view/helpers/asset_tag_helper.rb +166 -31
- data/lib/action_view/helpers/cache_helper.rb +1 -1
- data/lib/action_view/helpers/capture_helper.rb +40 -8
- data/lib/action_view/helpers/csrf_helper.rb +2 -4
- data/lib/action_view/helpers/date_helper.rb +14 -15
- data/lib/action_view/helpers/form_helper.rb +121 -24
- data/lib/action_view/helpers/form_options_helper.rb +26 -25
- data/lib/action_view/helpers/form_tag_helper.rb +42 -33
- data/lib/action_view/helpers/javascript_helper.rb +1 -109
- data/lib/action_view/helpers/number_helper.rb +4 -1
- data/lib/action_view/helpers/prototype_helper.rb +75 -499
- data/lib/action_view/helpers/raw_output_helper.rb +1 -1
- data/lib/action_view/helpers/record_tag_helper.rb +3 -3
- data/lib/action_view/helpers/sanitize_helper.rb +3 -2
- data/lib/action_view/helpers/scriptaculous_helper.rb +89 -53
- data/lib/action_view/helpers/tag_helper.rb +12 -13
- data/lib/action_view/helpers/text_helper.rb +33 -38
- data/lib/action_view/helpers/translation_helper.rb +11 -35
- data/lib/action_view/helpers/url_helper.rb +140 -134
- data/lib/action_view/locale/en.yml +34 -28
- data/lib/action_view/paths.rb +27 -24
- data/lib/action_view/railtie.rb +17 -0
- data/lib/action_view/railties/subscriber.rb +24 -0
- data/lib/action_view/{partials.rb → render/partials.rb} +161 -51
- data/lib/action_view/render/rendering.rb +117 -0
- data/lib/action_view/template.rb +88 -217
- data/lib/action_view/template/error.rb +105 -0
- data/lib/action_view/template/handler.rb +41 -0
- data/lib/action_view/template/handlers.rb +54 -0
- data/lib/action_view/{template_handlers → template/handlers}/builder.rb +6 -6
- data/lib/action_view/template/handlers/erb.rb +58 -0
- data/lib/action_view/{template_handlers → template/handlers}/rjs.rb +8 -3
- data/lib/action_view/template/resolver.rb +164 -0
- data/lib/action_view/template/text.rb +40 -0
- data/lib/action_view/test_case.rb +18 -18
- metadata +165 -420
- data/RUNNING_UNIT_TESTS +0 -24
- data/Rakefile +0 -158
- data/install.rb +0 -30
- data/lib/action_controller/assertions/dom_assertions.rb +0 -55
- data/lib/action_controller/assertions/response_assertions.rb +0 -169
- data/lib/action_controller/benchmarking.rb +0 -107
- data/lib/action_controller/caching/sweeper.rb +0 -45
- data/lib/action_controller/cgi_ext.rb +0 -15
- data/lib/action_controller/cgi_ext/cookie.rb +0 -112
- data/lib/action_controller/cgi_ext/query_extension.rb +0 -22
- data/lib/action_controller/cgi_ext/stdinput.rb +0 -24
- data/lib/action_controller/cgi_process.rb +0 -77
- data/lib/action_controller/cookies.rb +0 -197
- data/lib/action_controller/dispatcher.rb +0 -133
- data/lib/action_controller/failsafe.rb +0 -87
- data/lib/action_controller/filters.rb +0 -680
- data/lib/action_controller/helpers.rb +0 -225
- data/lib/action_controller/layout.rb +0 -286
- data/lib/action_controller/middlewares.rb +0 -14
- data/lib/action_controller/mime_responds.rb +0 -193
- data/lib/action_controller/params_parser.rb +0 -77
- data/lib/action_controller/performance_test.rb +0 -15
- data/lib/action_controller/rack_lint_patch.rb +0 -36
- data/lib/action_controller/reloader.rb +0 -54
- data/lib/action_controller/request.rb +0 -518
- data/lib/action_controller/request_forgery_protection.rb +0 -116
- data/lib/action_controller/rescue.rb +0 -183
- data/lib/action_controller/resources.rb +0 -682
- data/lib/action_controller/response.rb +0 -237
- data/lib/action_controller/routing.rb +0 -388
- data/lib/action_controller/routing/builder.rb +0 -197
- data/lib/action_controller/routing/optimisations.rb +0 -130
- data/lib/action_controller/routing/recognition_optimisation.rb +0 -167
- data/lib/action_controller/routing/route.rb +0 -265
- data/lib/action_controller/routing/route_set.rb +0 -503
- data/lib/action_controller/routing/routing_ext.rb +0 -49
- data/lib/action_controller/routing/segments.rb +0 -343
- data/lib/action_controller/session/abstract_store.rb +0 -276
- data/lib/action_controller/session/mem_cache_store.rb +0 -60
- data/lib/action_controller/status_codes.rb +0 -88
- data/lib/action_controller/string_coercion.rb +0 -29
- data/lib/action_controller/templates/rescues/diagnostics.erb +0 -11
- data/lib/action_controller/test_process.rb +0 -580
- data/lib/action_controller/uploaded_file.rb +0 -44
- data/lib/action_view/helpers/benchmark_helper.rb +0 -54
- data/lib/action_view/inline_template.rb +0 -19
- data/lib/action_view/reloadable_template.rb +0 -117
- data/lib/action_view/renderable.rb +0 -109
- data/lib/action_view/renderable_partial.rb +0 -53
- data/lib/action_view/template_error.rb +0 -99
- data/lib/action_view/template_handler.rb +0 -34
- data/lib/action_view/template_handlers.rb +0 -48
- data/lib/action_view/template_handlers/erb.rb +0 -25
- data/lib/actionpack.rb +0 -2
- data/test/abstract_unit.rb +0 -78
- data/test/active_record_unit.rb +0 -104
- data/test/activerecord/active_record_store_test.rb +0 -221
- data/test/activerecord/render_partial_with_record_identification_test.rb +0 -188
- data/test/adv_attr_test.rb +0 -20
- data/test/controller/action_pack_assertions_test.rb +0 -545
- data/test/controller/addresses_render_test.rb +0 -37
- data/test/controller/assert_select_test.rb +0 -735
- data/test/controller/base_test.rb +0 -217
- data/test/controller/benchmark_test.rb +0 -32
- data/test/controller/caching_test.rb +0 -743
- data/test/controller/capture_test.rb +0 -66
- data/test/controller/content_type_test.rb +0 -178
- 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 +0 -208
- data/test/controller/deprecation/deprecated_base_methods_test.rb +0 -32
- data/test/controller/dispatcher_test.rb +0 -144
- data/test/controller/dom_assertions_test.rb +0 -53
- data/test/controller/failsafe_test.rb +0 -60
- data/test/controller/fake_controllers.rb +0 -33
- data/test/controller/fake_models.rb +0 -19
- data/test/controller/filter_params_test.rb +0 -52
- data/test/controller/filters_test.rb +0 -885
- data/test/controller/flash_test.rb +0 -174
- data/test/controller/header_test.rb +0 -14
- data/test/controller/helper_test.rb +0 -224
- data/test/controller/html-scanner/cdata_node_test.rb +0 -15
- data/test/controller/html-scanner/document_test.rb +0 -148
- data/test/controller/html-scanner/node_test.rb +0 -89
- data/test/controller/html-scanner/sanitizer_test.rb +0 -300
- data/test/controller/html-scanner/tag_node_test.rb +0 -238
- data/test/controller/html-scanner/text_node_test.rb +0 -50
- data/test/controller/html-scanner/tokenizer_test.rb +0 -131
- data/test/controller/http_basic_authentication_test.rb +0 -113
- data/test/controller/http_digest_authentication_test.rb +0 -254
- data/test/controller/integration_test.rb +0 -526
- data/test/controller/layout_test.rb +0 -215
- data/test/controller/localized_templates_test.rb +0 -24
- data/test/controller/logging_test.rb +0 -46
- data/test/controller/middleware_stack_test.rb +0 -90
- data/test/controller/mime_responds_test.rb +0 -536
- data/test/controller/mime_type_test.rb +0 -93
- data/test/controller/output_escaping_test.rb +0 -19
- data/test/controller/polymorphic_routes_test.rb +0 -297
- data/test/controller/rack_test.rb +0 -308
- data/test/controller/record_identifier_test.rb +0 -139
- data/test/controller/redirect_test.rb +0 -285
- data/test/controller/reloader_test.rb +0 -125
- data/test/controller/render_test.rb +0 -1783
- data/test/controller/request/json_params_parsing_test.rb +0 -65
- data/test/controller/request/multipart_params_parsing_test.rb +0 -177
- data/test/controller/request/query_string_parsing_test.rb +0 -129
- data/test/controller/request/test_request_test.rb +0 -35
- data/test/controller/request/url_encoded_params_parsing_test.rb +0 -146
- data/test/controller/request/xml_params_parsing_test.rb +0 -103
- data/test/controller/request_forgery_protection_test.rb +0 -233
- data/test/controller/request_test.rb +0 -398
- data/test/controller/rescue_test.rb +0 -541
- data/test/controller/resources_test.rb +0 -1393
- data/test/controller/routing_test.rb +0 -2592
- data/test/controller/selector_test.rb +0 -628
- data/test/controller/send_file_test.rb +0 -171
- data/test/controller/session/abstract_store_test.rb +0 -64
- data/test/controller/session/cookie_store_test.rb +0 -354
- data/test/controller/session/mem_cache_store_test.rb +0 -187
- data/test/controller/session/test_session_test.rb +0 -58
- data/test/controller/test_test.rb +0 -700
- data/test/controller/translation_test.rb +0 -26
- data/test/controller/url_rewriter_test.rb +0 -395
- data/test/controller/verification_test.rb +0 -270
- data/test/controller/view_paths_test.rb +0 -141
- data/test/controller/webservice_test.rb +0 -273
- data/test/fixtures/_top_level_partial.html.erb +0 -1
- data/test/fixtures/_top_level_partial_only.erb +0 -1
- data/test/fixtures/addresses/list.erb +0 -1
- data/test/fixtures/alternate_helpers/foo_helper.rb +0 -3
- data/test/fixtures/bad_customers/_bad_customer.html.erb +0 -1
- data/test/fixtures/companies.yml +0 -24
- data/test/fixtures/company.rb +0 -10
- data/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +0 -1
- data/test/fixtures/content_type/render_default_for_rhtml.rhtml +0 -1
- data/test/fixtures/content_type/render_default_for_rjs.rjs +0 -1
- data/test/fixtures/content_type/render_default_for_rxml.rxml +0 -1
- data/test/fixtures/customers/_customer.html.erb +0 -1
- data/test/fixtures/db_definitions/sqlite.sql +0 -49
- data/test/fixtures/developer.rb +0 -9
- data/test/fixtures/developers.yml +0 -21
- data/test/fixtures/developers/_developer.erb +0 -1
- data/test/fixtures/developers_projects.yml +0 -13
- data/test/fixtures/failsafe/500.html +0 -1
- data/test/fixtures/fun/games/_game.erb +0 -1
- data/test/fixtures/fun/games/hello_world.erb +0 -1
- data/test/fixtures/fun/serious/games/_game.erb +0 -1
- data/test/fixtures/functional_caching/_partial.erb +0 -3
- data/test/fixtures/functional_caching/formatted_fragment_cached.html.erb +0 -3
- data/test/fixtures/functional_caching/formatted_fragment_cached.js.rjs +0 -6
- data/test/fixtures/functional_caching/formatted_fragment_cached.xml.builder +0 -5
- data/test/fixtures/functional_caching/fragment_cached.html.erb +0 -2
- data/test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb +0 -1
- data/test/fixtures/functional_caching/inline_fragment_cached.html.erb +0 -2
- data/test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs +0 -1
- data/test/fixtures/good_customers/_good_customer.html.erb +0 -1
- data/test/fixtures/helpers/abc_helper.rb +0 -5
- data/test/fixtures/helpers/fun/games_helper.rb +0 -3
- data/test/fixtures/helpers/fun/pdf_helper.rb +0 -3
- data/test/fixtures/layout_tests/abs_path_layout.rhtml +0 -1
- data/test/fixtures/layout_tests/alt/hello.rhtml +0 -1
- data/test/fixtures/layout_tests/alt/layouts/alt.rhtml +0 -0
- data/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +0 -1
- data/test/fixtures/layout_tests/layouts/item.rhtml +0 -1
- data/test/fixtures/layout_tests/layouts/layout_test.rhtml +0 -1
- data/test/fixtures/layout_tests/layouts/multiple_extensions.html.erb +0 -1
- data/test/fixtures/layout_tests/layouts/third_party_template_library.mab +0 -1
- data/test/fixtures/layout_tests/views/hello.rhtml +0 -1
- data/test/fixtures/layouts/_column.html.erb +0 -2
- data/test/fixtures/layouts/block_with_layout.erb +0 -3
- data/test/fixtures/layouts/builder.builder +0 -3
- data/test/fixtures/layouts/default_html.html.erb +0 -1
- data/test/fixtures/layouts/partial_with_layout.erb +0 -3
- data/test/fixtures/layouts/standard.erb +0 -1
- data/test/fixtures/layouts/talk_from_action.erb +0 -2
- data/test/fixtures/layouts/xhr.html.erb +0 -2
- data/test/fixtures/layouts/yield.erb +0 -2
- data/test/fixtures/localized/hello_world.de.html +0 -1
- data/test/fixtures/localized/hello_world.en.html +0 -1
- data/test/fixtures/mascot.rb +0 -3
- data/test/fixtures/mascots.yml +0 -4
- data/test/fixtures/mascots/_mascot.html.erb +0 -1
- data/test/fixtures/multipart/binary_file +0 -0
- data/test/fixtures/multipart/boundary_problem_file +0 -10
- data/test/fixtures/multipart/bracketed_param +0 -5
- data/test/fixtures/multipart/empty +0 -10
- data/test/fixtures/multipart/hello.txt +0 -1
- data/test/fixtures/multipart/large_text_file +0 -10
- data/test/fixtures/multipart/mixed_files +0 -0
- data/test/fixtures/multipart/mona_lisa.jpg +0 -0
- data/test/fixtures/multipart/none +0 -9
- data/test/fixtures/multipart/single_parameter +0 -5
- data/test/fixtures/multipart/text_file +0 -10
- data/test/fixtures/override/test/hello_world.erb +0 -1
- data/test/fixtures/override2/layouts/test/sub.erb +0 -1
- data/test/fixtures/post_test/layouts/post.html.erb +0 -1
- data/test/fixtures/post_test/layouts/super_post.iphone.erb +0 -1
- data/test/fixtures/post_test/post/index.html.erb +0 -1
- data/test/fixtures/post_test/post/index.iphone.erb +0 -1
- data/test/fixtures/post_test/super_post/index.html.erb +0 -1
- data/test/fixtures/post_test/super_post/index.iphone.erb +0 -1
- data/test/fixtures/project.rb +0 -3
- data/test/fixtures/projects.yml +0 -7
- data/test/fixtures/projects/_project.erb +0 -1
- data/test/fixtures/public/404.html +0 -1
- data/test/fixtures/public/500.da.html +0 -1
- data/test/fixtures/public/500.html +0 -1
- data/test/fixtures/public/absolute/test.css +0 -23
- data/test/fixtures/public/absolute/test.js +0 -63
- data/test/fixtures/public/images/rails.png +0 -0
- data/test/fixtures/public/javascripts/application.js +0 -1
- data/test/fixtures/public/javascripts/bank.js +0 -1
- data/test/fixtures/public/javascripts/controls.js +0 -1
- data/test/fixtures/public/javascripts/dragdrop.js +0 -1
- data/test/fixtures/public/javascripts/effects.js +0 -1
- data/test/fixtures/public/javascripts/prototype.js +0 -1
- data/test/fixtures/public/javascripts/robber.js +0 -1
- data/test/fixtures/public/javascripts/subdir/subdir.js +0 -1
- data/test/fixtures/public/javascripts/version.1.0.js +0 -1
- data/test/fixtures/public/stylesheets/bank.css +0 -1
- data/test/fixtures/public/stylesheets/robber.css +0 -1
- data/test/fixtures/public/stylesheets/subdir/subdir.css +0 -1
- data/test/fixtures/public/stylesheets/version.1.0.css +0 -1
- data/test/fixtures/quiz/questions/_question.html.erb +0 -1
- data/test/fixtures/replies.yml +0 -15
- data/test/fixtures/replies/_reply.erb +0 -1
- data/test/fixtures/reply.rb +0 -7
- data/test/fixtures/respond_to/all_types_with_layout.html.erb +0 -1
- data/test/fixtures/respond_to/all_types_with_layout.js.rjs +0 -1
- data/test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb +0 -1
- data/test/fixtures/respond_to/iphone_with_html_response_type.html.erb +0 -1
- data/test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb +0 -1
- data/test/fixtures/respond_to/layouts/missing.html.erb +0 -1
- data/test/fixtures/respond_to/layouts/standard.html.erb +0 -1
- data/test/fixtures/respond_to/layouts/standard.iphone.erb +0 -1
- data/test/fixtures/respond_to/using_defaults.html.erb +0 -1
- data/test/fixtures/respond_to/using_defaults.js.rjs +0 -1
- data/test/fixtures/respond_to/using_defaults.xml.builder +0 -1
- data/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +0 -1
- data/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +0 -1
- data/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +0 -1
- data/test/fixtures/scope/test/modgreet.erb +0 -1
- data/test/fixtures/session_autoload_test/session_autoload_test/foo.rb +0 -10
- data/test/fixtures/shared.html.erb +0 -1
- data/test/fixtures/symlink_parent/symlinked_layout.erb +0 -5
- data/test/fixtures/test/_counter.html.erb +0 -1
- data/test/fixtures/test/_customer.erb +0 -1
- data/test/fixtures/test/_customer_counter.erb +0 -1
- data/test/fixtures/test/_customer_counter_with_as.erb +0 -1
- data/test/fixtures/test/_customer_greeting.erb +0 -1
- data/test/fixtures/test/_customer_with_var.erb +0 -1
- data/test/fixtures/test/_form.erb +0 -1
- data/test/fixtures/test/_from_helper.erb +0 -1
- data/test/fixtures/test/_hash_greeting.erb +0 -1
- data/test/fixtures/test/_hash_object.erb +0 -2
- data/test/fixtures/test/_hello.builder +0 -1
- data/test/fixtures/test/_labelling_form.erb +0 -1
- data/test/fixtures/test/_layout_for_block_with_args.html.erb +0 -3
- data/test/fixtures/test/_layout_for_partial.html.erb +0 -3
- data/test/fixtures/test/_local_inspector.html.erb +0 -1
- data/test/fixtures/test/_one.html.erb +0 -1
- data/test/fixtures/test/_partial.erb +0 -1
- data/test/fixtures/test/_partial.html.erb +0 -1
- data/test/fixtures/test/_partial.js.erb +0 -1
- data/test/fixtures/test/_partial_for_use_in_layout.html.erb +0 -1
- data/test/fixtures/test/_partial_only.erb +0 -1
- data/test/fixtures/test/_partial_with_only_html_version.html.erb +0 -1
- data/test/fixtures/test/_person.erb +0 -2
- data/test/fixtures/test/_raise.html.erb +0 -1
- data/test/fixtures/test/_two.html.erb +0 -1
- data/test/fixtures/test/_utf8_partial.html.erb +0 -1
- data/test/fixtures/test/_utf8_partial_magic.html.erb +0 -2
- data/test/fixtures/test/action_talk_to_layout.erb +0 -2
- data/test/fixtures/test/array_translation.erb +0 -1
- data/test/fixtures/test/calling_partial_with_layout.html.erb +0 -1
- data/test/fixtures/test/capturing.erb +0 -4
- data/test/fixtures/test/content_for.erb +0 -2
- data/test/fixtures/test/content_for_concatenated.erb +0 -3
- data/test/fixtures/test/content_for_with_parameter.erb +0 -2
- data/test/fixtures/test/delete_with_js.rjs +0 -2
- data/test/fixtures/test/dont_pick_me +0 -1
- data/test/fixtures/test/dot.directory/render_file_with_ivar.erb +0 -1
- data/test/fixtures/test/enum_rjs_test.rjs +0 -6
- data/test/fixtures/test/formatted_html_erb.html.erb +0 -1
- data/test/fixtures/test/formatted_xml_erb.builder +0 -1
- data/test/fixtures/test/formatted_xml_erb.html.erb +0 -1
- data/test/fixtures/test/formatted_xml_erb.xml.erb +0 -1
- data/test/fixtures/test/greeting.erb +0 -1
- data/test/fixtures/test/greeting.js.rjs +0 -1
- data/test/fixtures/test/hello.builder +0 -4
- data/test/fixtures/test/hello_world.da.html.erb +0 -1
- data/test/fixtures/test/hello_world.erb +0 -1
- data/test/fixtures/test/hello_world.erb~ +0 -1
- data/test/fixtures/test/hello_world.pt-BR.html.erb +0 -1
- data/test/fixtures/test/hello_world_container.builder +0 -3
- data/test/fixtures/test/hello_world_from_rxml.builder +0 -4
- data/test/fixtures/test/hello_world_with_layout_false.erb +0 -1
- data/test/fixtures/test/hello_xml_world.builder +0 -11
- data/test/fixtures/test/hyphen-ated.erb +0 -1
- data/test/fixtures/test/implicit_content_type.atom.builder +0 -2
- data/test/fixtures/test/list.erb +0 -1
- data/test/fixtures/test/malformed/malformed.en.html.erb~ +0 -1
- data/test/fixtures/test/malformed/malformed.erb~ +0 -1
- data/test/fixtures/test/malformed/malformed.html.erb~ +0 -1
- data/test/fixtures/test/nested_layout.erb +0 -3
- data/test/fixtures/test/non_erb_block_content_for.builder +0 -4
- data/test/fixtures/test/potential_conflicts.erb +0 -4
- data/test/fixtures/test/render_explicit_html_template.js.rjs +0 -1
- data/test/fixtures/test/render_file_from_template.html.erb +0 -1
- data/test/fixtures/test/render_file_with_ivar.erb +0 -1
- data/test/fixtures/test/render_file_with_locals.erb +0 -1
- data/test/fixtures/test/render_implicit_html_template.js.rjs +0 -1
- data/test/fixtures/test/render_implicit_html_template_from_xhr_request.da.html.erb +0 -1
- data/test/fixtures/test/render_implicit_html_template_from_xhr_request.html.erb +0 -1
- data/test/fixtures/test/render_implicit_js_template_without_layout.js.erb +0 -1
- data/test/fixtures/test/render_to_string_test.erb +0 -1
- data/test/fixtures/test/scoped_array_translation.erb +0 -1
- data/test/fixtures/test/sub_template_raise.html.erb +0 -1
- data/test/fixtures/test/template.erb +0 -1
- data/test/fixtures/test/translation.erb +0 -1
- data/test/fixtures/test/update_element_with_capture.erb +0 -9
- data/test/fixtures/test/using_layout_around_block.html.erb +0 -1
- data/test/fixtures/test/using_layout_around_block_with_args.html.erb +0 -1
- data/test/fixtures/test/utf8.html.erb +0 -4
- data/test/fixtures/test/utf8_magic.html.erb +0 -5
- data/test/fixtures/test/utf8_magic_with_bare_partial.html.erb +0 -5
- data/test/fixtures/topic.rb +0 -3
- data/test/fixtures/topics.yml +0 -22
- data/test/fixtures/topics/_topic.html.erb +0 -1
- data/test/template/active_record_helper_i18n_test.rb +0 -51
- data/test/template/active_record_helper_test.rb +0 -302
- data/test/template/asset_tag_helper_test.rb +0 -770
- data/test/template/atom_feed_helper_test.rb +0 -315
- data/test/template/benchmark_helper_test.rb +0 -86
- data/test/template/compiled_templates_test.rb +0 -204
- data/test/template/date_helper_i18n_test.rb +0 -121
- data/test/template/date_helper_test.rb +0 -2603
- data/test/template/erb_util_test.rb +0 -36
- data/test/template/form_helper_test.rb +0 -1447
- data/test/template/form_options_helper_i18n_test.rb +0 -27
- data/test/template/form_options_helper_test.rb +0 -811
- data/test/template/form_tag_helper_test.rb +0 -356
- data/test/template/javascript_helper_test.rb +0 -106
- data/test/template/number_helper_i18n_test.rb +0 -69
- data/test/template/number_helper_test.rb +0 -132
- data/test/template/prototype_helper_test.rb +0 -639
- data/test/template/raw_output_helper_test.rb +0 -21
- data/test/template/record_tag_helper_test.rb +0 -58
- data/test/template/render_test.rb +0 -329
- data/test/template/sanitize_helper_test.rb +0 -57
- data/test/template/scriptaculous_helper_test.rb +0 -90
- data/test/template/tag_helper_test.rb +0 -98
- data/test/template/template_test.rb +0 -32
- data/test/template/test_test.rb +0 -54
- data/test/template/text_helper_test.rb +0 -601
- data/test/template/translation_helper_test.rb +0 -95
- data/test/template/url_helper_test.rb +0 -641
- data/test/testing_sandbox.rb +0 -15
- data/test/view/test_case_test.rb +0 -176
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'abstract_unit'
|
2
|
-
require 'testing_sandbox'
|
3
|
-
|
4
|
-
class RawOutputHelperTest < ActionView::TestCase
|
5
|
-
tests ActionView::Helpers::RawOutputHelper
|
6
|
-
include TestingSandbox
|
7
|
-
|
8
|
-
def setup
|
9
|
-
@string = "hello"
|
10
|
-
end
|
11
|
-
|
12
|
-
test "raw returns the safe string" do
|
13
|
-
result = raw(@string)
|
14
|
-
assert_equal @string, result
|
15
|
-
assert result.html_safe?
|
16
|
-
end
|
17
|
-
|
18
|
-
test "raw handles nil values correctly" do
|
19
|
-
assert_equal "", raw(nil)
|
20
|
-
end
|
21
|
-
end
|
@@ -1,58 +0,0 @@
|
|
1
|
-
require 'abstract_unit'
|
2
|
-
|
3
|
-
class Post
|
4
|
-
def id
|
5
|
-
45
|
6
|
-
end
|
7
|
-
def body
|
8
|
-
"What a wonderful world!"
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
class RecordTagHelperTest < ActionView::TestCase
|
13
|
-
tests ActionView::Helpers::RecordTagHelper
|
14
|
-
|
15
|
-
def setup
|
16
|
-
@post = Post.new
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_content_tag_for
|
20
|
-
expected = %(<li class="post bar" id="post_45"></li>)
|
21
|
-
actual = content_tag_for(:li, @post, :class => 'bar') { }
|
22
|
-
assert_dom_equal expected, actual
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_content_tag_for_prefix
|
26
|
-
expected = %(<ul class="post" id="archived_post_45"></ul>)
|
27
|
-
actual = content_tag_for(:ul, @post, :archived) { }
|
28
|
-
assert_dom_equal expected, actual
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_content_tag_for_with_extra_html_tags
|
32
|
-
expected = %(<tr class="post bar" id="post_45" style='background-color: #f0f0f0'></tr>)
|
33
|
-
actual = content_tag_for(:tr, @post, {:class => "bar", :style => "background-color: #f0f0f0"}) { }
|
34
|
-
assert_dom_equal expected, actual
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_block_not_in_erb_multiple_calls
|
38
|
-
expected = %(<div class="post bar" id="post_45">#{@post.body}</div>)
|
39
|
-
actual = div_for(@post, :class => "bar") { @post.body }
|
40
|
-
assert_dom_equal expected, actual
|
41
|
-
actual = div_for(@post, :class => "bar") { @post.body }
|
42
|
-
assert_dom_equal expected, actual
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_block_works_with_content_tag_for_in_erb
|
46
|
-
__in_erb_template = ''
|
47
|
-
expected = %(<tr class="post" id="post_45">#{@post.body}</tr>)
|
48
|
-
actual = content_tag_for(:tr, @post) { concat @post.body }
|
49
|
-
assert_dom_equal expected, actual
|
50
|
-
end
|
51
|
-
|
52
|
-
def test_div_for_in_erb
|
53
|
-
__in_erb_template = ''
|
54
|
-
expected = %(<div class="post bar" id="post_45">#{@post.body}</div>)
|
55
|
-
actual = div_for(@post, :class => "bar") { concat @post.body }
|
56
|
-
assert_dom_equal expected, actual
|
57
|
-
end
|
58
|
-
end
|
@@ -1,329 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require 'abstract_unit'
|
3
|
-
require 'controller/fake_models'
|
4
|
-
|
5
|
-
module RenderTestCases
|
6
|
-
def setup_view(paths)
|
7
|
-
@assigns = { :secret => 'in the sauce' }
|
8
|
-
@view = ActionView::Base.new(paths, @assigns)
|
9
|
-
|
10
|
-
# Reload and register danish language for testing
|
11
|
-
I18n.reload!
|
12
|
-
I18n.backend.store_translations 'da', {}
|
13
|
-
I18n.backend.store_translations 'pt-BR', {}
|
14
|
-
|
15
|
-
# Ensure original are still the same since we are reindexing view paths
|
16
|
-
assert_equal ORIGINAL_LOCALES, I18n.available_locales.map(&:to_s).sort
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_render_file
|
20
|
-
assert_equal "Hello world!", @view.render(:file => "test/hello_world.erb")
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_render_file_not_using_full_path
|
24
|
-
assert_equal "Hello world!", @view.render(:file => "test/hello_world.erb")
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_render_file_without_specific_extension
|
28
|
-
assert_equal "Hello world!", @view.render(:file => "test/hello_world")
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_render_file_with_localization
|
32
|
-
old_locale = I18n.locale
|
33
|
-
I18n.locale = :da
|
34
|
-
assert_equal "Hey verden", @view.render(:file => "test/hello_world")
|
35
|
-
ensure
|
36
|
-
I18n.locale = old_locale
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_render_file_with_dashed_locale
|
40
|
-
old_locale = I18n.locale
|
41
|
-
I18n.locale = :"pt-BR"
|
42
|
-
assert_equal "Ola mundo", @view.render(:file => "test/hello_world")
|
43
|
-
ensure
|
44
|
-
I18n.locale = old_locale
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_render_implicit_html_template_from_xhr_request
|
48
|
-
old_format = @view.template_format
|
49
|
-
@view.template_format = :js
|
50
|
-
assert_equal "Hello HTML!", @view.render(:file => "test/render_implicit_html_template_from_xhr_request")
|
51
|
-
ensure
|
52
|
-
@view.template_format = old_format
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_render_implicit_html_template_from_xhr_request_with_localization
|
56
|
-
old_locale = I18n.locale
|
57
|
-
old_format = @view.template_format
|
58
|
-
I18n.locale = :da
|
59
|
-
@view.template_format = :js
|
60
|
-
assert_equal "Hey HTML!\n", @view.render(:file => "test/render_implicit_html_template_from_xhr_request")
|
61
|
-
ensure
|
62
|
-
I18n.locale = old_locale
|
63
|
-
@view.template_format = old_format
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_render_file_at_top_level
|
67
|
-
assert_equal 'Elastica', @view.render(:file => '/shared')
|
68
|
-
end
|
69
|
-
|
70
|
-
def test_render_file_with_full_path
|
71
|
-
template_path = File.join(File.dirname(__FILE__), '../fixtures/test/hello_world.erb')
|
72
|
-
assert_equal "Hello world!", @view.render(:file => template_path)
|
73
|
-
end
|
74
|
-
|
75
|
-
def test_render_file_with_instance_variables
|
76
|
-
assert_equal "The secret is in the sauce\n", @view.render(:file => "test/render_file_with_ivar.erb")
|
77
|
-
end
|
78
|
-
|
79
|
-
def test_render_file_with_locals
|
80
|
-
locals = { :secret => 'in the sauce' }
|
81
|
-
assert_equal "The secret is in the sauce\n", @view.render(:file => "test/render_file_with_locals.erb", :locals => locals)
|
82
|
-
end
|
83
|
-
|
84
|
-
def test_render_file_not_using_full_path_with_dot_in_path
|
85
|
-
assert_equal "The secret is in the sauce\n", @view.render(:file => "test/dot.directory/render_file_with_ivar")
|
86
|
-
end
|
87
|
-
|
88
|
-
def test_render_has_access_current_template
|
89
|
-
assert_equal "test/template.erb", @view.render(:file => "test/template.erb")
|
90
|
-
end
|
91
|
-
|
92
|
-
def test_render_update
|
93
|
-
# TODO: You should not have to stub out template because template is self!
|
94
|
-
@view.instance_variable_set(:@template, @view)
|
95
|
-
assert_equal 'alert("Hello, World!");', @view.render(:update) { |page| page.alert('Hello, World!') }
|
96
|
-
end
|
97
|
-
|
98
|
-
def test_render_partial_from_default
|
99
|
-
assert_equal "only partial", @view.render("test/partial_only")
|
100
|
-
end
|
101
|
-
|
102
|
-
def test_render_partial
|
103
|
-
assert_equal "only partial", @view.render(:partial => "test/partial_only")
|
104
|
-
end
|
105
|
-
|
106
|
-
def test_render_partial_with_format
|
107
|
-
assert_equal 'partial html', @view.render(:partial => 'test/partial')
|
108
|
-
end
|
109
|
-
|
110
|
-
def test_render_partial_at_top_level
|
111
|
-
# file fixtures/_top_level_partial_only.erb (not fixtures/test)
|
112
|
-
assert_equal 'top level partial', @view.render(:partial => '/top_level_partial_only')
|
113
|
-
end
|
114
|
-
|
115
|
-
def test_render_partial_with_format_at_top_level
|
116
|
-
# file fixtures/_top_level_partial.html.erb (not fixtures/test, with format extension)
|
117
|
-
assert_equal 'top level partial html', @view.render(:partial => '/top_level_partial')
|
118
|
-
end
|
119
|
-
|
120
|
-
def test_render_partial_with_locals
|
121
|
-
assert_equal "5", @view.render(:partial => "test/counter", :locals => { :counter_counter => 5 })
|
122
|
-
end
|
123
|
-
|
124
|
-
def test_render_partial_with_locals_from_default
|
125
|
-
assert_equal "only partial", @view.render("test/partial_only", :counter_counter => 5)
|
126
|
-
end
|
127
|
-
|
128
|
-
def test_render_partial_with_errors
|
129
|
-
@view.render(:partial => "test/raise")
|
130
|
-
flunk "Render did not raise TemplateError"
|
131
|
-
rescue ActionView::TemplateError => e
|
132
|
-
assert_match "undefined local variable or method `doesnt_exist'", e.message
|
133
|
-
assert_equal "", e.sub_template_message
|
134
|
-
assert_equal "1", e.line_number
|
135
|
-
assert_equal File.expand_path("#{FIXTURE_LOAD_PATH}/test/_raise.html.erb"), e.file_name
|
136
|
-
end
|
137
|
-
|
138
|
-
def test_render_sub_template_with_errors
|
139
|
-
@view.render(:file => "test/sub_template_raise")
|
140
|
-
flunk "Render did not raise TemplateError"
|
141
|
-
rescue ActionView::TemplateError => e
|
142
|
-
assert_match "undefined local variable or method `doesnt_exist'", e.message
|
143
|
-
assert_equal "Trace of template inclusion: #{File.expand_path("#{FIXTURE_LOAD_PATH}/test/sub_template_raise.html.erb")}", e.sub_template_message
|
144
|
-
assert_equal "1", e.line_number
|
145
|
-
assert_equal File.expand_path("#{FIXTURE_LOAD_PATH}/test/_raise.html.erb"), e.file_name
|
146
|
-
end
|
147
|
-
|
148
|
-
def test_render_object
|
149
|
-
assert_equal "Hello: david", @view.render(:partial => "test/customer", :object => Customer.new("david"))
|
150
|
-
end
|
151
|
-
|
152
|
-
def test_render_partial_collection
|
153
|
-
assert_equal "Hello: davidHello: mary", @view.render(:partial => "test/customer", :collection => [ Customer.new("david"), Customer.new("mary") ])
|
154
|
-
end
|
155
|
-
|
156
|
-
def test_render_partial_collection_as
|
157
|
-
assert_equal "david david davidmary mary mary",
|
158
|
-
@view.render(:partial => "test/customer_with_var", :collection => [ Customer.new("david"), Customer.new("mary") ], :as => :customer)
|
159
|
-
end
|
160
|
-
|
161
|
-
def test_render_partial_collection_without_as
|
162
|
-
assert_equal "local_inspector,local_inspector_counter,object",
|
163
|
-
@view.render(:partial => "test/local_inspector", :collection => [ Customer.new("mary") ])
|
164
|
-
end
|
165
|
-
|
166
|
-
def test_render_partial_with_empty_collection_should_return_nil
|
167
|
-
assert_nil @view.render(:partial => "test/customer", :collection => [])
|
168
|
-
end
|
169
|
-
|
170
|
-
def test_render_partial_with_nil_collection_should_return_nil
|
171
|
-
assert_nil @view.render(:partial => "test/customer", :collection => nil)
|
172
|
-
end
|
173
|
-
|
174
|
-
def test_render_partial_with_nil_values_in_collection
|
175
|
-
assert_equal "Hello: davidHello: Anonymous", @view.render(:partial => "test/customer", :collection => [ Customer.new("david"), nil ])
|
176
|
-
end
|
177
|
-
|
178
|
-
def test_render_partial_with_empty_array_should_return_nil
|
179
|
-
assert_nil @view.render(:partial => [])
|
180
|
-
end
|
181
|
-
|
182
|
-
# TODO: The reason for this test is unclear, improve documentation
|
183
|
-
def test_render_partial_and_fallback_to_layout
|
184
|
-
assert_equal "Before (Josh)\n\nAfter", @view.render(:partial => "test/layout_for_partial", :locals => { :name => "Josh" })
|
185
|
-
end
|
186
|
-
|
187
|
-
# TODO: The reason for this test is unclear, improve documentation
|
188
|
-
def test_render_missing_xml_partial_and_raise_missing_template
|
189
|
-
@view.template_format = :xml
|
190
|
-
assert_raise(ActionView::MissingTemplate) { @view.render(:partial => "test/layout_for_partial") }
|
191
|
-
end
|
192
|
-
|
193
|
-
def test_render_inline
|
194
|
-
assert_equal "Hello, World!", @view.render(:inline => "Hello, World!")
|
195
|
-
end
|
196
|
-
|
197
|
-
def test_render_inline_with_locals
|
198
|
-
assert_equal "Hello, Josh!", @view.render(:inline => "Hello, <%= name %>!", :locals => { :name => "Josh" })
|
199
|
-
end
|
200
|
-
|
201
|
-
def test_render_fallbacks_to_erb_for_unknown_types
|
202
|
-
assert_equal "Hello, World!", @view.render(:inline => "Hello, World!", :type => :bar)
|
203
|
-
end
|
204
|
-
|
205
|
-
CustomHandler = lambda do |template|
|
206
|
-
"@output_buffer = ''\n" +
|
207
|
-
"@output_buffer << 'source: #{template.source.inspect}'\n"
|
208
|
-
end
|
209
|
-
|
210
|
-
def test_render_inline_with_compilable_custom_type
|
211
|
-
ActionView::Template.register_template_handler :foo, CustomHandler
|
212
|
-
assert_equal 'source: "Hello, World!"', @view.render(:inline => "Hello, World!", :type => :foo)
|
213
|
-
end
|
214
|
-
|
215
|
-
def test_render_inline_with_locals_and_compilable_custom_type
|
216
|
-
ActionView::Template.register_template_handler :foo, CustomHandler
|
217
|
-
assert_equal 'source: "Hello, <%= name %>!"', @view.render(:inline => "Hello, <%= name %>!", :locals => { :name => "Josh" }, :type => :foo)
|
218
|
-
end
|
219
|
-
|
220
|
-
class LegacyHandler < ActionView::TemplateHandler
|
221
|
-
def render(template, local_assigns)
|
222
|
-
"source: #{template.source}; locals: #{local_assigns.inspect}"
|
223
|
-
end
|
224
|
-
end
|
225
|
-
|
226
|
-
def test_render_legacy_handler_with_custom_type
|
227
|
-
ActionView::Template.register_template_handler :foo, LegacyHandler
|
228
|
-
assert_equal 'source: Hello, <%= name %>!; locals: {:name=>"Josh"}', @view.render(:inline => "Hello, <%= name %>!", :locals => { :name => "Josh" }, :type => :foo)
|
229
|
-
end
|
230
|
-
|
231
|
-
def test_render_ignores_templates_with_malformed_template_handlers
|
232
|
-
%w(malformed malformed.erb malformed.html.erb malformed.en.html.erb).each do |name|
|
233
|
-
assert_raise(ActionView::MissingTemplate) { @view.render(:file => "test/malformed/#{name}") }
|
234
|
-
end
|
235
|
-
end
|
236
|
-
|
237
|
-
def test_template_with_malformed_template_handler_is_reachable_through_its_exact_filename
|
238
|
-
assert_equal "Don't render me!", @view.render(:file => 'test/malformed/malformed.html.erb~')
|
239
|
-
end
|
240
|
-
|
241
|
-
def test_render_with_layout
|
242
|
-
assert_equal %(<title></title>\nHello world!\n),
|
243
|
-
@view.render(:file => "test/hello_world.erb", :layout => "layouts/yield")
|
244
|
-
end
|
245
|
-
|
246
|
-
def test_render_with_nested_layout
|
247
|
-
assert_equal %(<title>title</title>\n<div id="column">column</div>\n<div id="content">content</div>\n),
|
248
|
-
@view.render(:file => "test/nested_layout.erb", :layout => "layouts/yield")
|
249
|
-
end
|
250
|
-
end
|
251
|
-
|
252
|
-
module TemplatesSetupTeardown
|
253
|
-
def setup_view_paths_for(new_cache_template_loading)
|
254
|
-
@previous_cache_template_loading, ActionView::Base.cache_template_loading = ActionView::Base.cache_template_loading, new_cache_template_loading
|
255
|
-
view_paths = new_cache_template_loading ? CACHED_VIEW_PATHS : ActionView::Base.process_view_paths(CACHED_VIEW_PATHS.map(&:to_s))
|
256
|
-
assert_equal(new_cache_template_loading ? ActionView::Template::EagerPath : ActionView::ReloadableTemplate::ReloadablePath, view_paths.first.class)
|
257
|
-
setup_view(view_paths)
|
258
|
-
end
|
259
|
-
|
260
|
-
def teardown
|
261
|
-
ActionView::Base.cache_template_loading = @previous_cache_template_loading
|
262
|
-
end
|
263
|
-
end
|
264
|
-
|
265
|
-
class CachedRenderTest < Test::Unit::TestCase
|
266
|
-
include TemplatesSetupTeardown
|
267
|
-
include RenderTestCases
|
268
|
-
|
269
|
-
def setup
|
270
|
-
setup_view_paths_for(cache_templates = true)
|
271
|
-
end
|
272
|
-
end
|
273
|
-
|
274
|
-
class ReloadableRenderTest < Test::Unit::TestCase
|
275
|
-
include TemplatesSetupTeardown
|
276
|
-
include RenderTestCases
|
277
|
-
|
278
|
-
def setup
|
279
|
-
setup_view_paths_for(cache_templates = false)
|
280
|
-
end
|
281
|
-
|
282
|
-
if '1.9'.respond_to?(:force_encoding)
|
283
|
-
def test_render_utf8_template_with_magic_comment
|
284
|
-
with_external_encoding Encoding::ASCII_8BIT do
|
285
|
-
result = @view.render(:file => "test/utf8_magic.html.erb", :layouts => "layouts/yield")
|
286
|
-
assert_equal Encoding::UTF_8, result.encoding
|
287
|
-
assert_equal "Русский текст\n\nUTF-8\nUTF-8\nUTF-8\n", result
|
288
|
-
end
|
289
|
-
end
|
290
|
-
|
291
|
-
def test_render_utf8_template_with_default_external_encoding
|
292
|
-
with_external_encoding Encoding::UTF_8 do
|
293
|
-
result = @view.render(:file => "test/utf8.html.erb", :layouts => "layouts/yield")
|
294
|
-
assert_equal Encoding::UTF_8, result.encoding
|
295
|
-
assert_equal "Русский текст\n\nUTF-8\nUTF-8\nUTF-8\n", result
|
296
|
-
end
|
297
|
-
end
|
298
|
-
|
299
|
-
def test_render_utf8_template_with_incompatible_external_encoding
|
300
|
-
with_external_encoding Encoding::SJIS do
|
301
|
-
begin
|
302
|
-
result = @view.render(:file => "test/utf8.html.erb", :layouts => "layouts/yield")
|
303
|
-
flunk 'Should have raised incompatible encoding error'
|
304
|
-
rescue ActionView::TemplateError => error
|
305
|
-
assert_match 'invalid byte sequence in Shift_JIS', error.original_exception.message
|
306
|
-
end
|
307
|
-
end
|
308
|
-
end
|
309
|
-
|
310
|
-
def test_render_utf8_template_with_partial_with_incompatible_encoding
|
311
|
-
with_external_encoding Encoding::SJIS do
|
312
|
-
begin
|
313
|
-
result = @view.render(:file => "test/utf8_magic_with_bare_partial.html.erb", :layouts => "layouts/yield")
|
314
|
-
flunk 'Should have raised incompatible encoding error'
|
315
|
-
rescue ActionView::TemplateError => error
|
316
|
-
assert_match 'invalid byte sequence in Shift_JIS', error.original_exception.message
|
317
|
-
end
|
318
|
-
end
|
319
|
-
end
|
320
|
-
|
321
|
-
def with_external_encoding(encoding)
|
322
|
-
old, Encoding.default_external = Encoding.default_external, encoding
|
323
|
-
yield
|
324
|
-
ensure
|
325
|
-
Encoding.default_external = old
|
326
|
-
end
|
327
|
-
end
|
328
|
-
end
|
329
|
-
|
@@ -1,57 +0,0 @@
|
|
1
|
-
require 'abstract_unit'
|
2
|
-
require 'testing_sandbox'
|
3
|
-
|
4
|
-
# The exhaustive tests are in test/controller/html/sanitizer_test.rb.
|
5
|
-
# This tests the that the helpers hook up correctly to the sanitizer classes.
|
6
|
-
class SanitizeHelperTest < ActionView::TestCase
|
7
|
-
tests ActionView::Helpers::SanitizeHelper
|
8
|
-
include TestingSandbox
|
9
|
-
|
10
|
-
def test_strip_links
|
11
|
-
assert_equal "Dont touch me", strip_links("Dont touch me")
|
12
|
-
assert_equal "<a<a", strip_links("<a<a")
|
13
|
-
assert_equal "on my mind\nall day long", strip_links("<a href='almost'>on my mind</a>\n<A href='almost'>all day long</A>")
|
14
|
-
assert_equal "0wn3d", strip_links("<a href='http://www.rubyonrails.com/'><a href='http://www.rubyonrails.com/' onlclick='steal()'>0wn3d</a></a>")
|
15
|
-
assert_equal "Magic", strip_links("<a href='http://www.rubyonrails.com/'>Mag<a href='http://www.ruby-lang.org/'>ic")
|
16
|
-
assert_equal "FrrFox", strip_links("<href onlclick='steal()'>FrrFox</a></href>")
|
17
|
-
assert_equal "My mind\nall <b>day</b> long", strip_links("<a href='almost'>My mind</a>\n<A href='almost'>all <b>day</b> long</A>")
|
18
|
-
assert_equal "all <b>day</b> long", strip_links("<<a>a href='hello'>all <b>day</b> long<</A>/a>")
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_sanitize_form
|
22
|
-
assert_sanitized "<form action=\"/foo/bar\" method=\"post\"><input></form>", ''
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_should_sanitize_illegal_style_properties
|
26
|
-
raw = %(display:block; position:absolute; left:0; top:0; width:100%; height:100%; z-index:1; background-color:black; background-image:url(http://www.ragingplatypus.com/i/cam-full.jpg); background-x:center; background-y:center; background-repeat:repeat;)
|
27
|
-
expected = %(display: block; width: 100%; height: 100%; background-color: black; background-image: ; background-x: center; background-y: center;)
|
28
|
-
assert_equal expected, sanitize_css(raw)
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_strip_tags
|
32
|
-
assert_equal("<<<bad html", strip_tags("<<<bad html"))
|
33
|
-
assert_equal("<<", strip_tags("<<<bad html>"))
|
34
|
-
assert_equal("Dont touch me", strip_tags("Dont touch me"))
|
35
|
-
assert_equal("This is a test.", strip_tags("<p>This <u>is<u> a <a href='test.html'><strong>test</strong></a>.</p>"))
|
36
|
-
assert_equal("Weirdos", strip_tags("Wei<<a>a onclick='alert(document.cookie);'</a>/>rdos"))
|
37
|
-
assert_equal("This is a test.", strip_tags("This is a test."))
|
38
|
-
assert_equal(
|
39
|
-
%{This is a test.\n\n\nIt no longer contains any HTML.\n}, strip_tags(
|
40
|
-
%{<title>This is <b>a <a href="" target="_blank">test</a></b>.</title>\n\n<!-- it has a comment -->\n\n<p>It no <b>longer <strong>contains <em>any <strike>HTML</strike></em>.</strong></b></p>\n}))
|
41
|
-
assert_equal "This has a here.", strip_tags("This has a <!-- comment --> here.")
|
42
|
-
[nil, '', ' '].each do |blank|
|
43
|
-
stripped = strip_tags(blank)
|
44
|
-
assert_equal blank, stripped
|
45
|
-
end
|
46
|
-
assert_equal "", strip_tags("<script>")
|
47
|
-
assert_equal "something <img onerror=alert(1337)", ERB::Util.html_escape(strip_tags("something <img onerror=alert(1337)"))
|
48
|
-
end
|
49
|
-
|
50
|
-
def test_sanitize_is_marked_safe
|
51
|
-
assert sanitize("<html><script></script></html>").html_safe?
|
52
|
-
end
|
53
|
-
|
54
|
-
def assert_sanitized(text, expected = nil)
|
55
|
-
assert_equal((expected || text), sanitize(text))
|
56
|
-
end
|
57
|
-
end
|