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,215 +0,0 @@
|
|
1
|
-
require 'abstract_unit'
|
2
|
-
|
3
|
-
# The view_paths array must be set on Base and not LayoutTest so that LayoutTest's inherited
|
4
|
-
# method has access to the view_paths array when looking for a layout to automatically assign.
|
5
|
-
old_load_paths = ActionController::Base.view_paths
|
6
|
-
|
7
|
-
ActionView::Template::register_template_handler :mab,
|
8
|
-
lambda { |template| template.source.inspect }
|
9
|
-
|
10
|
-
ActionController::Base.view_paths = [ File.dirname(__FILE__) + '/../fixtures/layout_tests/' ]
|
11
|
-
|
12
|
-
class LayoutTest < ActionController::Base
|
13
|
-
def self.controller_path; 'views' end
|
14
|
-
self.view_paths = ActionController::Base.view_paths.dup
|
15
|
-
end
|
16
|
-
|
17
|
-
# Restore view_paths to previous value
|
18
|
-
ActionController::Base.view_paths = old_load_paths
|
19
|
-
|
20
|
-
class ProductController < LayoutTest
|
21
|
-
end
|
22
|
-
|
23
|
-
class ItemController < LayoutTest
|
24
|
-
end
|
25
|
-
|
26
|
-
class ThirdPartyTemplateLibraryController < LayoutTest
|
27
|
-
end
|
28
|
-
|
29
|
-
module ControllerNameSpace
|
30
|
-
end
|
31
|
-
|
32
|
-
class ControllerNameSpace::NestedController < LayoutTest
|
33
|
-
end
|
34
|
-
|
35
|
-
class MultipleExtensions < LayoutTest
|
36
|
-
end
|
37
|
-
|
38
|
-
class LayoutAutoDiscoveryTest < ActionController::TestCase
|
39
|
-
def setup
|
40
|
-
@request.host = "www.nextangle.com"
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_application_layout_is_default_when_no_controller_match
|
44
|
-
@controller = ProductController.new
|
45
|
-
get :hello
|
46
|
-
assert_equal 'layout_test.rhtml hello.rhtml', @response.body
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_controller_name_layout_name_match
|
50
|
-
@controller = ItemController.new
|
51
|
-
get :hello
|
52
|
-
assert_equal 'item.rhtml hello.rhtml', @response.body
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_third_party_template_library_auto_discovers_layout
|
56
|
-
@controller = ThirdPartyTemplateLibraryController.new
|
57
|
-
get :hello
|
58
|
-
assert_equal 'layouts/third_party_template_library.mab', @controller.active_layout.to_s
|
59
|
-
assert_equal 'layouts/third_party_template_library', @response.layout
|
60
|
-
assert_response :success
|
61
|
-
assert_equal 'Mab', @response.body
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_namespaced_controllers_auto_detect_layouts
|
65
|
-
@controller = ControllerNameSpace::NestedController.new
|
66
|
-
get :hello
|
67
|
-
assert_equal 'layouts/controller_name_space/nested', @controller.active_layout.to_s
|
68
|
-
assert_equal 'controller_name_space/nested.rhtml hello.rhtml', @response.body
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_namespaced_controllers_auto_detect_layouts
|
72
|
-
@controller = MultipleExtensions.new
|
73
|
-
get :hello
|
74
|
-
assert_equal 'layouts/multiple_extensions.html.erb', @controller.active_layout.to_s
|
75
|
-
assert_equal 'multiple_extensions.html.erb hello.rhtml', @response.body.strip
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
class DefaultLayoutController < LayoutTest
|
80
|
-
end
|
81
|
-
|
82
|
-
class AbsolutePathLayoutController < LayoutTest
|
83
|
-
layout File.expand_path(File.expand_path(__FILE__) + '/../../fixtures/layout_tests/layouts/layout_test.rhtml')
|
84
|
-
end
|
85
|
-
|
86
|
-
class AbsolutePathWithoutLayoutsController < LayoutTest
|
87
|
-
# Absolute layout path without 'layouts' in it.
|
88
|
-
layout File.expand_path(File.expand_path(__FILE__) + '/../../fixtures/layout_tests/abs_path_layout.rhtml')
|
89
|
-
end
|
90
|
-
|
91
|
-
class HasOwnLayoutController < LayoutTest
|
92
|
-
layout 'item'
|
93
|
-
end
|
94
|
-
|
95
|
-
class PrependsViewPathController < LayoutTest
|
96
|
-
def hello
|
97
|
-
prepend_view_path File.dirname(__FILE__) + '/../fixtures/layout_tests/alt/'
|
98
|
-
render :layout => 'alt'
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
class SetsLayoutInRenderController < LayoutTest
|
103
|
-
def hello
|
104
|
-
render :layout => 'third_party_template_library'
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
class RendersNoLayoutController < LayoutTest
|
109
|
-
def hello
|
110
|
-
render :layout => false
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
class LayoutSetInResponseTest < ActionController::TestCase
|
115
|
-
def test_layout_set_when_using_default_layout
|
116
|
-
@controller = DefaultLayoutController.new
|
117
|
-
get :hello
|
118
|
-
assert_equal 'layouts/layout_test', @response.layout
|
119
|
-
end
|
120
|
-
|
121
|
-
def test_layout_set_when_set_in_controller
|
122
|
-
@controller = HasOwnLayoutController.new
|
123
|
-
get :hello
|
124
|
-
assert_equal 'layouts/item', @response.layout
|
125
|
-
end
|
126
|
-
|
127
|
-
def test_layout_set_when_using_render
|
128
|
-
@controller = SetsLayoutInRenderController.new
|
129
|
-
get :hello
|
130
|
-
assert_equal 'layouts/third_party_template_library', @response.layout
|
131
|
-
end
|
132
|
-
|
133
|
-
def test_layout_is_not_set_when_none_rendered
|
134
|
-
@controller = RendersNoLayoutController.new
|
135
|
-
get :hello
|
136
|
-
assert_nil @response.layout
|
137
|
-
end
|
138
|
-
|
139
|
-
def test_exempt_from_layout_honored_by_render_template
|
140
|
-
ActionController::Base.exempt_from_layout :rhtml
|
141
|
-
@controller = RenderWithTemplateOptionController.new
|
142
|
-
|
143
|
-
get :hello
|
144
|
-
assert_equal "alt/hello.rhtml", @response.body.strip
|
145
|
-
|
146
|
-
ensure
|
147
|
-
ActionController::Base.exempt_from_layout.delete(/\.rhtml$/)
|
148
|
-
end
|
149
|
-
|
150
|
-
def test_layout_is_picked_from_the_controller_instances_view_path
|
151
|
-
@controller = PrependsViewPathController.new
|
152
|
-
get :hello
|
153
|
-
assert_equal 'layouts/alt', @response.layout
|
154
|
-
end
|
155
|
-
|
156
|
-
def test_absolute_pathed_layout
|
157
|
-
@controller = AbsolutePathLayoutController.new
|
158
|
-
get :hello
|
159
|
-
assert_equal "layout_test.rhtml hello.rhtml", @response.body.strip
|
160
|
-
end
|
161
|
-
|
162
|
-
def test_absolute_pathed_layout_without_layouts_in_path
|
163
|
-
@controller = AbsolutePathWithoutLayoutsController.new
|
164
|
-
get :hello
|
165
|
-
assert_equal "abs_path_layout.rhtml hello.rhtml", @response.body.strip
|
166
|
-
end
|
167
|
-
end
|
168
|
-
|
169
|
-
class RenderWithTemplateOptionController < LayoutTest
|
170
|
-
def hello
|
171
|
-
render :template => 'alt/hello'
|
172
|
-
end
|
173
|
-
end
|
174
|
-
|
175
|
-
class SetsNonExistentLayoutFile < LayoutTest
|
176
|
-
layout "nofile.rhtml"
|
177
|
-
end
|
178
|
-
|
179
|
-
class LayoutExceptionRaised < ActionController::TestCase
|
180
|
-
def test_exception_raised_when_layout_file_not_found
|
181
|
-
@controller = SetsNonExistentLayoutFile.new
|
182
|
-
get :hello
|
183
|
-
assert_kind_of ActionView::MissingTemplate, @response.template.instance_eval { @exception }
|
184
|
-
end
|
185
|
-
end
|
186
|
-
|
187
|
-
class LayoutStatusIsRendered < LayoutTest
|
188
|
-
def hello
|
189
|
-
render :status => 401
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
|
-
class LayoutStatusIsRenderedTest < ActionController::TestCase
|
194
|
-
def test_layout_status_is_rendered
|
195
|
-
@controller = LayoutStatusIsRendered.new
|
196
|
-
get :hello
|
197
|
-
assert_response 401
|
198
|
-
end
|
199
|
-
end
|
200
|
-
|
201
|
-
unless RUBY_PLATFORM =~ /(:?mswin|mingw|bccwin)/
|
202
|
-
class LayoutSymlinkedTest < LayoutTest
|
203
|
-
layout "symlinked/symlinked_layout"
|
204
|
-
end
|
205
|
-
|
206
|
-
class LayoutSymlinkedIsRenderedTest < ActionController::TestCase
|
207
|
-
def test_symlinked_layout_is_rendered
|
208
|
-
@controller = LayoutSymlinkedTest.new
|
209
|
-
get :hello
|
210
|
-
assert_response 200
|
211
|
-
assert_equal "layouts/symlinked/symlinked_layout", @response.layout
|
212
|
-
end
|
213
|
-
end
|
214
|
-
end
|
215
|
-
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'abstract_unit'
|
2
|
-
|
3
|
-
class LocalizedController < ActionController::Base
|
4
|
-
def hello_world
|
5
|
-
end
|
6
|
-
end
|
7
|
-
|
8
|
-
class LocalizedTemplatesTest < ActionController::TestCase
|
9
|
-
tests LocalizedController
|
10
|
-
|
11
|
-
teardown { I18n.locale = :en }
|
12
|
-
|
13
|
-
def test_localized_template_is_used
|
14
|
-
I18n.locale = :de
|
15
|
-
get :hello_world
|
16
|
-
assert_equal "Gutten Tag", @response.body
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_default_locale_template_is_used_when_locale_is_missing
|
20
|
-
I18n.locale = :dk
|
21
|
-
get :hello_world
|
22
|
-
assert_equal "Hello World", @response.body
|
23
|
-
end
|
24
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
require 'abstract_unit'
|
2
|
-
|
3
|
-
class LoggingController < ActionController::Base
|
4
|
-
def show
|
5
|
-
render :nothing => true
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
class LoggingTest < ActionController::TestCase
|
10
|
-
tests LoggingController
|
11
|
-
|
12
|
-
class MockLogger
|
13
|
-
attr_reader :logged
|
14
|
-
|
15
|
-
def method_missing(method, *args)
|
16
|
-
@logged ||= []
|
17
|
-
@logged << args.first
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
setup :set_logger
|
22
|
-
|
23
|
-
def test_logging_without_parameters
|
24
|
-
get :show
|
25
|
-
assert_equal 2, logs.size
|
26
|
-
assert_nil logs.detect {|l| l =~ /Parameters/ }
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_logging_with_parameters
|
30
|
-
get :show, :id => 10
|
31
|
-
assert_equal 3, logs.size
|
32
|
-
|
33
|
-
params = logs.detect {|l| l =~ /Parameters/ }
|
34
|
-
assert_equal 'Parameters: {"id"=>"10"}', params
|
35
|
-
end
|
36
|
-
|
37
|
-
private
|
38
|
-
|
39
|
-
def set_logger
|
40
|
-
@controller.logger = MockLogger.new
|
41
|
-
end
|
42
|
-
|
43
|
-
def logs
|
44
|
-
@logs ||= @controller.logger.logged.compact.map {|l| l.strip}
|
45
|
-
end
|
46
|
-
end
|
@@ -1,90 +0,0 @@
|
|
1
|
-
require 'abstract_unit'
|
2
|
-
|
3
|
-
class MiddlewareStackTest < ActiveSupport::TestCase
|
4
|
-
class FooMiddleware; end
|
5
|
-
class BarMiddleware; end
|
6
|
-
class BazMiddleware; end
|
7
|
-
|
8
|
-
def setup
|
9
|
-
@stack = ActionController::MiddlewareStack.new
|
10
|
-
@stack.use FooMiddleware
|
11
|
-
@stack.use BarMiddleware
|
12
|
-
end
|
13
|
-
|
14
|
-
test "use should push middleware as class onto the stack" do
|
15
|
-
assert_difference "@stack.size" do
|
16
|
-
@stack.use BazMiddleware
|
17
|
-
end
|
18
|
-
assert_equal BazMiddleware, @stack.last.klass
|
19
|
-
end
|
20
|
-
|
21
|
-
test "use should push middleware as a string onto the stack" do
|
22
|
-
assert_difference "@stack.size" do
|
23
|
-
@stack.use "MiddlewareStackTest::BazMiddleware"
|
24
|
-
end
|
25
|
-
assert_equal BazMiddleware, @stack.last.klass
|
26
|
-
end
|
27
|
-
|
28
|
-
test "use should push middleware as a symbol onto the stack" do
|
29
|
-
assert_difference "@stack.size" do
|
30
|
-
@stack.use :"MiddlewareStackTest::BazMiddleware"
|
31
|
-
end
|
32
|
-
assert_equal BazMiddleware, @stack.last.klass
|
33
|
-
end
|
34
|
-
|
35
|
-
test "use should push middleware class with arguments onto the stack" do
|
36
|
-
assert_difference "@stack.size" do
|
37
|
-
@stack.use BazMiddleware, true, :foo => "bar"
|
38
|
-
end
|
39
|
-
assert_equal BazMiddleware, @stack.last.klass
|
40
|
-
assert_equal([true, {:foo => "bar"}], @stack.last.args)
|
41
|
-
end
|
42
|
-
|
43
|
-
test "insert inserts middleware at the integer index" do
|
44
|
-
@stack.insert(1, BazMiddleware)
|
45
|
-
assert_equal BazMiddleware, @stack[1].klass
|
46
|
-
end
|
47
|
-
|
48
|
-
test "insert_after inserts middleware after the integer index" do
|
49
|
-
@stack.insert_after(1, BazMiddleware)
|
50
|
-
assert_equal BazMiddleware, @stack[2].klass
|
51
|
-
end
|
52
|
-
|
53
|
-
test "insert_before inserts middleware before another middleware class" do
|
54
|
-
@stack.insert_before(BarMiddleware, BazMiddleware)
|
55
|
-
assert_equal BazMiddleware, @stack[1].klass
|
56
|
-
end
|
57
|
-
|
58
|
-
test "insert_after inserts middleware after another middleware class" do
|
59
|
-
@stack.insert_after(BarMiddleware, BazMiddleware)
|
60
|
-
assert_equal BazMiddleware, @stack[2].klass
|
61
|
-
end
|
62
|
-
|
63
|
-
test "swaps one middleware out for another" do
|
64
|
-
assert_equal FooMiddleware, @stack[0].klass
|
65
|
-
@stack.swap(FooMiddleware, BazMiddleware)
|
66
|
-
assert_equal BazMiddleware, @stack[0].klass
|
67
|
-
end
|
68
|
-
|
69
|
-
test "active returns all only enabled middleware" do
|
70
|
-
assert_no_difference "@stack.active.size" do
|
71
|
-
assert_difference "@stack.size" do
|
72
|
-
@stack.use BazMiddleware, :if => lambda { false }
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
test "lazy evaluates middleware class" do
|
78
|
-
assert_difference "@stack.size" do
|
79
|
-
@stack.use lambda { BazMiddleware }
|
80
|
-
end
|
81
|
-
assert_equal BazMiddleware, @stack.last.klass
|
82
|
-
end
|
83
|
-
|
84
|
-
test "lazy evaluates middleware arguments" do
|
85
|
-
assert_difference "@stack.size" do
|
86
|
-
@stack.use BazMiddleware, lambda { :foo }
|
87
|
-
end
|
88
|
-
assert_equal [:foo], @stack.last.send(:build_args)
|
89
|
-
end
|
90
|
-
end
|
@@ -1,536 +0,0 @@
|
|
1
|
-
require 'abstract_unit'
|
2
|
-
|
3
|
-
class RespondToController < ActionController::Base
|
4
|
-
layout :set_layout
|
5
|
-
|
6
|
-
def html_xml_or_rss
|
7
|
-
respond_to do |type|
|
8
|
-
type.html { render :text => "HTML" }
|
9
|
-
type.xml { render :text => "XML" }
|
10
|
-
type.rss { render :text => "RSS" }
|
11
|
-
type.all { render :text => "Nothing" }
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def js_or_html
|
16
|
-
respond_to do |type|
|
17
|
-
type.html { render :text => "HTML" }
|
18
|
-
type.js { render :text => "JS" }
|
19
|
-
type.all { render :text => "Nothing" }
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def json_or_yaml
|
24
|
-
respond_to do |type|
|
25
|
-
type.json { render :text => "JSON" }
|
26
|
-
type.yaml { render :text => "YAML" }
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def html_or_xml
|
31
|
-
respond_to do |type|
|
32
|
-
type.html { render :text => "HTML" }
|
33
|
-
type.xml { render :text => "XML" }
|
34
|
-
type.all { render :text => "Nothing" }
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def forced_xml
|
39
|
-
request.format = :xml
|
40
|
-
|
41
|
-
respond_to do |type|
|
42
|
-
type.html { render :text => "HTML" }
|
43
|
-
type.xml { render :text => "XML" }
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def just_xml
|
48
|
-
respond_to do |type|
|
49
|
-
type.xml { render :text => "XML" }
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def using_defaults
|
54
|
-
respond_to do |type|
|
55
|
-
type.html
|
56
|
-
type.js
|
57
|
-
type.xml
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
def using_defaults_with_type_list
|
62
|
-
respond_to(:html, :js, :xml)
|
63
|
-
end
|
64
|
-
|
65
|
-
def made_for_content_type
|
66
|
-
respond_to do |type|
|
67
|
-
type.rss { render :text => "RSS" }
|
68
|
-
type.atom { render :text => "ATOM" }
|
69
|
-
type.all { render :text => "Nothing" }
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def custom_type_handling
|
74
|
-
respond_to do |type|
|
75
|
-
type.html { render :text => "HTML" }
|
76
|
-
type.custom("application/crazy-xml") { render :text => "Crazy XML" }
|
77
|
-
type.all { render :text => "Nothing" }
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def custom_constant_handling
|
82
|
-
Mime::Type.register("text/x-mobile", :mobile)
|
83
|
-
|
84
|
-
respond_to do |type|
|
85
|
-
type.html { render :text => "HTML" }
|
86
|
-
type.mobile { render :text => "Mobile" }
|
87
|
-
end
|
88
|
-
ensure
|
89
|
-
Mime.module_eval { remove_const :MOBILE if const_defined?(:MOBILE) }
|
90
|
-
end
|
91
|
-
|
92
|
-
def custom_constant_handling_without_block
|
93
|
-
Mime::Type.register("text/x-mobile", :mobile)
|
94
|
-
|
95
|
-
respond_to do |type|
|
96
|
-
type.html { render :text => "HTML" }
|
97
|
-
type.mobile
|
98
|
-
end
|
99
|
-
|
100
|
-
ensure
|
101
|
-
Mime.module_eval { remove_const :MOBILE if const_defined?(:MOBILE) }
|
102
|
-
end
|
103
|
-
|
104
|
-
def handle_any
|
105
|
-
respond_to do |type|
|
106
|
-
type.html { render :text => "HTML" }
|
107
|
-
type.any(:js, :xml) { render :text => "Either JS or XML" }
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
def handle_any_any
|
112
|
-
respond_to do |type|
|
113
|
-
type.html { render :text => 'HTML' }
|
114
|
-
type.any { render :text => 'Whatever you ask for, I got it' }
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
def all_types_with_layout
|
119
|
-
respond_to do |type|
|
120
|
-
type.html
|
121
|
-
type.js
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
def iphone_with_html_response_type
|
126
|
-
Mime::Type.register_alias("text/html", :iphone)
|
127
|
-
request.format = :iphone if request.env["HTTP_ACCEPT"] == "text/iphone"
|
128
|
-
|
129
|
-
respond_to do |type|
|
130
|
-
type.html { @type = "Firefox" }
|
131
|
-
type.iphone { @type = "iPhone" }
|
132
|
-
end
|
133
|
-
|
134
|
-
ensure
|
135
|
-
Mime.module_eval { remove_const :IPHONE if const_defined?(:IPHONE) }
|
136
|
-
end
|
137
|
-
|
138
|
-
def iphone_with_html_response_type_without_layout
|
139
|
-
Mime::Type.register_alias("text/html", :iphone)
|
140
|
-
request.format = "iphone" if request.env["HTTP_ACCEPT"] == "text/iphone"
|
141
|
-
|
142
|
-
respond_to do |type|
|
143
|
-
type.html { @type = "Firefox"; render :action => "iphone_with_html_response_type" }
|
144
|
-
type.iphone { @type = "iPhone" ; render :action => "iphone_with_html_response_type" }
|
145
|
-
end
|
146
|
-
|
147
|
-
ensure
|
148
|
-
Mime.module_eval { remove_const :IPHONE if const_defined?(:IPHONE) }
|
149
|
-
end
|
150
|
-
|
151
|
-
def rescue_action(e)
|
152
|
-
raise
|
153
|
-
end
|
154
|
-
|
155
|
-
protected
|
156
|
-
def set_layout
|
157
|
-
if ["all_types_with_layout", "iphone_with_html_response_type"].include?(action_name)
|
158
|
-
"respond_to/layouts/standard"
|
159
|
-
elsif action_name == "iphone_with_html_response_type_without_layout"
|
160
|
-
"respond_to/layouts/missing"
|
161
|
-
end
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
class MimeControllerTest < ActionController::TestCase
|
166
|
-
tests RespondToController
|
167
|
-
|
168
|
-
def setup
|
169
|
-
ActionController::Base.use_accept_header = true
|
170
|
-
@request.host = "www.example.com"
|
171
|
-
end
|
172
|
-
|
173
|
-
def teardown
|
174
|
-
ActionController::Base.use_accept_header = false
|
175
|
-
end
|
176
|
-
|
177
|
-
def test_html
|
178
|
-
@request.accept = "text/html"
|
179
|
-
get :js_or_html
|
180
|
-
assert_equal 'HTML', @response.body
|
181
|
-
|
182
|
-
get :html_or_xml
|
183
|
-
assert_equal 'HTML', @response.body
|
184
|
-
|
185
|
-
get :just_xml
|
186
|
-
assert_response 406
|
187
|
-
end
|
188
|
-
|
189
|
-
def test_all
|
190
|
-
@request.accept = "*/*"
|
191
|
-
get :js_or_html
|
192
|
-
assert_equal 'HTML', @response.body # js is not part of all
|
193
|
-
|
194
|
-
get :html_or_xml
|
195
|
-
assert_equal 'HTML', @response.body
|
196
|
-
|
197
|
-
get :just_xml
|
198
|
-
assert_equal 'XML', @response.body
|
199
|
-
end
|
200
|
-
|
201
|
-
def test_xml
|
202
|
-
@request.accept = "application/xml"
|
203
|
-
get :html_xml_or_rss
|
204
|
-
assert_equal 'XML', @response.body
|
205
|
-
end
|
206
|
-
|
207
|
-
def test_js_or_html
|
208
|
-
@request.accept = "text/javascript, text/html"
|
209
|
-
get :js_or_html
|
210
|
-
assert_equal 'JS', @response.body
|
211
|
-
|
212
|
-
get :html_or_xml
|
213
|
-
assert_equal 'HTML', @response.body
|
214
|
-
|
215
|
-
get :just_xml
|
216
|
-
assert_response 406
|
217
|
-
end
|
218
|
-
|
219
|
-
def test_json_or_yaml
|
220
|
-
get :json_or_yaml
|
221
|
-
assert_equal 'JSON', @response.body
|
222
|
-
|
223
|
-
get :json_or_yaml, :format => 'json'
|
224
|
-
assert_equal 'JSON', @response.body
|
225
|
-
|
226
|
-
get :json_or_yaml, :format => 'yaml'
|
227
|
-
assert_equal 'YAML', @response.body
|
228
|
-
|
229
|
-
{ 'YAML' => %w(text/yaml),
|
230
|
-
'JSON' => %w(application/json text/x-json)
|
231
|
-
}.each do |body, content_types|
|
232
|
-
content_types.each do |content_type|
|
233
|
-
@request.accept = content_type
|
234
|
-
get :json_or_yaml
|
235
|
-
assert_equal body, @response.body
|
236
|
-
end
|
237
|
-
end
|
238
|
-
end
|
239
|
-
|
240
|
-
def test_js_or_anything
|
241
|
-
@request.accept = "text/javascript, */*"
|
242
|
-
get :js_or_html
|
243
|
-
assert_equal 'JS', @response.body
|
244
|
-
|
245
|
-
get :html_or_xml
|
246
|
-
assert_equal 'HTML', @response.body
|
247
|
-
|
248
|
-
get :just_xml
|
249
|
-
assert_equal 'XML', @response.body
|
250
|
-
end
|
251
|
-
|
252
|
-
def test_using_defaults
|
253
|
-
@request.accept = "*/*"
|
254
|
-
get :using_defaults
|
255
|
-
assert_equal "text/html", @response.content_type
|
256
|
-
assert_equal 'Hello world!', @response.body
|
257
|
-
|
258
|
-
@request.accept = "text/javascript"
|
259
|
-
get :using_defaults
|
260
|
-
assert_equal "text/javascript", @response.content_type
|
261
|
-
assert_equal '$("body").visualEffect("highlight");', @response.body
|
262
|
-
|
263
|
-
@request.accept = "application/xml"
|
264
|
-
get :using_defaults
|
265
|
-
assert_equal "application/xml", @response.content_type
|
266
|
-
assert_equal "<p>Hello world!</p>\n", @response.body
|
267
|
-
end
|
268
|
-
|
269
|
-
def test_using_defaults_with_type_list
|
270
|
-
@request.accept = "*/*"
|
271
|
-
get :using_defaults_with_type_list
|
272
|
-
assert_equal "text/html", @response.content_type
|
273
|
-
assert_equal 'Hello world!', @response.body
|
274
|
-
|
275
|
-
@request.accept = "text/javascript"
|
276
|
-
get :using_defaults_with_type_list
|
277
|
-
assert_equal "text/javascript", @response.content_type
|
278
|
-
assert_equal '$("body").visualEffect("highlight");', @response.body
|
279
|
-
|
280
|
-
@request.accept = "application/xml"
|
281
|
-
get :using_defaults_with_type_list
|
282
|
-
assert_equal "application/xml", @response.content_type
|
283
|
-
assert_equal "<p>Hello world!</p>\n", @response.body
|
284
|
-
end
|
285
|
-
|
286
|
-
def test_with_atom_content_type
|
287
|
-
@request.env["CONTENT_TYPE"] = "application/atom+xml"
|
288
|
-
get :made_for_content_type
|
289
|
-
assert_equal "ATOM", @response.body
|
290
|
-
end
|
291
|
-
|
292
|
-
def test_with_rss_content_type
|
293
|
-
@request.env["CONTENT_TYPE"] = "application/rss+xml"
|
294
|
-
get :made_for_content_type
|
295
|
-
assert_equal "RSS", @response.body
|
296
|
-
end
|
297
|
-
|
298
|
-
def test_synonyms
|
299
|
-
@request.accept = "application/javascript"
|
300
|
-
get :js_or_html
|
301
|
-
assert_equal 'JS', @response.body
|
302
|
-
|
303
|
-
@request.accept = "application/x-xml"
|
304
|
-
get :html_xml_or_rss
|
305
|
-
assert_equal "XML", @response.body
|
306
|
-
end
|
307
|
-
|
308
|
-
def test_custom_types
|
309
|
-
@request.accept = "application/crazy-xml"
|
310
|
-
get :custom_type_handling
|
311
|
-
assert_equal "application/crazy-xml", @response.content_type
|
312
|
-
assert_equal 'Crazy XML', @response.body
|
313
|
-
|
314
|
-
@request.accept = "text/html"
|
315
|
-
get :custom_type_handling
|
316
|
-
assert_equal "text/html", @response.content_type
|
317
|
-
assert_equal 'HTML', @response.body
|
318
|
-
end
|
319
|
-
|
320
|
-
def test_xhtml_alias
|
321
|
-
@request.accept = "application/xhtml+xml,application/xml"
|
322
|
-
get :html_or_xml
|
323
|
-
assert_equal 'HTML', @response.body
|
324
|
-
end
|
325
|
-
|
326
|
-
def test_firefox_simulation
|
327
|
-
@request.accept = "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"
|
328
|
-
get :html_or_xml
|
329
|
-
assert_equal 'HTML', @response.body
|
330
|
-
end
|
331
|
-
|
332
|
-
def test_handle_any
|
333
|
-
@request.accept = "*/*"
|
334
|
-
get :handle_any
|
335
|
-
assert_equal 'HTML', @response.body
|
336
|
-
|
337
|
-
@request.accept = "text/javascript"
|
338
|
-
get :handle_any
|
339
|
-
assert_equal 'Either JS or XML', @response.body
|
340
|
-
|
341
|
-
@request.accept = "text/xml"
|
342
|
-
get :handle_any
|
343
|
-
assert_equal 'Either JS or XML', @response.body
|
344
|
-
end
|
345
|
-
|
346
|
-
def test_handle_any_any
|
347
|
-
@request.accept = "*/*"
|
348
|
-
get :handle_any_any
|
349
|
-
assert_equal 'HTML', @response.body
|
350
|
-
end
|
351
|
-
|
352
|
-
def test_handle_any_any_parameter_format
|
353
|
-
get :handle_any_any, {:format=>'html'}
|
354
|
-
assert_equal 'HTML', @response.body
|
355
|
-
end
|
356
|
-
|
357
|
-
def test_handle_any_any_explicit_html
|
358
|
-
@request.accept = "text/html"
|
359
|
-
get :handle_any_any
|
360
|
-
assert_equal 'HTML', @response.body
|
361
|
-
end
|
362
|
-
|
363
|
-
def test_handle_any_any_javascript
|
364
|
-
@request.accept = "text/javascript"
|
365
|
-
get :handle_any_any
|
366
|
-
assert_equal 'Whatever you ask for, I got it', @response.body
|
367
|
-
end
|
368
|
-
|
369
|
-
def test_handle_any_any_xml
|
370
|
-
@request.accept = "text/xml"
|
371
|
-
get :handle_any_any
|
372
|
-
assert_equal 'Whatever you ask for, I got it', @response.body
|
373
|
-
end
|
374
|
-
|
375
|
-
def test_rjs_type_skips_layout
|
376
|
-
@request.accept = "text/javascript"
|
377
|
-
get :all_types_with_layout
|
378
|
-
assert_equal 'RJS for all_types_with_layout', @response.body
|
379
|
-
end
|
380
|
-
|
381
|
-
def test_html_type_with_layout
|
382
|
-
@request.accept = "text/html"
|
383
|
-
get :all_types_with_layout
|
384
|
-
assert_equal '<html><div id="html">HTML for all_types_with_layout</div></html>', @response.body
|
385
|
-
end
|
386
|
-
|
387
|
-
def test_xhr
|
388
|
-
xhr :get, :js_or_html
|
389
|
-
assert_equal 'JS', @response.body
|
390
|
-
|
391
|
-
xhr :get, :using_defaults
|
392
|
-
assert_equal '$("body").visualEffect("highlight");', @response.body
|
393
|
-
end
|
394
|
-
|
395
|
-
def test_custom_constant
|
396
|
-
get :custom_constant_handling, :format => "mobile"
|
397
|
-
assert_equal "text/x-mobile", @response.content_type
|
398
|
-
assert_equal "Mobile", @response.body
|
399
|
-
end
|
400
|
-
|
401
|
-
def test_custom_constant_handling_without_block
|
402
|
-
get :custom_constant_handling_without_block, :format => "mobile"
|
403
|
-
assert_equal "text/x-mobile", @response.content_type
|
404
|
-
assert_equal "Mobile", @response.body
|
405
|
-
end
|
406
|
-
|
407
|
-
def test_forced_format
|
408
|
-
get :html_xml_or_rss
|
409
|
-
assert_equal "HTML", @response.body
|
410
|
-
|
411
|
-
get :html_xml_or_rss, :format => "html"
|
412
|
-
assert_equal "HTML", @response.body
|
413
|
-
|
414
|
-
get :html_xml_or_rss, :format => "xml"
|
415
|
-
assert_equal "XML", @response.body
|
416
|
-
|
417
|
-
get :html_xml_or_rss, :format => "rss"
|
418
|
-
assert_equal "RSS", @response.body
|
419
|
-
end
|
420
|
-
|
421
|
-
def test_internally_forced_format
|
422
|
-
get :forced_xml
|
423
|
-
assert_equal "XML", @response.body
|
424
|
-
|
425
|
-
get :forced_xml, :format => "html"
|
426
|
-
assert_equal "XML", @response.body
|
427
|
-
end
|
428
|
-
|
429
|
-
def test_extension_synonyms
|
430
|
-
get :html_xml_or_rss, :format => "xhtml"
|
431
|
-
assert_equal "HTML", @response.body
|
432
|
-
end
|
433
|
-
|
434
|
-
def test_render_action_for_html
|
435
|
-
@controller.instance_eval do
|
436
|
-
def render(*args)
|
437
|
-
unless args.empty?
|
438
|
-
@action = args.first[:action]
|
439
|
-
end
|
440
|
-
response.body = "#{@action} - #{@template.template_format}"
|
441
|
-
end
|
442
|
-
end
|
443
|
-
|
444
|
-
get :using_defaults
|
445
|
-
assert_equal "using_defaults - html", @response.body
|
446
|
-
|
447
|
-
get :using_defaults, :format => "xml"
|
448
|
-
assert_equal "using_defaults - xml", @response.body
|
449
|
-
end
|
450
|
-
|
451
|
-
def test_format_with_custom_response_type
|
452
|
-
get :iphone_with_html_response_type
|
453
|
-
assert_equal '<html><div id="html">Hello future from Firefox!</div></html>', @response.body
|
454
|
-
|
455
|
-
get :iphone_with_html_response_type, :format => "iphone"
|
456
|
-
assert_equal "text/html", @response.content_type
|
457
|
-
assert_equal '<html><div id="iphone">Hello iPhone future from iPhone!</div></html>', @response.body
|
458
|
-
end
|
459
|
-
|
460
|
-
def test_format_with_custom_response_type_and_request_headers
|
461
|
-
@request.accept = "text/iphone"
|
462
|
-
get :iphone_with_html_response_type
|
463
|
-
assert_equal '<html><div id="iphone">Hello iPhone future from iPhone!</div></html>', @response.body
|
464
|
-
assert_equal "text/html", @response.content_type
|
465
|
-
end
|
466
|
-
|
467
|
-
def test_format_with_custom_response_type_and_request_headers_with_only_one_layout_present
|
468
|
-
get :iphone_with_html_response_type_without_layout
|
469
|
-
assert_equal '<html><div id="html_missing">Hello future from Firefox!</div></html>', @response.body
|
470
|
-
|
471
|
-
@request.accept = "text/iphone"
|
472
|
-
assert_raise(ActionView::MissingTemplate) { get :iphone_with_html_response_type_without_layout }
|
473
|
-
end
|
474
|
-
end
|
475
|
-
|
476
|
-
class AbstractPostController < ActionController::Base
|
477
|
-
self.view_paths = File.dirname(__FILE__) + "/../fixtures/post_test/"
|
478
|
-
end
|
479
|
-
|
480
|
-
# For testing layouts which are set automatically
|
481
|
-
class PostController < AbstractPostController
|
482
|
-
around_filter :with_iphone
|
483
|
-
|
484
|
-
def index
|
485
|
-
respond_to do |type|
|
486
|
-
type.html
|
487
|
-
type.iphone
|
488
|
-
end
|
489
|
-
end
|
490
|
-
|
491
|
-
protected
|
492
|
-
def with_iphone
|
493
|
-
Mime::Type.register_alias("text/html", :iphone)
|
494
|
-
request.format = "iphone" if request.env["HTTP_ACCEPT"] == "text/iphone"
|
495
|
-
yield
|
496
|
-
ensure
|
497
|
-
Mime.module_eval { remove_const :IPHONE if const_defined?(:IPHONE) }
|
498
|
-
end
|
499
|
-
end
|
500
|
-
|
501
|
-
class SuperPostController < PostController
|
502
|
-
def index
|
503
|
-
respond_to do |type|
|
504
|
-
type.html
|
505
|
-
type.iphone
|
506
|
-
end
|
507
|
-
end
|
508
|
-
end
|
509
|
-
|
510
|
-
class MimeControllerLayoutsTest < ActionController::TestCase
|
511
|
-
tests PostController
|
512
|
-
|
513
|
-
def setup
|
514
|
-
@request.host = "www.example.com"
|
515
|
-
end
|
516
|
-
|
517
|
-
def test_missing_layout_renders_properly
|
518
|
-
get :index
|
519
|
-
assert_equal '<html><div id="html">Hello Firefox</div></html>', @response.body
|
520
|
-
|
521
|
-
@request.accept = "text/iphone"
|
522
|
-
get :index
|
523
|
-
assert_equal 'Hello iPhone', @response.body
|
524
|
-
end
|
525
|
-
|
526
|
-
def test_format_with_inherited_layouts
|
527
|
-
@controller = SuperPostController.new
|
528
|
-
|
529
|
-
get :index
|
530
|
-
assert_equal 'Super Firefox', @response.body
|
531
|
-
|
532
|
-
@request.accept = "text/iphone"
|
533
|
-
get :index
|
534
|
-
assert_equal '<html><div id="super_iphone">Super iPhone</div></html>', @response.body
|
535
|
-
end
|
536
|
-
end
|