eactionpack 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +7 -0
- data/MIT-LICENSE +21 -0
- data/README +469 -0
- data/RUNNING_UNIT_TESTS +24 -0
- data/Rakefile +146 -0
- data/install.rb +30 -0
- data/lib/action_controller.rb +79 -0
- data/lib/action_controller/assertions.rb +69 -0
- data/lib/action_controller/assertions/dom_assertions.rb +39 -0
- data/lib/action_controller/assertions/model_assertions.rb +20 -0
- data/lib/action_controller/assertions/response_assertions.rb +172 -0
- data/lib/action_controller/assertions/routing_assertions.rb +146 -0
- data/lib/action_controller/assertions/selector_assertions.rb +491 -0
- data/lib/action_controller/assertions/tag_assertions.rb +130 -0
- data/lib/action_controller/base.rb +1288 -0
- data/lib/action_controller/benchmarking.rb +94 -0
- data/lib/action_controller/caching.rb +72 -0
- data/lib/action_controller/caching/actions.rb +144 -0
- data/lib/action_controller/caching/fragments.rb +138 -0
- data/lib/action_controller/caching/pages.rb +154 -0
- data/lib/action_controller/caching/sql_cache.rb +18 -0
- data/lib/action_controller/caching/sweeping.rb +97 -0
- data/lib/action_controller/cgi_ext.rb +16 -0
- data/lib/action_controller/cgi_ext/cookie.rb +110 -0
- data/lib/action_controller/cgi_ext/query_extension.rb +22 -0
- data/lib/action_controller/cgi_ext/session.rb +73 -0
- data/lib/action_controller/cgi_ext/stdinput.rb +24 -0
- data/lib/action_controller/cgi_process.rb +223 -0
- data/lib/action_controller/components.rb +166 -0
- data/lib/action_controller/cookies.rb +96 -0
- data/lib/action_controller/dispatcher.rb +162 -0
- data/lib/action_controller/filters.rb +642 -0
- data/lib/action_controller/flash.rb +172 -0
- data/lib/action_controller/headers.rb +31 -0
- data/lib/action_controller/helpers.rb +221 -0
- data/lib/action_controller/http_authentication.rb +124 -0
- data/lib/action_controller/integration.rb +634 -0
- data/lib/action_controller/layout.rb +309 -0
- data/lib/action_controller/mime_responds.rb +173 -0
- data/lib/action_controller/mime_type.rb +186 -0
- data/lib/action_controller/mime_types.rb +20 -0
- data/lib/action_controller/polymorphic_routes.rb +191 -0
- data/lib/action_controller/record_identifier.rb +102 -0
- data/lib/action_controller/request.rb +764 -0
- data/lib/action_controller/request_forgery_protection.rb +140 -0
- data/lib/action_controller/request_profiler.rb +169 -0
- data/lib/action_controller/rescue.rb +258 -0
- data/lib/action_controller/resources.rb +572 -0
- data/lib/action_controller/response.rb +76 -0
- data/lib/action_controller/routing.rb +387 -0
- data/lib/action_controller/routing/builder.rb +203 -0
- data/lib/action_controller/routing/optimisations.rb +120 -0
- data/lib/action_controller/routing/recognition_optimisation.rb +162 -0
- data/lib/action_controller/routing/route.rb +240 -0
- data/lib/action_controller/routing/route_set.rb +436 -0
- data/lib/action_controller/routing/routing_ext.rb +46 -0
- data/lib/action_controller/routing/segments.rb +283 -0
- data/lib/action_controller/session/active_record_store.rb +340 -0
- data/lib/action_controller/session/cookie_store.rb +166 -0
- data/lib/action_controller/session/drb_server.rb +32 -0
- data/lib/action_controller/session/drb_store.rb +35 -0
- data/lib/action_controller/session/mem_cache_store.rb +98 -0
- data/lib/action_controller/session_management.rb +158 -0
- data/lib/action_controller/status_codes.rb +88 -0
- data/lib/action_controller/streaming.rb +155 -0
- data/lib/action_controller/templates/rescues/_request_and_response.erb +24 -0
- data/lib/action_controller/templates/rescues/_trace.erb +26 -0
- data/lib/action_controller/templates/rescues/diagnostics.erb +11 -0
- data/lib/action_controller/templates/rescues/layout.erb +29 -0
- data/lib/action_controller/templates/rescues/missing_template.erb +2 -0
- data/lib/action_controller/templates/rescues/routing_error.erb +10 -0
- data/lib/action_controller/templates/rescues/template_error.erb +21 -0
- data/lib/action_controller/templates/rescues/unknown_action.erb +2 -0
- data/lib/action_controller/test_case.rb +83 -0
- data/lib/action_controller/test_process.rb +526 -0
- data/lib/action_controller/url_rewriter.rb +142 -0
- data/lib/action_controller/vendor/html-scanner/html/document.rb +68 -0
- data/lib/action_controller/vendor/html-scanner/html/node.rb +537 -0
- data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +173 -0
- data/lib/action_controller/vendor/html-scanner/html/selector.rb +828 -0
- data/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +105 -0
- data/lib/action_controller/vendor/html-scanner/html/version.rb +11 -0
- data/lib/action_controller/verification.rb +130 -0
- data/lib/action_pack.rb +24 -0
- data/lib/action_pack/version.rb +9 -0
- data/lib/action_view.rb +44 -0
- data/lib/action_view/base.rb +335 -0
- data/lib/action_view/helpers/active_record_helper.rb +276 -0
- data/lib/action_view/helpers/asset_tag_helper.rb +599 -0
- data/lib/action_view/helpers/atom_feed_helper.rb +143 -0
- data/lib/action_view/helpers/benchmark_helper.rb +33 -0
- data/lib/action_view/helpers/cache_helper.rb +40 -0
- data/lib/action_view/helpers/capture_helper.rb +161 -0
- data/lib/action_view/helpers/date_helper.rb +711 -0
- data/lib/action_view/helpers/debug_helper.rb +31 -0
- data/lib/action_view/helpers/form_helper.rb +767 -0
- data/lib/action_view/helpers/form_options_helper.rb +458 -0
- data/lib/action_view/helpers/form_tag_helper.rb +458 -0
- data/lib/action_view/helpers/javascript_helper.rb +148 -0
- data/lib/action_view/helpers/number_helper.rb +186 -0
- data/lib/action_view/helpers/record_identification_helper.rb +20 -0
- data/lib/action_view/helpers/record_tag_helper.rb +59 -0
- data/lib/action_view/helpers/sanitize_helper.rb +229 -0
- data/lib/action_view/helpers/tag_helper.rb +134 -0
- data/lib/action_view/helpers/text_helper.rb +507 -0
- data/lib/action_view/helpers/url_helper.rb +573 -0
- data/lib/action_view/inline_template.rb +20 -0
- data/lib/action_view/partial_template.rb +70 -0
- data/lib/action_view/partials.rb +158 -0
- data/lib/action_view/template.rb +125 -0
- data/lib/action_view/template_error.rb +110 -0
- data/lib/action_view/template_finder.rb +176 -0
- data/lib/action_view/template_handler.rb +34 -0
- data/lib/action_view/template_handlers/builder.rb +27 -0
- data/lib/action_view/template_handlers/compilable.rb +128 -0
- data/lib/action_view/template_handlers/erb.rb +56 -0
- data/lib/action_view/test_case.rb +58 -0
- data/lib/actionpack.rb +1 -0
- data/test/abstract_unit.rb +36 -0
- data/test/active_record_unit.rb +105 -0
- data/test/activerecord/active_record_store_test.rb +141 -0
- data/test/activerecord/render_partial_with_record_identification_test.rb +191 -0
- data/test/adv_attr_test.rb +20 -0
- data/test/controller/action_pack_assertions_test.rb +543 -0
- data/test/controller/addresses_render_test.rb +43 -0
- data/test/controller/assert_select_test.rb +331 -0
- data/test/controller/base_test.rb +219 -0
- data/test/controller/benchmark_test.rb +32 -0
- data/test/controller/caching_test.rb +581 -0
- data/test/controller/capture_test.rb +89 -0
- data/test/controller/cgi_test.rb +116 -0
- data/test/controller/components_test.rb +140 -0
- data/test/controller/content_type_test.rb +139 -0
- data/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
- data/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
- data/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
- data/test/controller/cookie_test.rb +146 -0
- data/test/controller/custom_handler_test.rb +45 -0
- data/test/controller/deprecation/deprecated_base_methods_test.rb +37 -0
- data/test/controller/dispatcher_test.rb +105 -0
- data/test/controller/fake_controllers.rb +33 -0
- data/test/controller/fake_models.rb +11 -0
- data/test/controller/filter_params_test.rb +49 -0
- data/test/controller/filters_test.rb +881 -0
- data/test/controller/flash_test.rb +146 -0
- data/test/controller/header_test.rb +14 -0
- data/test/controller/helper_test.rb +210 -0
- data/test/controller/html-scanner/cdata_node_test.rb +15 -0
- data/test/controller/html-scanner/document_test.rb +148 -0
- data/test/controller/html-scanner/node_test.rb +89 -0
- data/test/controller/html-scanner/sanitizer_test.rb +269 -0
- data/test/controller/html-scanner/tag_node_test.rb +238 -0
- data/test/controller/html-scanner/text_node_test.rb +50 -0
- data/test/controller/html-scanner/tokenizer_test.rb +131 -0
- data/test/controller/http_authentication_test.rb +54 -0
- data/test/controller/integration_test.rb +252 -0
- data/test/controller/integration_upload_test.rb +43 -0
- data/test/controller/layout_test.rb +255 -0
- data/test/controller/mime_responds_test.rb +514 -0
- data/test/controller/mime_type_test.rb +84 -0
- data/test/controller/new_render_test.rb +843 -0
- data/test/controller/polymorphic_routes_test.rb +174 -0
- data/test/controller/record_identifier_test.rb +139 -0
- data/test/controller/redirect_test.rb +289 -0
- data/test/controller/render_test.rb +484 -0
- data/test/controller/request_forgery_protection_test.rb +305 -0
- data/test/controller/request_test.rb +928 -0
- data/test/controller/rescue_test.rb +517 -0
- data/test/controller/resources_test.rb +873 -0
- data/test/controller/routing_test.rb +2464 -0
- data/test/controller/selector_test.rb +628 -0
- data/test/controller/send_file_test.rb +138 -0
- data/test/controller/session/cookie_store_test.rb +258 -0
- data/test/controller/session/mem_cache_store_test.rb +181 -0
- data/test/controller/session_fixation_test.rb +89 -0
- data/test/controller/session_management_test.rb +178 -0
- data/test/controller/test_test.rb +695 -0
- data/test/controller/url_rewriter_test.rb +310 -0
- data/test/controller/verification_test.rb +270 -0
- data/test/controller/view_paths_test.rb +140 -0
- data/test/controller/webservice_test.rb +229 -0
- data/test/fixtures/addresses/list.erb +1 -0
- data/test/fixtures/bad_customers/_bad_customer.html.erb +1 -0
- data/test/fixtures/companies.yml +24 -0
- data/test/fixtures/company.rb +10 -0
- data/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +1 -0
- data/test/fixtures/content_type/render_default_for_js.js.erb +1 -0
- data/test/fixtures/content_type/render_default_for_rhtml.rhtml +1 -0
- data/test/fixtures/content_type/render_default_for_rxml.rxml +1 -0
- data/test/fixtures/customers/_customer.html.erb +1 -0
- data/test/fixtures/db_definitions/sqlite.sql +49 -0
- data/test/fixtures/developer.rb +9 -0
- data/test/fixtures/developers.yml +21 -0
- data/test/fixtures/developers_projects.yml +13 -0
- data/test/fixtures/fun/games/hello_world.erb +1 -0
- data/test/fixtures/functional_caching/_partial.erb +3 -0
- data/test/fixtures/functional_caching/fragment_cached.html.erb +2 -0
- data/test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb +1 -0
- data/test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs +1 -0
- data/test/fixtures/good_customers/_good_customer.html.erb +1 -0
- data/test/fixtures/helpers/abc_helper.rb +5 -0
- data/test/fixtures/helpers/fun/games_helper.rb +3 -0
- data/test/fixtures/helpers/fun/pdf_helper.rb +3 -0
- data/test/fixtures/layout_tests/alt/hello.rhtml +1 -0
- data/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +1 -0
- data/test/fixtures/layout_tests/layouts/item.rhtml +1 -0
- data/test/fixtures/layout_tests/layouts/layout_test.rhtml +1 -0
- data/test/fixtures/layout_tests/layouts/multiple_extensions.html.erb +1 -0
- data/test/fixtures/layout_tests/layouts/third_party_template_library.mab +1 -0
- data/test/fixtures/layout_tests/views/hello.rhtml +1 -0
- data/test/fixtures/layouts/block_with_layout.erb +3 -0
- data/test/fixtures/layouts/builder.builder +3 -0
- data/test/fixtures/layouts/partial_with_layout.erb +3 -0
- data/test/fixtures/layouts/standard.erb +1 -0
- data/test/fixtures/layouts/talk_from_action.erb +2 -0
- data/test/fixtures/layouts/yield.erb +2 -0
- data/test/fixtures/mascot.rb +3 -0
- data/test/fixtures/mascots.yml +4 -0
- data/test/fixtures/mascots/_mascot.html.erb +1 -0
- data/test/fixtures/multipart/binary_file +0 -0
- data/test/fixtures/multipart/boundary_problem_file +10 -0
- data/test/fixtures/multipart/bracketed_param +5 -0
- data/test/fixtures/multipart/large_text_file +10 -0
- data/test/fixtures/multipart/mixed_files +0 -0
- data/test/fixtures/multipart/mona_lisa.jpg +0 -0
- data/test/fixtures/multipart/single_parameter +5 -0
- data/test/fixtures/multipart/text_file +10 -0
- data/test/fixtures/override/test/hello_world.erb +1 -0
- data/test/fixtures/override2/layouts/test/sub.erb +1 -0
- data/test/fixtures/post_test/layouts/post.html.erb +1 -0
- data/test/fixtures/post_test/layouts/super_post.iphone.erb +1 -0
- data/test/fixtures/post_test/post/index.html.erb +1 -0
- data/test/fixtures/post_test/post/index.iphone.erb +1 -0
- data/test/fixtures/post_test/super_post/index.html.erb +1 -0
- data/test/fixtures/post_test/super_post/index.iphone.erb +1 -0
- data/test/fixtures/project.rb +3 -0
- data/test/fixtures/projects.yml +7 -0
- data/test/fixtures/public/404.html +1 -0
- data/test/fixtures/public/500.html +1 -0
- data/test/fixtures/public/images/rails.png +0 -0
- data/test/fixtures/public/javascripts/application.js +1 -0
- data/test/fixtures/public/javascripts/bank.js +1 -0
- data/test/fixtures/public/javascripts/robber.js +1 -0
- data/test/fixtures/public/javascripts/version.1.0.js +1 -0
- data/test/fixtures/public/stylesheets/bank.css +1 -0
- data/test/fixtures/public/stylesheets/robber.css +1 -0
- data/test/fixtures/public/stylesheets/version.1.0.css +1 -0
- data/test/fixtures/replies.yml +15 -0
- data/test/fixtures/reply.rb +7 -0
- data/test/fixtures/respond_to/all_types_with_layout.html.erb +1 -0
- data/test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb +1 -0
- data/test/fixtures/respond_to/iphone_with_html_response_type.html.erb +1 -0
- data/test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb +1 -0
- data/test/fixtures/respond_to/layouts/missing.html.erb +1 -0
- data/test/fixtures/respond_to/layouts/standard.html.erb +1 -0
- data/test/fixtures/respond_to/layouts/standard.iphone.erb +1 -0
- data/test/fixtures/respond_to/using_defaults.html.erb +1 -0
- data/test/fixtures/respond_to/using_defaults.js.rjs +1 -0
- data/test/fixtures/respond_to/using_defaults.xml.builder +1 -0
- data/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +1 -0
- data/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +1 -0
- data/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +1 -0
- data/test/fixtures/scope/test/modgreet.erb +1 -0
- data/test/fixtures/shared.html.erb +1 -0
- data/test/fixtures/symlink_parent/symlinked_layout.erb +5 -0
- data/test/fixtures/test/_customer.erb +1 -0
- data/test/fixtures/test/_customer_counter.erb +1 -0
- data/test/fixtures/test/_customer_greeting.erb +1 -0
- data/test/fixtures/test/_form.erb +1 -0
- data/test/fixtures/test/_hash_greeting.erb +1 -0
- data/test/fixtures/test/_hash_object.erb +2 -0
- data/test/fixtures/test/_hello.builder +1 -0
- data/test/fixtures/test/_labelling_form.erb +1 -0
- data/test/fixtures/test/_layout_for_partial.html.erb +3 -0
- data/test/fixtures/test/_partial.erb +1 -0
- data/test/fixtures/test/_partial.html.erb +1 -0
- data/test/fixtures/test/_partial.js.erb +1 -0
- data/test/fixtures/test/_partial_for_use_in_layout.html.erb +1 -0
- data/test/fixtures/test/_partial_only.erb +1 -0
- data/test/fixtures/test/_person.erb +2 -0
- data/test/fixtures/test/_raise.html.erb +1 -0
- data/test/fixtures/test/action_talk_to_layout.erb +2 -0
- data/test/fixtures/test/block_content_for.erb +2 -0
- data/test/fixtures/test/calling_partial_with_layout.html.erb +1 -0
- data/test/fixtures/test/capturing.erb +4 -0
- data/test/fixtures/test/content_for.erb +2 -0
- data/test/fixtures/test/content_for_concatenated.erb +3 -0
- data/test/fixtures/test/content_for_with_parameter.erb +2 -0
- data/test/fixtures/test/delete_with_js.rjs +2 -0
- data/test/fixtures/test/dot.directory/render_file_with_ivar.erb +1 -0
- data/test/fixtures/test/enum_rjs_test.rjs +6 -0
- data/test/fixtures/test/erb_content_for.erb +2 -0
- data/test/fixtures/test/formatted_html_erb.html.erb +1 -0
- data/test/fixtures/test/formatted_xml_erb.builder +1 -0
- data/test/fixtures/test/formatted_xml_erb.html.erb +1 -0
- data/test/fixtures/test/formatted_xml_erb.xml.erb +1 -0
- data/test/fixtures/test/greeting.erb +1 -0
- data/test/fixtures/test/greeting.js.rjs +1 -0
- data/test/fixtures/test/hello.builder +4 -0
- data/test/fixtures/test/hello_world.erb +1 -0
- data/test/fixtures/test/hello_world_container.builder +3 -0
- data/test/fixtures/test/hello_world_from_rxml.builder +4 -0
- data/test/fixtures/test/hello_world_with_layout_false.erb +1 -0
- data/test/fixtures/test/hello_xml_world.builder +11 -0
- data/test/fixtures/test/list.erb +1 -0
- data/test/fixtures/test/non_erb_block_content_for.builder +4 -0
- data/test/fixtures/test/potential_conflicts.erb +4 -0
- data/test/fixtures/test/render_file_from_template.html.erb +1 -0
- data/test/fixtures/test/render_file_with_ivar.erb +1 -0
- data/test/fixtures/test/render_file_with_locals.erb +1 -0
- data/test/fixtures/test/render_to_string_test.erb +1 -0
- data/test/fixtures/test/update_element_with_capture.erb +9 -0
- data/test/fixtures/test/using_layout_around_block.html.erb +1 -0
- data/test/fixtures/topic.rb +3 -0
- data/test/fixtures/topics.yml +22 -0
- data/test/fixtures/topics/_topic.html.erb +1 -0
- data/test/template/active_record_helper_test.rb +268 -0
- data/test/template/asset_tag_helper_test.rb +514 -0
- data/test/template/atom_feed_helper_test.rb +179 -0
- data/test/template/benchmark_helper_test.rb +60 -0
- data/test/template/date_helper_test.rb +1791 -0
- data/test/template/deprecated_erb_variable_test.rb +9 -0
- data/test/template/erb_util_test.rb +24 -0
- data/test/template/form_helper_test.rb +885 -0
- data/test/template/form_options_helper_test.rb +1333 -0
- data/test/template/form_tag_helper_test.rb +272 -0
- data/test/template/javascript_helper_test.rb +73 -0
- data/test/template/number_helper_test.rb +97 -0
- data/test/template/record_tag_helper_test.rb +54 -0
- data/test/template/sanitize_helper_test.rb +48 -0
- data/test/template/tag_helper_test.rb +77 -0
- data/test/template/template_finder_test.rb +73 -0
- data/test/template/template_object_test.rb +95 -0
- data/test/template/test_test.rb +56 -0
- data/test/template/text_helper_test.rb +367 -0
- data/test/template/url_helper_test.rb +544 -0
- data/test/testing_sandbox.rb +15 -0
- metadata +469 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
require 'abstract_unit'
|
|
2
|
+
|
|
3
|
+
class Article
|
|
4
|
+
attr_reader :id
|
|
5
|
+
def save; @id = 1 end
|
|
6
|
+
def new_record?; @id.nil? end
|
|
7
|
+
def name
|
|
8
|
+
model = self.class.name.downcase
|
|
9
|
+
@id.nil? ? "new #{model}" : "#{model} ##{@id}"
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
class Response < Article
|
|
14
|
+
def post_id; 1 end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
class Tag < Article
|
|
18
|
+
def response_id; 1 end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# TODO: test nested models
|
|
22
|
+
class Response::Nested < Response; end
|
|
23
|
+
|
|
24
|
+
uses_mocha 'polymorphic URL helpers' do
|
|
25
|
+
class PolymorphicRoutesTest < Test::Unit::TestCase
|
|
26
|
+
|
|
27
|
+
include ActionController::PolymorphicRoutes
|
|
28
|
+
|
|
29
|
+
def setup
|
|
30
|
+
@article = Article.new
|
|
31
|
+
@response = Response.new
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def test_with_record
|
|
35
|
+
@article.save
|
|
36
|
+
expects(:article_url).with(@article)
|
|
37
|
+
polymorphic_url(@article)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_with_new_record
|
|
41
|
+
expects(:articles_url).with()
|
|
42
|
+
@article.expects(:new_record?).returns(true)
|
|
43
|
+
polymorphic_url(@article)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_with_record_and_action
|
|
47
|
+
expects(:new_article_url).with()
|
|
48
|
+
@article.expects(:new_record?).never
|
|
49
|
+
polymorphic_url(@article, :action => 'new')
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def test_url_helper_prefixed_with_new
|
|
53
|
+
expects(:new_article_url).with()
|
|
54
|
+
new_polymorphic_url(@article)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def test_url_helper_prefixed_with_edit
|
|
58
|
+
@article.save
|
|
59
|
+
expects(:edit_article_url).with(@article)
|
|
60
|
+
edit_polymorphic_url(@article)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_formatted_url_helper
|
|
64
|
+
expects(:formatted_article_url).with(@article, :pdf)
|
|
65
|
+
formatted_polymorphic_url([@article, :pdf])
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def test_format_option
|
|
69
|
+
@article.save
|
|
70
|
+
expects(:article_url).with(@article, :pdf)
|
|
71
|
+
polymorphic_url(@article, :format => :pdf)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_id_and_format_option
|
|
75
|
+
@article.save
|
|
76
|
+
expects(:article_url).with(:id => @article, :format => :pdf)
|
|
77
|
+
polymorphic_url(:id => @article, :format => :pdf)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def test_with_nested
|
|
81
|
+
@response.save
|
|
82
|
+
expects(:article_response_url).with(@article, @response)
|
|
83
|
+
polymorphic_url([@article, @response])
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def test_with_nested_unsaved
|
|
87
|
+
expects(:article_responses_url).with(@article)
|
|
88
|
+
polymorphic_url([@article, @response])
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def test_new_with_array_and_namespace
|
|
92
|
+
expects(:new_admin_article_url).with()
|
|
93
|
+
polymorphic_url([:admin, @article], :action => 'new')
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def test_unsaved_with_array_and_namespace
|
|
97
|
+
expects(:admin_articles_url).with()
|
|
98
|
+
polymorphic_url([:admin, @article])
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def test_nested_unsaved_with_array_and_namespace
|
|
102
|
+
@article.save
|
|
103
|
+
expects(:admin_article_url).with(@article)
|
|
104
|
+
polymorphic_url([:admin, @article])
|
|
105
|
+
expects(:admin_article_responses_url).with(@article)
|
|
106
|
+
polymorphic_url([:admin, @article, @response])
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def test_nested_with_array_and_namespace
|
|
110
|
+
@response.save
|
|
111
|
+
expects(:admin_article_response_url).with(@article, @response)
|
|
112
|
+
polymorphic_url([:admin, @article, @response])
|
|
113
|
+
|
|
114
|
+
# a ridiculously long named route tests correct ordering of namespaces and nesting:
|
|
115
|
+
@tag = Tag.new
|
|
116
|
+
@tag.save
|
|
117
|
+
expects(:site_admin_article_response_tag_url).with(@article, @response, @tag)
|
|
118
|
+
polymorphic_url([:site, :admin, @article, @response, @tag])
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def test_nesting_with_array_ending_in_singleton_resource
|
|
122
|
+
expects(:article_response_url).with(@article)
|
|
123
|
+
polymorphic_url([@article, :response])
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def test_nesting_with_array_containing_singleton_resource
|
|
127
|
+
@tag = Tag.new
|
|
128
|
+
@tag.save
|
|
129
|
+
expects(:article_response_tag_url).with(@article, @tag)
|
|
130
|
+
polymorphic_url([@article, :response, @tag])
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def test_nesting_with_array_containing_namespace_and_singleton_resource
|
|
134
|
+
@tag = Tag.new
|
|
135
|
+
@tag.save
|
|
136
|
+
expects(:admin_article_response_tag_url).with(@article, @tag)
|
|
137
|
+
polymorphic_url([:admin, @article, :response, @tag])
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def test_nesting_with_array_containing_singleton_resource_and_format
|
|
141
|
+
@tag = Tag.new
|
|
142
|
+
@tag.save
|
|
143
|
+
expects(:formatted_article_response_tag_url).with(@article, @tag, :pdf)
|
|
144
|
+
formatted_polymorphic_url([@article, :response, @tag, :pdf])
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def test_nesting_with_array_containing_singleton_resource_and_format_option
|
|
148
|
+
@tag = Tag.new
|
|
149
|
+
@tag.save
|
|
150
|
+
expects(:article_response_tag_url).with(@article, @tag, :pdf)
|
|
151
|
+
polymorphic_url([@article, :response, @tag], :format => :pdf)
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
# TODO: Needs to be updated to correctly know about whether the object is in a hash or not
|
|
155
|
+
def xtest_with_hash
|
|
156
|
+
expects(:article_url).with(@article)
|
|
157
|
+
@article.save
|
|
158
|
+
polymorphic_url(:id => @article)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def test_polymorphic_path_accepts_options
|
|
162
|
+
expects(:new_article_path).with()
|
|
163
|
+
polymorphic_path(@article, :action => :new)
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def test_polymorphic_path_does_not_modify_arguments
|
|
167
|
+
expects(:admin_article_responses_url).with(@article)
|
|
168
|
+
path = [:admin, @article, @response]
|
|
169
|
+
assert_no_difference 'path.size' do
|
|
170
|
+
polymorphic_url(path)
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
end
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
require 'abstract_unit'
|
|
2
|
+
|
|
3
|
+
class Comment
|
|
4
|
+
attr_reader :id
|
|
5
|
+
def save; @id = 1 end
|
|
6
|
+
def new_record?; @id.nil? end
|
|
7
|
+
def name
|
|
8
|
+
@id.nil? ? 'new comment' : "comment ##{@id}"
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
class Comment::Nested < Comment; end
|
|
13
|
+
|
|
14
|
+
class Test::Unit::TestCase
|
|
15
|
+
protected
|
|
16
|
+
def comments_url
|
|
17
|
+
'http://www.example.com/comments'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def comment_url(comment)
|
|
21
|
+
"http://www.example.com/comments/#{comment.id}"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class RecordIdentifierTest < Test::Unit::TestCase
|
|
27
|
+
include ActionController::RecordIdentifier
|
|
28
|
+
|
|
29
|
+
def setup
|
|
30
|
+
@klass = Comment
|
|
31
|
+
@record = @klass.new
|
|
32
|
+
@singular = 'comment'
|
|
33
|
+
@plural = 'comments'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_dom_id_with_new_record
|
|
37
|
+
assert_equal "new_#{@singular}", dom_id(@record)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_dom_id_with_new_record_and_prefix
|
|
41
|
+
assert_equal "custom_prefix_#{@singular}", dom_id(@record, :custom_prefix)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def test_dom_id_with_saved_record
|
|
45
|
+
@record.save
|
|
46
|
+
assert_equal "#{@singular}_1", dom_id(@record)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def test_dom_id_with_prefix
|
|
50
|
+
@record.save
|
|
51
|
+
assert_equal "edit_#{@singular}_1", dom_id(@record, :edit)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_partial_path
|
|
55
|
+
expected = "#{@plural}/#{@singular}"
|
|
56
|
+
assert_equal expected, partial_path(@record)
|
|
57
|
+
assert_equal expected, partial_path(Comment)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def test_partial_path_with_namespaced_controller_path
|
|
61
|
+
expected = "admin/#{@plural}/#{@singular}"
|
|
62
|
+
assert_equal expected, partial_path(@record, "admin/posts")
|
|
63
|
+
assert_equal expected, partial_path(@klass, "admin/posts")
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def test_partial_path_with_not_namespaced_controller_path
|
|
67
|
+
expected = "#{@plural}/#{@singular}"
|
|
68
|
+
assert_equal expected, partial_path(@record, "posts")
|
|
69
|
+
assert_equal expected, partial_path(@klass, "posts")
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def test_dom_class
|
|
73
|
+
assert_equal @singular, dom_class(@record)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def test_dom_class_with_prefix
|
|
77
|
+
assert_equal "custom_prefix_#{@singular}", dom_class(@record, :custom_prefix)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def test_singular_class_name
|
|
81
|
+
assert_equal @singular, singular_class_name(@record)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def test_singular_class_name_for_class
|
|
85
|
+
assert_equal @singular, singular_class_name(@klass)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def test_plural_class_name
|
|
89
|
+
assert_equal @plural, plural_class_name(@record)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def test_plural_class_name_for_class
|
|
93
|
+
assert_equal @plural, plural_class_name(@klass)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
private
|
|
97
|
+
def method_missing(method, *args)
|
|
98
|
+
RecordIdentifier.send(method, *args)
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
class NestedRecordIdentifierTest < RecordIdentifierTest
|
|
103
|
+
def setup
|
|
104
|
+
@klass = Comment::Nested
|
|
105
|
+
@record = @klass.new
|
|
106
|
+
@singular = 'comment_nested'
|
|
107
|
+
@plural = 'comment_nesteds'
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def test_partial_path
|
|
111
|
+
expected = "comment/nesteds/nested"
|
|
112
|
+
assert_equal expected, partial_path(@record)
|
|
113
|
+
assert_equal expected, partial_path(Comment::Nested)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def test_partial_path_with_namespaced_controller_path
|
|
117
|
+
expected = "admin/comment/nesteds/nested"
|
|
118
|
+
assert_equal expected, partial_path(@record, "admin/posts")
|
|
119
|
+
assert_equal expected, partial_path(@klass, "admin/posts")
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def test_partial_path_with_deeper_namespaced_controller_path
|
|
123
|
+
expected = "deeper/admin/comment/nesteds/nested"
|
|
124
|
+
assert_equal expected, partial_path(@record, "deeper/admin/posts")
|
|
125
|
+
assert_equal expected, partial_path(@klass, "deeper/admin/posts")
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def test_partial_path_with_even_deeper_namespaced_controller_path
|
|
129
|
+
expected = "even/more/deeper/admin/comment/nesteds/nested"
|
|
130
|
+
assert_equal expected, partial_path(@record, "even/more/deeper/admin/posts")
|
|
131
|
+
assert_equal expected, partial_path(@klass, "even/more/deeper/admin/posts")
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def test_partial_path_with_not_namespaced_controller_path
|
|
135
|
+
expected = "comment/nesteds/nested"
|
|
136
|
+
assert_equal expected, partial_path(@record, "posts")
|
|
137
|
+
assert_equal expected, partial_path(@klass, "posts")
|
|
138
|
+
end
|
|
139
|
+
end
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
require 'abstract_unit'
|
|
2
|
+
|
|
3
|
+
class WorkshopsController < ActionController::Base
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
class Workshop
|
|
7
|
+
attr_accessor :id, :new_record
|
|
8
|
+
|
|
9
|
+
def initialize(id, new_record)
|
|
10
|
+
@id, @new_record = id, new_record
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def new_record?
|
|
14
|
+
@new_record
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def to_s
|
|
18
|
+
id.to_s
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class RedirectController < ActionController::Base
|
|
23
|
+
def simple_redirect
|
|
24
|
+
redirect_to :action => "hello_world"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def redirect_with_status
|
|
28
|
+
redirect_to({:action => "hello_world", :status => 301})
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def redirect_with_status_hash
|
|
32
|
+
redirect_to({:action => "hello_world"}, {:status => 301})
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def url_redirect_with_status
|
|
36
|
+
redirect_to("http://www.example.com", :status => :moved_permanently)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def url_redirect_with_status_hash
|
|
40
|
+
redirect_to("http://www.example.com", {:status => 301})
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def relative_url_redirect_with_status
|
|
44
|
+
redirect_to("/things/stuff", :status => :found)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def relative_url_redirect_with_status_hash
|
|
48
|
+
redirect_to("/things/stuff", {:status => 301})
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def redirect_to_back_with_status
|
|
52
|
+
redirect_to :back, :status => 307
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def host_redirect
|
|
56
|
+
redirect_to :action => "other_host", :only_path => false, :host => 'other.test.host'
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def module_redirect
|
|
60
|
+
redirect_to :controller => 'module_test/module_redirect', :action => "hello_world"
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def redirect_with_assigns
|
|
64
|
+
@hello = "world"
|
|
65
|
+
redirect_to :action => "hello_world"
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def redirect_to_url
|
|
69
|
+
redirect_to "http://www.rubyonrails.org/"
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def redirect_to_url_with_unescaped_query_string
|
|
73
|
+
redirect_to "http://dev.rubyonrails.org/query?status=new"
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def redirect_to_back
|
|
77
|
+
redirect_to :back
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def redirect_to_existing_record
|
|
81
|
+
redirect_to Workshop.new(5, false)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def redirect_to_new_record
|
|
85
|
+
redirect_to Workshop.new(5, true)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def redirect_to_nil
|
|
89
|
+
redirect_to nil
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def rescue_errors(e) raise e end
|
|
93
|
+
|
|
94
|
+
def rescue_action(e) raise end
|
|
95
|
+
|
|
96
|
+
protected
|
|
97
|
+
def dashbord_url(id, message)
|
|
98
|
+
url_for :action => "dashboard", :params => { "id" => id, "message" => message }
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
class RedirectTest < Test::Unit::TestCase
|
|
103
|
+
def setup
|
|
104
|
+
@controller = RedirectController.new
|
|
105
|
+
@request = ActionController::TestRequest.new
|
|
106
|
+
@response = ActionController::TestResponse.new
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def test_simple_redirect
|
|
110
|
+
get :simple_redirect
|
|
111
|
+
assert_response :redirect
|
|
112
|
+
assert_equal "http://test.host/redirect/hello_world", redirect_to_url
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def test_redirect_with_no_status
|
|
116
|
+
get :simple_redirect
|
|
117
|
+
assert_response 302
|
|
118
|
+
assert_equal "http://test.host/redirect/hello_world", redirect_to_url
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def test_redirect_with_status
|
|
122
|
+
get :redirect_with_status
|
|
123
|
+
assert_response 301
|
|
124
|
+
assert_equal "http://test.host/redirect/hello_world", redirect_to_url
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def test_redirect_with_status_hash
|
|
128
|
+
get :redirect_with_status_hash
|
|
129
|
+
assert_response 301
|
|
130
|
+
assert_equal "http://test.host/redirect/hello_world", redirect_to_url
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def test_url_redirect_with_status
|
|
134
|
+
get :url_redirect_with_status
|
|
135
|
+
assert_response 301
|
|
136
|
+
assert_equal "http://www.example.com", redirect_to_url
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def test_url_redirect_with_status_hash
|
|
140
|
+
get :url_redirect_with_status_hash
|
|
141
|
+
assert_response 301
|
|
142
|
+
assert_equal "http://www.example.com", redirect_to_url
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def test_relative_url_redirect_with_status
|
|
147
|
+
get :relative_url_redirect_with_status
|
|
148
|
+
assert_response 302
|
|
149
|
+
assert_equal "http://test.host/things/stuff", redirect_to_url
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def test_relative_url_redirect_with_status_hash
|
|
153
|
+
get :relative_url_redirect_with_status_hash
|
|
154
|
+
assert_response 301
|
|
155
|
+
assert_equal "http://test.host/things/stuff", redirect_to_url
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def test_redirect_to_back_with_status
|
|
159
|
+
@request.env["HTTP_REFERER"] = "http://www.example.com/coming/from"
|
|
160
|
+
get :redirect_to_back_with_status
|
|
161
|
+
assert_response 307
|
|
162
|
+
assert_equal "http://www.example.com/coming/from", redirect_to_url
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def test_simple_redirect_using_options
|
|
166
|
+
get :host_redirect
|
|
167
|
+
assert_response :redirect
|
|
168
|
+
assert_redirected_to :action => "other_host", :only_path => false, :host => 'other.test.host'
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
def test_redirect_error_with_pretty_diff
|
|
172
|
+
get :host_redirect
|
|
173
|
+
assert_response :redirect
|
|
174
|
+
begin
|
|
175
|
+
assert_redirected_to :action => "other_host", :only_path => true
|
|
176
|
+
rescue Test::Unit::AssertionFailedError => err
|
|
177
|
+
expected_msg, redirection_msg, diff_msg = err.message.scan(/<\{[^\}]+\}>/).collect { |s| s[2..-3] }
|
|
178
|
+
assert_match %r("only_path"=>false), redirection_msg
|
|
179
|
+
assert_match %r("host"=>"other.test.host"), redirection_msg
|
|
180
|
+
assert_match %r("action"=>"other_host"), redirection_msg
|
|
181
|
+
assert_match %r("only_path"=>false), diff_msg
|
|
182
|
+
assert_match %r("host"=>"other.test.host"), diff_msg
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
def test_module_redirect
|
|
187
|
+
get :module_redirect
|
|
188
|
+
assert_response :redirect
|
|
189
|
+
assert_redirected_to "http://test.host/module_test/module_redirect/hello_world"
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
def test_module_redirect_using_options
|
|
193
|
+
get :module_redirect
|
|
194
|
+
assert_response :redirect
|
|
195
|
+
assert_redirected_to :controller => 'module_test/module_redirect', :action => 'hello_world'
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
def test_redirect_with_assigns
|
|
199
|
+
get :redirect_with_assigns
|
|
200
|
+
assert_response :redirect
|
|
201
|
+
assert_equal "world", assigns["hello"]
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
def test_redirect_to_url
|
|
205
|
+
get :redirect_to_url
|
|
206
|
+
assert_response :redirect
|
|
207
|
+
assert_redirected_to "http://www.rubyonrails.org/"
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
def test_redirect_to_url_with_unescaped_query_string
|
|
211
|
+
get :redirect_to_url_with_unescaped_query_string
|
|
212
|
+
assert_response :redirect
|
|
213
|
+
assert_redirected_to "http://dev.rubyonrails.org/query?status=new"
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
def test_redirect_to_back
|
|
217
|
+
@request.env["HTTP_REFERER"] = "http://www.example.com/coming/from"
|
|
218
|
+
get :redirect_to_back
|
|
219
|
+
assert_response :redirect
|
|
220
|
+
assert_equal "http://www.example.com/coming/from", redirect_to_url
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
def test_redirect_to_back_with_no_referer
|
|
224
|
+
assert_raises(ActionController::RedirectBackError) {
|
|
225
|
+
@request.env["HTTP_REFERER"] = nil
|
|
226
|
+
get :redirect_to_back
|
|
227
|
+
}
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
def test_redirect_to_record
|
|
231
|
+
ActionController::Routing::Routes.draw do |map|
|
|
232
|
+
map.resources :workshops
|
|
233
|
+
map.connect ':controller/:action/:id'
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
get :redirect_to_existing_record
|
|
237
|
+
assert_equal "http://test.host/workshops/5", redirect_to_url
|
|
238
|
+
|
|
239
|
+
get :redirect_to_new_record
|
|
240
|
+
assert_equal "http://test.host/workshops", redirect_to_url
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
def test_redirect_to_nil
|
|
244
|
+
assert_raises(ActionController::ActionControllerError) do
|
|
245
|
+
get :redirect_to_nil
|
|
246
|
+
end
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
module ModuleTest
|
|
252
|
+
class ModuleRedirectController < ::RedirectController
|
|
253
|
+
def module_redirect
|
|
254
|
+
redirect_to :controller => '/redirect', :action => "hello_world"
|
|
255
|
+
end
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
class ModuleRedirectTest < Test::Unit::TestCase
|
|
259
|
+
def setup
|
|
260
|
+
@controller = ModuleRedirectController.new
|
|
261
|
+
@request = ActionController::TestRequest.new
|
|
262
|
+
@response = ActionController::TestResponse.new
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
def test_simple_redirect
|
|
266
|
+
get :simple_redirect
|
|
267
|
+
assert_response :redirect
|
|
268
|
+
assert_equal "http://test.host/module_test/module_redirect/hello_world", redirect_to_url
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
def test_simple_redirect_using_options
|
|
272
|
+
get :host_redirect
|
|
273
|
+
assert_response :redirect
|
|
274
|
+
assert_redirected_to :action => "other_host", :only_path => false, :host => 'other.test.host'
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
def test_module_redirect
|
|
278
|
+
get :module_redirect
|
|
279
|
+
assert_response :redirect
|
|
280
|
+
assert_equal "http://test.host/redirect/hello_world", redirect_to_url
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
def test_module_redirect_using_options
|
|
284
|
+
get :module_redirect
|
|
285
|
+
assert_response :redirect
|
|
286
|
+
assert_redirected_to :controller => 'redirect', :action => "hello_world"
|
|
287
|
+
end
|
|
288
|
+
end
|
|
289
|
+
end
|