actionpack_csi 2.3.5.p6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +5184 -0
- data/MIT-LICENSE +21 -0
- data/README +409 -0
- data/RUNNING_UNIT_TESTS +24 -0
- data/Rakefile +160 -0
- data/install.rb +30 -0
- data/lib/action_controller/assertions/dom_assertions.rb +55 -0
- data/lib/action_controller/assertions/model_assertions.rb +21 -0
- data/lib/action_controller/assertions/response_assertions.rb +160 -0
- data/lib/action_controller/assertions/routing_assertions.rb +146 -0
- data/lib/action_controller/assertions/selector_assertions.rb +638 -0
- data/lib/action_controller/assertions/tag_assertions.rb +127 -0
- data/lib/action_controller/base.rb +1423 -0
- data/lib/action_controller/benchmarking.rb +107 -0
- data/lib/action_controller/caching/actions.rb +177 -0
- data/lib/action_controller/caching/fragments.rb +120 -0
- data/lib/action_controller/caching/pages.rb +152 -0
- data/lib/action_controller/caching/sweeper.rb +45 -0
- data/lib/action_controller/caching/sweeping.rb +55 -0
- data/lib/action_controller/caching.rb +71 -0
- data/lib/action_controller/cgi_ext/cookie.rb +112 -0
- data/lib/action_controller/cgi_ext/query_extension.rb +22 -0
- data/lib/action_controller/cgi_ext/stdinput.rb +24 -0
- data/lib/action_controller/cgi_ext.rb +15 -0
- data/lib/action_controller/cgi_process.rb +77 -0
- data/lib/action_controller/cookies.rb +95 -0
- data/lib/action_controller/dispatcher.rb +133 -0
- data/lib/action_controller/failsafe.rb +86 -0
- data/lib/action_controller/filters.rb +680 -0
- data/lib/action_controller/flash.rb +171 -0
- data/lib/action_controller/headers.rb +33 -0
- data/lib/action_controller/helpers.rb +225 -0
- data/lib/action_controller/http_authentication.rb +309 -0
- data/lib/action_controller/integration.rb +692 -0
- data/lib/action_controller/layout.rb +286 -0
- data/lib/action_controller/middleware_stack.rb +119 -0
- data/lib/action_controller/middlewares.rb +14 -0
- data/lib/action_controller/mime_responds.rb +193 -0
- data/lib/action_controller/mime_type.rb +212 -0
- data/lib/action_controller/mime_types.rb +21 -0
- data/lib/action_controller/params_parser.rb +77 -0
- data/lib/action_controller/performance_test.rb +15 -0
- data/lib/action_controller/polymorphic_routes.rb +189 -0
- data/lib/action_controller/rack_lint_patch.rb +36 -0
- data/lib/action_controller/record_identifier.rb +104 -0
- data/lib/action_controller/reloader.rb +54 -0
- data/lib/action_controller/request.rb +493 -0
- data/lib/action_controller/request_forgery_protection.rb +113 -0
- data/lib/action_controller/rescue.rb +183 -0
- data/lib/action_controller/resources.rb +682 -0
- data/lib/action_controller/response.rb +239 -0
- data/lib/action_controller/routing/builder.rb +197 -0
- data/lib/action_controller/routing/optimisations.rb +130 -0
- data/lib/action_controller/routing/recognition_optimisation.rb +167 -0
- data/lib/action_controller/routing/route.rb +265 -0
- data/lib/action_controller/routing/route_set.rb +502 -0
- data/lib/action_controller/routing/routing_ext.rb +49 -0
- data/lib/action_controller/routing/segments.rb +343 -0
- data/lib/action_controller/routing.rb +388 -0
- data/lib/action_controller/session/abstract_store.rb +181 -0
- data/lib/action_controller/session/cookie_store.rb +221 -0
- data/lib/action_controller/session/mem_cache_store.rb +51 -0
- data/lib/action_controller/session_management.rb +54 -0
- data/lib/action_controller/status_codes.rb +88 -0
- data/lib/action_controller/streaming.rb +181 -0
- data/lib/action_controller/string_coercion.rb +29 -0
- data/lib/action_controller/templates/rescues/_request_and_response.erb +24 -0
- data/lib/action_controller/templates/rescues/_trace.erb +26 -0
- data/lib/action_controller/templates/rescues/diagnostics.erb +11 -0
- data/lib/action_controller/templates/rescues/layout.erb +29 -0
- data/lib/action_controller/templates/rescues/missing_template.erb +2 -0
- data/lib/action_controller/templates/rescues/routing_error.erb +10 -0
- data/lib/action_controller/templates/rescues/template_error.erb +21 -0
- data/lib/action_controller/templates/rescues/unknown_action.erb +2 -0
- data/lib/action_controller/test_case.rb +209 -0
- data/lib/action_controller/test_process.rb +580 -0
- data/lib/action_controller/translation.rb +13 -0
- data/lib/action_controller/uploaded_file.rb +44 -0
- data/lib/action_controller/url_rewriter.rb +216 -0
- data/lib/action_controller/vendor/html-scanner/html/document.rb +68 -0
- data/lib/action_controller/vendor/html-scanner/html/node.rb +537 -0
- data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +173 -0
- data/lib/action_controller/vendor/html-scanner/html/selector.rb +828 -0
- data/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +105 -0
- data/lib/action_controller/vendor/html-scanner/html/version.rb +11 -0
- data/lib/action_controller/vendor/html-scanner.rb +16 -0
- data/lib/action_controller/verification.rb +130 -0
- data/lib/action_controller.rb +113 -0
- data/lib/action_pack/version.rb +9 -0
- data/lib/action_pack.rb +24 -0
- data/lib/action_view/base.rb +362 -0
- data/lib/action_view/erb/util.rb +44 -0
- data/lib/action_view/helpers/active_record_helper.rb +305 -0
- data/lib/action_view/helpers/asset_tag_helper.rb +694 -0
- data/lib/action_view/helpers/atom_feed_helper.rb +198 -0
- data/lib/action_view/helpers/benchmark_helper.rb +54 -0
- data/lib/action_view/helpers/cache_helper.rb +39 -0
- data/lib/action_view/helpers/capture_helper.rb +136 -0
- data/lib/action_view/helpers/date_helper.rb +988 -0
- data/lib/action_view/helpers/debug_helper.rb +38 -0
- data/lib/action_view/helpers/form_helper.rb +1074 -0
- data/lib/action_view/helpers/form_options_helper.rb +600 -0
- data/lib/action_view/helpers/form_tag_helper.rb +487 -0
- data/lib/action_view/helpers/javascript_helper.rb +208 -0
- data/lib/action_view/helpers/number_helper.rb +308 -0
- data/lib/action_view/helpers/prototype_helper.rb +1305 -0
- data/lib/action_view/helpers/raw_output_helper.rb +9 -0
- data/lib/action_view/helpers/record_identification_helper.rb +20 -0
- data/lib/action_view/helpers/record_tag_helper.rb +58 -0
- data/lib/action_view/helpers/sanitize_helper.rb +259 -0
- data/lib/action_view/helpers/scriptaculous_helper.rb +226 -0
- data/lib/action_view/helpers/tag_helper.rb +150 -0
- data/lib/action_view/helpers/text_helper.rb +587 -0
- data/lib/action_view/helpers/translation_helper.rb +39 -0
- data/lib/action_view/helpers/url_helper.rb +639 -0
- data/lib/action_view/helpers.rb +59 -0
- data/lib/action_view/inline_template.rb +19 -0
- data/lib/action_view/locale/en.yml +117 -0
- data/lib/action_view/partials.rb +240 -0
- data/lib/action_view/paths.rb +69 -0
- data/lib/action_view/reloadable_template.rb +117 -0
- data/lib/action_view/renderable.rb +95 -0
- data/lib/action_view/renderable_partial.rb +47 -0
- data/lib/action_view/safe_buffer.rb +28 -0
- data/lib/action_view/template.rb +252 -0
- data/lib/action_view/template_error.rb +99 -0
- data/lib/action_view/template_handler.rb +34 -0
- data/lib/action_view/template_handlers/builder.rb +17 -0
- data/lib/action_view/template_handlers/erb.rb +22 -0
- data/lib/action_view/template_handlers/rjs.rb +13 -0
- data/lib/action_view/template_handlers.rb +48 -0
- data/lib/action_view/test_case.rb +162 -0
- data/lib/action_view.rb +58 -0
- data/lib/actionpack.rb +2 -0
- data/test/abstract_unit.rb +61 -0
- data/test/active_record_unit.rb +104 -0
- data/test/activerecord/active_record_store_test.rb +174 -0
- data/test/activerecord/render_partial_with_record_identification_test.rb +188 -0
- data/test/adv_attr_test.rb +20 -0
- data/test/controller/action_pack_assertions_test.rb +543 -0
- data/test/controller/addresses_render_test.rb +37 -0
- data/test/controller/assert_select_test.rb +734 -0
- data/test/controller/base_test.rb +217 -0
- data/test/controller/benchmark_test.rb +32 -0
- data/test/controller/caching_test.rb +729 -0
- data/test/controller/capture_test.rb +66 -0
- data/test/controller/content_type_test.rb +168 -0
- data/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
- data/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
- data/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
- data/test/controller/cookie_test.rb +134 -0
- data/test/controller/deprecation/deprecated_base_methods_test.rb +32 -0
- data/test/controller/dispatcher_test.rb +144 -0
- data/test/controller/dom_assertions_test.rb +53 -0
- data/test/controller/failsafe_test.rb +60 -0
- data/test/controller/fake_controllers.rb +33 -0
- data/test/controller/fake_models.rb +19 -0
- data/test/controller/filter_params_test.rb +52 -0
- data/test/controller/filters_test.rb +885 -0
- data/test/controller/flash_test.rb +147 -0
- data/test/controller/header_test.rb +14 -0
- data/test/controller/helper_test.rb +224 -0
- data/test/controller/html-scanner/cdata_node_test.rb +15 -0
- data/test/controller/html-scanner/document_test.rb +148 -0
- data/test/controller/html-scanner/node_test.rb +89 -0
- data/test/controller/html-scanner/sanitizer_test.rb +274 -0
- data/test/controller/html-scanner/tag_node_test.rb +238 -0
- data/test/controller/html-scanner/text_node_test.rb +50 -0
- data/test/controller/html-scanner/tokenizer_test.rb +131 -0
- data/test/controller/http_basic_authentication_test.rb +113 -0
- data/test/controller/http_digest_authentication_test.rb +254 -0
- data/test/controller/integration_test.rb +483 -0
- data/test/controller/layout_test.rb +215 -0
- data/test/controller/logging_test.rb +46 -0
- data/test/controller/middleware_stack_test.rb +90 -0
- data/test/controller/mime_responds_test.rb +536 -0
- data/test/controller/mime_type_test.rb +93 -0
- data/test/controller/polymorphic_routes_test.rb +297 -0
- data/test/controller/rack_test.rb +311 -0
- data/test/controller/record_identifier_test.rb +139 -0
- data/test/controller/redirect_test.rb +285 -0
- data/test/controller/reloader_test.rb +124 -0
- data/test/controller/render_test.rb +1762 -0
- data/test/controller/request/json_params_parsing_test.rb +65 -0
- data/test/controller/request/multipart_params_parsing_test.rb +162 -0
- data/test/controller/request/query_string_parsing_test.rb +120 -0
- data/test/controller/request/test_request_test.rb +35 -0
- data/test/controller/request/url_encoded_params_parsing_test.rb +146 -0
- data/test/controller/request/xml_params_parsing_test.rb +103 -0
- data/test/controller/request_forgery_protection_test.rb +265 -0
- data/test/controller/request_test.rb +395 -0
- data/test/controller/rescue_test.rb +536 -0
- data/test/controller/resources_test.rb +1393 -0
- data/test/controller/routing_test.rb +2591 -0
- data/test/controller/selector_test.rb +628 -0
- data/test/controller/send_file_test.rb +171 -0
- data/test/controller/session/cookie_store_test.rb +216 -0
- data/test/controller/session/mem_cache_store_test.rb +127 -0
- data/test/controller/session/test_session_test.rb +58 -0
- data/test/controller/test_test.rb +700 -0
- data/test/controller/translation_test.rb +26 -0
- data/test/controller/url_rewriter_test.rb +385 -0
- data/test/controller/verification_test.rb +270 -0
- data/test/controller/view_paths_test.rb +141 -0
- data/test/controller/webservice_test.rb +273 -0
- data/test/fixtures/_top_level_partial.html.erb +1 -0
- data/test/fixtures/_top_level_partial_only.erb +1 -0
- data/test/fixtures/addresses/list.erb +1 -0
- data/test/fixtures/alternate_helpers/foo_helper.rb +3 -0
- data/test/fixtures/bad_customers/_bad_customer.html.erb +1 -0
- data/test/fixtures/companies.yml +24 -0
- data/test/fixtures/company.rb +10 -0
- data/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +1 -0
- data/test/fixtures/content_type/render_default_for_rhtml.rhtml +1 -0
- data/test/fixtures/content_type/render_default_for_rjs.rjs +1 -0
- data/test/fixtures/content_type/render_default_for_rxml.rxml +1 -0
- data/test/fixtures/customers/_customer.html.erb +1 -0
- data/test/fixtures/db_definitions/sqlite.sql +49 -0
- data/test/fixtures/developer.rb +9 -0
- data/test/fixtures/developers/_developer.erb +1 -0
- data/test/fixtures/developers.yml +21 -0
- data/test/fixtures/developers_projects.yml +13 -0
- data/test/fixtures/failsafe/500.html +1 -0
- data/test/fixtures/fun/games/_game.erb +1 -0
- data/test/fixtures/fun/games/hello_world.erb +1 -0
- data/test/fixtures/fun/serious/games/_game.erb +1 -0
- data/test/fixtures/functional_caching/_partial.erb +3 -0
- data/test/fixtures/functional_caching/formatted_fragment_cached.html.erb +3 -0
- data/test/fixtures/functional_caching/formatted_fragment_cached.js.rjs +6 -0
- data/test/fixtures/functional_caching/formatted_fragment_cached.xml.builder +5 -0
- data/test/fixtures/functional_caching/fragment_cached.html.erb +2 -0
- data/test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb +1 -0
- data/test/fixtures/functional_caching/inline_fragment_cached.html.erb +2 -0
- data/test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs +1 -0
- data/test/fixtures/good_customers/_good_customer.html.erb +1 -0
- data/test/fixtures/helpers/abc_helper.rb +5 -0
- data/test/fixtures/helpers/fun/games_helper.rb +3 -0
- data/test/fixtures/helpers/fun/pdf_helper.rb +3 -0
- data/test/fixtures/layout_tests/abs_path_layout.rhtml +1 -0
- data/test/fixtures/layout_tests/alt/hello.rhtml +1 -0
- data/test/fixtures/layout_tests/alt/layouts/alt.rhtml +0 -0
- data/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +1 -0
- data/test/fixtures/layout_tests/layouts/item.rhtml +1 -0
- data/test/fixtures/layout_tests/layouts/layout_test.rhtml +1 -0
- data/test/fixtures/layout_tests/layouts/multiple_extensions.html.erb +1 -0
- data/test/fixtures/layout_tests/layouts/third_party_template_library.mab +1 -0
- data/test/fixtures/layout_tests/views/hello.rhtml +1 -0
- data/test/fixtures/layouts/_column.html.erb +2 -0
- data/test/fixtures/layouts/block_with_layout.erb +3 -0
- data/test/fixtures/layouts/builder.builder +3 -0
- data/test/fixtures/layouts/default_html.html.erb +1 -0
- data/test/fixtures/layouts/partial_with_layout.erb +3 -0
- data/test/fixtures/layouts/standard.erb +1 -0
- data/test/fixtures/layouts/talk_from_action.erb +2 -0
- data/test/fixtures/layouts/xhr.html.erb +2 -0
- data/test/fixtures/layouts/yield.erb +2 -0
- data/test/fixtures/mascot.rb +3 -0
- data/test/fixtures/mascots/_mascot.html.erb +1 -0
- data/test/fixtures/mascots.yml +4 -0
- data/test/fixtures/multipart/binary_file +0 -0
- data/test/fixtures/multipart/boundary_problem_file +10 -0
- data/test/fixtures/multipart/bracketed_param +5 -0
- data/test/fixtures/multipart/empty +10 -0
- data/test/fixtures/multipart/hello.txt +1 -0
- data/test/fixtures/multipart/large_text_file +10 -0
- data/test/fixtures/multipart/mixed_files +0 -0
- data/test/fixtures/multipart/mona_lisa.jpg +0 -0
- data/test/fixtures/multipart/none +9 -0
- data/test/fixtures/multipart/single_parameter +5 -0
- data/test/fixtures/multipart/text_file +10 -0
- data/test/fixtures/override/test/hello_world.erb +1 -0
- data/test/fixtures/override2/layouts/test/sub.erb +1 -0
- data/test/fixtures/post_test/layouts/post.html.erb +1 -0
- data/test/fixtures/post_test/layouts/super_post.iphone.erb +1 -0
- data/test/fixtures/post_test/post/index.html.erb +1 -0
- data/test/fixtures/post_test/post/index.iphone.erb +1 -0
- data/test/fixtures/post_test/super_post/index.html.erb +1 -0
- data/test/fixtures/post_test/super_post/index.iphone.erb +1 -0
- data/test/fixtures/project.rb +3 -0
- data/test/fixtures/projects/_project.erb +1 -0
- data/test/fixtures/projects.yml +7 -0
- data/test/fixtures/public/404.html +1 -0
- data/test/fixtures/public/500.da.html +1 -0
- data/test/fixtures/public/500.html +1 -0
- data/test/fixtures/public/absolute/test.css +23 -0
- data/test/fixtures/public/absolute/test.js +63 -0
- data/test/fixtures/public/images/rails.png +0 -0
- data/test/fixtures/public/javascripts/application.js +1 -0
- data/test/fixtures/public/javascripts/bank.js +1 -0
- data/test/fixtures/public/javascripts/controls.js +1 -0
- data/test/fixtures/public/javascripts/dragdrop.js +1 -0
- data/test/fixtures/public/javascripts/effects.js +1 -0
- data/test/fixtures/public/javascripts/prototype.js +1 -0
- data/test/fixtures/public/javascripts/robber.js +1 -0
- data/test/fixtures/public/javascripts/subdir/subdir.js +1 -0
- data/test/fixtures/public/javascripts/version.1.0.js +1 -0
- data/test/fixtures/public/stylesheets/bank.css +1 -0
- data/test/fixtures/public/stylesheets/robber.css +1 -0
- data/test/fixtures/public/stylesheets/subdir/subdir.css +1 -0
- data/test/fixtures/public/stylesheets/version.1.0.css +1 -0
- data/test/fixtures/quiz/questions/_question.html.erb +1 -0
- data/test/fixtures/replies/_reply.erb +1 -0
- data/test/fixtures/replies.yml +15 -0
- data/test/fixtures/reply.rb +7 -0
- data/test/fixtures/respond_to/all_types_with_layout.html.erb +1 -0
- data/test/fixtures/respond_to/all_types_with_layout.js.rjs +1 -0
- data/test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb +1 -0
- data/test/fixtures/respond_to/iphone_with_html_response_type.html.erb +1 -0
- data/test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb +1 -0
- data/test/fixtures/respond_to/layouts/missing.html.erb +1 -0
- data/test/fixtures/respond_to/layouts/standard.html.erb +1 -0
- data/test/fixtures/respond_to/layouts/standard.iphone.erb +1 -0
- data/test/fixtures/respond_to/using_defaults.html.erb +1 -0
- data/test/fixtures/respond_to/using_defaults.js.rjs +1 -0
- data/test/fixtures/respond_to/using_defaults.xml.builder +1 -0
- data/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +1 -0
- data/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +1 -0
- data/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +1 -0
- data/test/fixtures/scope/test/modgreet.erb +1 -0
- data/test/fixtures/shared.html.erb +1 -0
- data/test/fixtures/symlink_parent/symlinked_layout.erb +5 -0
- data/test/fixtures/test/_counter.html.erb +1 -0
- data/test/fixtures/test/_customer.erb +1 -0
- data/test/fixtures/test/_customer_counter.erb +1 -0
- data/test/fixtures/test/_customer_greeting.erb +1 -0
- data/test/fixtures/test/_customer_with_var.erb +1 -0
- data/test/fixtures/test/_form.erb +1 -0
- data/test/fixtures/test/_from_helper.erb +1 -0
- data/test/fixtures/test/_hash_greeting.erb +1 -0
- data/test/fixtures/test/_hash_object.erb +2 -0
- data/test/fixtures/test/_hello.builder +1 -0
- data/test/fixtures/test/_labelling_form.erb +1 -0
- data/test/fixtures/test/_layout_for_block_with_args.html.erb +3 -0
- data/test/fixtures/test/_layout_for_partial.html.erb +3 -0
- data/test/fixtures/test/_local_inspector.html.erb +1 -0
- data/test/fixtures/test/_one.html.erb +1 -0
- data/test/fixtures/test/_partial.erb +1 -0
- data/test/fixtures/test/_partial.html.erb +1 -0
- data/test/fixtures/test/_partial.js.erb +1 -0
- data/test/fixtures/test/_partial_for_use_in_layout.html.erb +1 -0
- data/test/fixtures/test/_partial_only.erb +1 -0
- data/test/fixtures/test/_partial_with_only_html_version.html.erb +1 -0
- data/test/fixtures/test/_person.erb +2 -0
- data/test/fixtures/test/_raise.html.erb +1 -0
- data/test/fixtures/test/_two.html.erb +1 -0
- data/test/fixtures/test/action_talk_to_layout.erb +2 -0
- data/test/fixtures/test/calling_partial_with_layout.html.erb +1 -0
- data/test/fixtures/test/capturing.erb +4 -0
- data/test/fixtures/test/content_for.erb +2 -0
- data/test/fixtures/test/content_for_concatenated.erb +3 -0
- data/test/fixtures/test/content_for_with_parameter.erb +2 -0
- data/test/fixtures/test/delete_with_js.rjs +2 -0
- data/test/fixtures/test/dont_pick_me +1 -0
- data/test/fixtures/test/dot.directory/render_file_with_ivar.erb +1 -0
- data/test/fixtures/test/enum_rjs_test.rjs +6 -0
- data/test/fixtures/test/formatted_html_erb.html.erb +1 -0
- data/test/fixtures/test/formatted_xml_erb.builder +1 -0
- data/test/fixtures/test/formatted_xml_erb.html.erb +1 -0
- data/test/fixtures/test/formatted_xml_erb.xml.erb +1 -0
- data/test/fixtures/test/greeting.erb +1 -0
- data/test/fixtures/test/greeting.js.rjs +1 -0
- data/test/fixtures/test/hello.builder +4 -0
- data/test/fixtures/test/hello_world.da.html.erb +1 -0
- data/test/fixtures/test/hello_world.erb +1 -0
- data/test/fixtures/test/hello_world.erb~ +1 -0
- data/test/fixtures/test/hello_world.pt-BR.html.erb +1 -0
- data/test/fixtures/test/hello_world_container.builder +3 -0
- data/test/fixtures/test/hello_world_from_rxml.builder +4 -0
- data/test/fixtures/test/hello_world_with_layout_false.erb +1 -0
- data/test/fixtures/test/hello_xml_world.builder +11 -0
- data/test/fixtures/test/hyphen-ated.erb +1 -0
- data/test/fixtures/test/implicit_content_type.atom.builder +2 -0
- data/test/fixtures/test/list.erb +1 -0
- data/test/fixtures/test/malformed/malformed.en.html.erb~ +1 -0
- data/test/fixtures/test/malformed/malformed.erb~ +1 -0
- data/test/fixtures/test/malformed/malformed.html.erb~ +1 -0
- data/test/fixtures/test/nested_layout.erb +3 -0
- data/test/fixtures/test/non_erb_block_content_for.builder +4 -0
- data/test/fixtures/test/potential_conflicts.erb +4 -0
- data/test/fixtures/test/render_explicit_html_template.js.rjs +1 -0
- data/test/fixtures/test/render_file_from_template.html.erb +1 -0
- data/test/fixtures/test/render_file_with_ivar.erb +1 -0
- data/test/fixtures/test/render_file_with_locals.erb +1 -0
- data/test/fixtures/test/render_implicit_html_template.js.rjs +1 -0
- data/test/fixtures/test/render_implicit_html_template_from_xhr_request.da.html.erb +1 -0
- data/test/fixtures/test/render_implicit_html_template_from_xhr_request.html.erb +1 -0
- data/test/fixtures/test/render_implicit_js_template_without_layout.js.erb +1 -0
- data/test/fixtures/test/render_to_string_test.erb +1 -0
- data/test/fixtures/test/sub_template_raise.html.erb +1 -0
- data/test/fixtures/test/template.erb +1 -0
- data/test/fixtures/test/update_element_with_capture.erb +9 -0
- data/test/fixtures/test/using_layout_around_block.html.erb +1 -0
- data/test/fixtures/test/using_layout_around_block_with_args.html.erb +1 -0
- data/test/fixtures/test/utf8.html.erb +2 -0
- data/test/fixtures/topic.rb +3 -0
- data/test/fixtures/topics/_topic.html.erb +1 -0
- data/test/fixtures/topics.yml +22 -0
- data/test/template/active_record_helper_i18n_test.rb +44 -0
- data/test/template/active_record_helper_test.rb +302 -0
- data/test/template/asset_tag_helper_test.rb +771 -0
- data/test/template/atom_feed_helper_test.rb +315 -0
- data/test/template/benchmark_helper_test.rb +86 -0
- data/test/template/compiled_templates_test.rb +204 -0
- data/test/template/date_helper_i18n_test.rb +121 -0
- data/test/template/date_helper_test.rb +2485 -0
- data/test/template/erb_util_test.rb +24 -0
- data/test/template/form_helper_test.rb +1393 -0
- data/test/template/form_options_helper_i18n_test.rb +27 -0
- data/test/template/form_options_helper_test.rb +807 -0
- data/test/template/form_tag_helper_test.rb +344 -0
- data/test/template/javascript_helper_test.rb +106 -0
- data/test/template/number_helper_i18n_test.rb +69 -0
- data/test/template/number_helper_test.rb +132 -0
- data/test/template/prototype_helper_test.rb +639 -0
- data/test/template/raw_output_helper_test.rb +21 -0
- data/test/template/record_tag_helper_test.rb +58 -0
- data/test/template/render_test.rb +290 -0
- data/test/template/sanitize_helper_test.rb +57 -0
- data/test/template/scriptaculous_helper_test.rb +90 -0
- data/test/template/tag_helper_test.rb +98 -0
- data/test/template/template_test.rb +32 -0
- data/test/template/test_test.rb +54 -0
- data/test/template/text_helper_test.rb +543 -0
- data/test/template/translation_helper_test.rb +32 -0
- data/test/template/url_helper_test.rb +622 -0
- data/test/testing_sandbox.rb +15 -0
- data/test/view/safe_buffer_test.rb +36 -0
- data/test/view/test_case_test.rb +176 -0
- metadata +531 -0
|
@@ -0,0 +1,807 @@
|
|
|
1
|
+
require 'abstract_unit'
|
|
2
|
+
require 'tzinfo'
|
|
3
|
+
|
|
4
|
+
TZInfo::Timezone.cattr_reader :loaded_zones
|
|
5
|
+
|
|
6
|
+
class FormOptionsHelperTest < ActionView::TestCase
|
|
7
|
+
tests ActionView::Helpers::FormOptionsHelper
|
|
8
|
+
|
|
9
|
+
silence_warnings do
|
|
10
|
+
Post = Struct.new('Post', :title, :author_name, :body, :secret, :written_on, :category, :origin)
|
|
11
|
+
Continent = Struct.new('Continent', :continent_name, :countries)
|
|
12
|
+
Country = Struct.new('Country', :country_id, :country_name)
|
|
13
|
+
Firm = Struct.new('Firm', :time_zone)
|
|
14
|
+
Album = Struct.new('Album', :id, :title, :genre)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def setup
|
|
18
|
+
@fake_timezones = %w(A B C D E).inject([]) do |zones, id|
|
|
19
|
+
tz = TZInfo::Timezone.loaded_zones[id] = stub(:name => id, :to_s => id)
|
|
20
|
+
ActiveSupport::TimeZone.stubs(:[]).with(id).returns(tz)
|
|
21
|
+
zones << tz
|
|
22
|
+
end
|
|
23
|
+
ActiveSupport::TimeZone.stubs(:all).returns(@fake_timezones)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_collection_options
|
|
27
|
+
assert_dom_equal(
|
|
28
|
+
"<option value=\"<Abe>\"><Abe> went home</option>\n<option value=\"Babe\">Babe went home</option>\n<option value=\"Cabe\">Cabe went home</option>",
|
|
29
|
+
options_from_collection_for_select(dummy_posts, "author_name", "title")
|
|
30
|
+
)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def test_collection_options_with_preselected_value
|
|
35
|
+
assert_dom_equal(
|
|
36
|
+
"<option value=\"<Abe>\"><Abe> went home</option>\n<option value=\"Babe\" selected=\"selected\">Babe went home</option>\n<option value=\"Cabe\">Cabe went home</option>",
|
|
37
|
+
options_from_collection_for_select(dummy_posts, "author_name", "title", "Babe")
|
|
38
|
+
)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_collection_options_with_preselected_value_array
|
|
42
|
+
assert_dom_equal(
|
|
43
|
+
"<option value=\"<Abe>\"><Abe> went home</option>\n<option value=\"Babe\" selected=\"selected\">Babe went home</option>\n<option value=\"Cabe\" selected=\"selected\">Cabe went home</option>",
|
|
44
|
+
options_from_collection_for_select(dummy_posts, "author_name", "title", [ "Babe", "Cabe" ])
|
|
45
|
+
)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_collection_options_with_proc_for_selected
|
|
49
|
+
assert_dom_equal(
|
|
50
|
+
"<option value=\"<Abe>\"><Abe> went home</option>\n<option value=\"Babe\" selected=\"selected\">Babe went home</option>\n<option value=\"Cabe\">Cabe went home</option>",
|
|
51
|
+
options_from_collection_for_select(dummy_posts, "author_name", "title", lambda{|p| p.author_name == 'Babe' })
|
|
52
|
+
)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def test_collection_options_with_disabled_value
|
|
56
|
+
assert_dom_equal(
|
|
57
|
+
"<option value=\"<Abe>\"><Abe> went home</option>\n<option value=\"Babe\" disabled=\"disabled\">Babe went home</option>\n<option value=\"Cabe\">Cabe went home</option>",
|
|
58
|
+
options_from_collection_for_select(dummy_posts, "author_name", "title", :disabled => "Babe")
|
|
59
|
+
)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def test_collection_options_with_disabled_array
|
|
63
|
+
assert_dom_equal(
|
|
64
|
+
"<option value=\"<Abe>\"><Abe> went home</option>\n<option value=\"Babe\" disabled=\"disabled\">Babe went home</option>\n<option value=\"Cabe\" disabled=\"disabled\">Cabe went home</option>",
|
|
65
|
+
options_from_collection_for_select(dummy_posts, "author_name", "title", :disabled => [ "Babe", "Cabe" ])
|
|
66
|
+
)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def test_collection_options_with_preselected_and_disabled_value
|
|
70
|
+
assert_dom_equal(
|
|
71
|
+
"<option value=\"<Abe>\"><Abe> went home</option>\n<option value=\"Babe\" disabled=\"disabled\">Babe went home</option>\n<option value=\"Cabe\" selected=\"selected\">Cabe went home</option>",
|
|
72
|
+
options_from_collection_for_select(dummy_posts, "author_name", "title", :selected => "Cabe", :disabled => "Babe")
|
|
73
|
+
)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def test_collection_options_with_proc_for_disabled
|
|
77
|
+
assert_dom_equal(
|
|
78
|
+
"<option value=\"<Abe>\"><Abe> went home</option>\n<option value=\"Babe\" disabled=\"disabled\">Babe went home</option>\n<option value=\"Cabe\" disabled=\"disabled\">Cabe went home</option>",
|
|
79
|
+
options_from_collection_for_select(dummy_posts, "author_name", "title", :disabled => lambda{|p| %w(Babe Cabe).include? p.author_name })
|
|
80
|
+
)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def test_string_options_for_select
|
|
84
|
+
options = "<option value=\"Denmark\">Denmark</option><option value=\"USA\">USA</option><option value=\"Sweden\">Sweden</option>"
|
|
85
|
+
assert_dom_equal(
|
|
86
|
+
options,
|
|
87
|
+
options_for_select(options)
|
|
88
|
+
)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def test_array_options_for_select
|
|
92
|
+
assert_dom_equal(
|
|
93
|
+
"<option value=\"<Denmark>\"><Denmark></option>\n<option value=\"USA\">USA</option>\n<option value=\"Sweden\">Sweden</option>",
|
|
94
|
+
options_for_select([ "<Denmark>", "USA", "Sweden" ])
|
|
95
|
+
)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def test_array_options_for_select_with_selection
|
|
99
|
+
assert_dom_equal(
|
|
100
|
+
"<option value=\"Denmark\">Denmark</option>\n<option value=\"<USA>\" selected=\"selected\"><USA></option>\n<option value=\"Sweden\">Sweden</option>",
|
|
101
|
+
options_for_select([ "Denmark", "<USA>", "Sweden" ], "<USA>")
|
|
102
|
+
)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def test_array_options_for_select_with_selection_array
|
|
106
|
+
assert_dom_equal(
|
|
107
|
+
"<option value=\"Denmark\">Denmark</option>\n<option value=\"<USA>\" selected=\"selected\"><USA></option>\n<option value=\"Sweden\" selected=\"selected\">Sweden</option>",
|
|
108
|
+
options_for_select([ "Denmark", "<USA>", "Sweden" ], [ "<USA>", "Sweden" ])
|
|
109
|
+
)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def test_array_options_for_select_with_disabled_value
|
|
113
|
+
assert_dom_equal(
|
|
114
|
+
"<option value=\"Denmark\">Denmark</option>\n<option value=\"<USA>\" disabled=\"disabled\"><USA></option>\n<option value=\"Sweden\">Sweden</option>",
|
|
115
|
+
options_for_select([ "Denmark", "<USA>", "Sweden" ], :disabled => "<USA>")
|
|
116
|
+
)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def test_array_options_for_select_with_disabled_array
|
|
120
|
+
assert_dom_equal(
|
|
121
|
+
"<option value=\"Denmark\">Denmark</option>\n<option value=\"<USA>\" disabled=\"disabled\"><USA></option>\n<option value=\"Sweden\" disabled=\"disabled\">Sweden</option>",
|
|
122
|
+
options_for_select([ "Denmark", "<USA>", "Sweden" ], :disabled => ["<USA>", "Sweden"])
|
|
123
|
+
)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def test_array_options_for_select_with_selection_and_disabled_value
|
|
127
|
+
assert_dom_equal(
|
|
128
|
+
"<option value=\"Denmark\" selected=\"selected\">Denmark</option>\n<option value=\"<USA>\" disabled=\"disabled\"><USA></option>\n<option value=\"Sweden\">Sweden</option>",
|
|
129
|
+
options_for_select([ "Denmark", "<USA>", "Sweden" ], :selected => "Denmark", :disabled => "<USA>")
|
|
130
|
+
)
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def test_array_options_for_string_include_in_other_string_bug_fix
|
|
134
|
+
assert_dom_equal(
|
|
135
|
+
"<option value=\"ruby\">ruby</option>\n<option value=\"rubyonrails\" selected=\"selected\">rubyonrails</option>",
|
|
136
|
+
options_for_select([ "ruby", "rubyonrails" ], "rubyonrails")
|
|
137
|
+
)
|
|
138
|
+
assert_dom_equal(
|
|
139
|
+
"<option value=\"ruby\" selected=\"selected\">ruby</option>\n<option value=\"rubyonrails\">rubyonrails</option>",
|
|
140
|
+
options_for_select([ "ruby", "rubyonrails" ], "ruby")
|
|
141
|
+
)
|
|
142
|
+
assert_dom_equal(
|
|
143
|
+
%(<option value="ruby" selected="selected">ruby</option>\n<option value="rubyonrails">rubyonrails</option>\n<option value=""></option>),
|
|
144
|
+
options_for_select([ "ruby", "rubyonrails", nil ], "ruby")
|
|
145
|
+
)
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def test_hash_options_for_select
|
|
149
|
+
assert_dom_equal(
|
|
150
|
+
"<option value=\"<Kroner>\"><DKR></option>\n<option value=\"Dollar\">$</option>",
|
|
151
|
+
options_for_select("$" => "Dollar", "<DKR>" => "<Kroner>").split("\n").sort.join("\n")
|
|
152
|
+
)
|
|
153
|
+
assert_dom_equal(
|
|
154
|
+
"<option value=\"<Kroner>\"><DKR></option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
|
|
155
|
+
options_for_select({ "$" => "Dollar", "<DKR>" => "<Kroner>" }, "Dollar").split("\n").sort.join("\n")
|
|
156
|
+
)
|
|
157
|
+
assert_dom_equal(
|
|
158
|
+
"<option value=\"<Kroner>\" selected=\"selected\"><DKR></option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
|
|
159
|
+
options_for_select({ "$" => "Dollar", "<DKR>" => "<Kroner>" }, [ "Dollar", "<Kroner>" ]).split("\n").sort.join("\n")
|
|
160
|
+
)
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
def test_ducktyped_options_for_select
|
|
164
|
+
quack = Struct.new(:first, :last)
|
|
165
|
+
assert_dom_equal(
|
|
166
|
+
"<option value=\"<Kroner>\"><DKR></option>\n<option value=\"Dollar\">$</option>",
|
|
167
|
+
options_for_select([quack.new("<DKR>", "<Kroner>"), quack.new("$", "Dollar")])
|
|
168
|
+
)
|
|
169
|
+
assert_dom_equal(
|
|
170
|
+
"<option value=\"<Kroner>\"><DKR></option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
|
|
171
|
+
options_for_select([quack.new("<DKR>", "<Kroner>"), quack.new("$", "Dollar")], "Dollar")
|
|
172
|
+
)
|
|
173
|
+
assert_dom_equal(
|
|
174
|
+
"<option value=\"<Kroner>\" selected=\"selected\"><DKR></option>\n<option value=\"Dollar\" selected=\"selected\">$</option>",
|
|
175
|
+
options_for_select([quack.new("<DKR>", "<Kroner>"), quack.new("$", "Dollar")], ["Dollar", "<Kroner>"])
|
|
176
|
+
)
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
def test_option_groups_from_collection_for_select
|
|
180
|
+
@continents = [
|
|
181
|
+
Continent.new("<Africa>", [Country.new("<sa>", "<South Africa>"), Country.new("so", "Somalia")] ),
|
|
182
|
+
Continent.new("Europe", [Country.new("dk", "Denmark"), Country.new("ie", "Ireland")] )
|
|
183
|
+
]
|
|
184
|
+
|
|
185
|
+
assert_dom_equal(
|
|
186
|
+
"<optgroup label=\"<Africa>\"><option value=\"<sa>\"><South Africa></option>\n<option value=\"so\">Somalia</option></optgroup><optgroup label=\"Europe\"><option value=\"dk\" selected=\"selected\">Denmark</option>\n<option value=\"ie\">Ireland</option></optgroup>",
|
|
187
|
+
option_groups_from_collection_for_select(@continents, "countries", "continent_name", "country_id", "country_name", "dk")
|
|
188
|
+
)
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
def test_grouped_options_for_select_with_array
|
|
192
|
+
assert_dom_equal(
|
|
193
|
+
"<optgroup label=\"North America\"><option value=\"US\">United States</option>\n<option value=\"Canada\">Canada</option></optgroup><optgroup label=\"Europe\"><option value=\"GB\">Great Britain</option>\n<option value=\"Germany\">Germany</option></optgroup>",
|
|
194
|
+
grouped_options_for_select([
|
|
195
|
+
["North America",
|
|
196
|
+
[['United States','US'],"Canada"]],
|
|
197
|
+
["Europe",
|
|
198
|
+
[["Great Britain","GB"], "Germany"]]
|
|
199
|
+
])
|
|
200
|
+
)
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
def test_grouped_options_for_select_with_selected_and_prompt
|
|
204
|
+
assert_dom_equal(
|
|
205
|
+
"<option value=\"\">Choose a product...</option><optgroup label=\"Hats\"><option value=\"Baseball Cap\">Baseball Cap</option>\n<option selected=\"selected\" value=\"Cowboy Hat\">Cowboy Hat</option></optgroup>",
|
|
206
|
+
grouped_options_for_select([["Hats", ["Baseball Cap","Cowboy Hat"]]], "Cowboy Hat", "Choose a product...")
|
|
207
|
+
)
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
def test_optgroups_with_with_options_with_hash
|
|
211
|
+
assert_dom_equal(
|
|
212
|
+
"<optgroup label=\"Europe\"><option value=\"Denmark\">Denmark</option>\n<option value=\"Germany\">Germany</option></optgroup><optgroup label=\"North America\"><option value=\"United States\">United States</option>\n<option value=\"Canada\">Canada</option></optgroup>",
|
|
213
|
+
grouped_options_for_select({'North America' => ['United States','Canada'], 'Europe' => ['Denmark','Germany']})
|
|
214
|
+
)
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
def test_time_zone_options_no_parms
|
|
218
|
+
opts = time_zone_options_for_select
|
|
219
|
+
assert_dom_equal "<option value=\"A\">A</option>\n" +
|
|
220
|
+
"<option value=\"B\">B</option>\n" +
|
|
221
|
+
"<option value=\"C\">C</option>\n" +
|
|
222
|
+
"<option value=\"D\">D</option>\n" +
|
|
223
|
+
"<option value=\"E\">E</option>",
|
|
224
|
+
opts
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
def test_time_zone_options_with_selected
|
|
228
|
+
opts = time_zone_options_for_select( "D" )
|
|
229
|
+
assert_dom_equal "<option value=\"A\">A</option>\n" +
|
|
230
|
+
"<option value=\"B\">B</option>\n" +
|
|
231
|
+
"<option value=\"C\">C</option>\n" +
|
|
232
|
+
"<option value=\"D\" selected=\"selected\">D</option>\n" +
|
|
233
|
+
"<option value=\"E\">E</option>",
|
|
234
|
+
opts
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
def test_time_zone_options_with_unknown_selected
|
|
238
|
+
opts = time_zone_options_for_select( "K" )
|
|
239
|
+
assert_dom_equal "<option value=\"A\">A</option>\n" +
|
|
240
|
+
"<option value=\"B\">B</option>\n" +
|
|
241
|
+
"<option value=\"C\">C</option>\n" +
|
|
242
|
+
"<option value=\"D\">D</option>\n" +
|
|
243
|
+
"<option value=\"E\">E</option>",
|
|
244
|
+
opts
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
def test_time_zone_options_with_priority_zones
|
|
248
|
+
zones = [ ActiveSupport::TimeZone.new( "B" ), ActiveSupport::TimeZone.new( "E" ) ]
|
|
249
|
+
opts = time_zone_options_for_select( nil, zones )
|
|
250
|
+
assert_dom_equal "<option value=\"B\">B</option>\n" +
|
|
251
|
+
"<option value=\"E\">E</option>" +
|
|
252
|
+
"<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
|
|
253
|
+
"<option value=\"A\">A</option>\n" +
|
|
254
|
+
"<option value=\"C\">C</option>\n" +
|
|
255
|
+
"<option value=\"D\">D</option>",
|
|
256
|
+
opts
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
def test_time_zone_options_with_selected_priority_zones
|
|
260
|
+
zones = [ ActiveSupport::TimeZone.new( "B" ), ActiveSupport::TimeZone.new( "E" ) ]
|
|
261
|
+
opts = time_zone_options_for_select( "E", zones )
|
|
262
|
+
assert_dom_equal "<option value=\"B\">B</option>\n" +
|
|
263
|
+
"<option value=\"E\" selected=\"selected\">E</option>" +
|
|
264
|
+
"<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
|
|
265
|
+
"<option value=\"A\">A</option>\n" +
|
|
266
|
+
"<option value=\"C\">C</option>\n" +
|
|
267
|
+
"<option value=\"D\">D</option>",
|
|
268
|
+
opts
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
def test_time_zone_options_with_unselected_priority_zones
|
|
272
|
+
zones = [ ActiveSupport::TimeZone.new( "B" ), ActiveSupport::TimeZone.new( "E" ) ]
|
|
273
|
+
opts = time_zone_options_for_select( "C", zones )
|
|
274
|
+
assert_dom_equal "<option value=\"B\">B</option>\n" +
|
|
275
|
+
"<option value=\"E\">E</option>" +
|
|
276
|
+
"<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
|
|
277
|
+
"<option value=\"A\">A</option>\n" +
|
|
278
|
+
"<option value=\"C\" selected=\"selected\">C</option>\n" +
|
|
279
|
+
"<option value=\"D\">D</option>",
|
|
280
|
+
opts
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
def test_select
|
|
284
|
+
@post = Post.new
|
|
285
|
+
@post.category = "<mus>"
|
|
286
|
+
assert_dom_equal(
|
|
287
|
+
"<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\">hest</option></select>",
|
|
288
|
+
select("post", "category", %w( abe <mus> hest))
|
|
289
|
+
)
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
def test_select_under_fields_for
|
|
293
|
+
@post = Post.new
|
|
294
|
+
@post.category = "<mus>"
|
|
295
|
+
|
|
296
|
+
fields_for :post, @post do |f|
|
|
297
|
+
concat f.select(:category, %w( abe <mus> hest))
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
assert_dom_equal(
|
|
301
|
+
"<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\">hest</option></select>",
|
|
302
|
+
output_buffer
|
|
303
|
+
)
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
def test_select_under_fields_for_with_index
|
|
307
|
+
@post = Post.new
|
|
308
|
+
@post.category = "<mus>"
|
|
309
|
+
|
|
310
|
+
fields_for :post, @post, :index => 108 do |f|
|
|
311
|
+
concat f.select(:category, %w( abe <mus> hest))
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
assert_dom_equal(
|
|
315
|
+
"<select id=\"post_108_category\" name=\"post[108][category]\"><option value=\"abe\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\">hest</option></select>",
|
|
316
|
+
output_buffer
|
|
317
|
+
)
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
def test_select_under_fields_for_with_auto_index
|
|
321
|
+
@post = Post.new
|
|
322
|
+
@post.category = "<mus>"
|
|
323
|
+
def @post.to_param; 108; end
|
|
324
|
+
|
|
325
|
+
fields_for "post[]", @post do |f|
|
|
326
|
+
concat f.select(:category, %w( abe <mus> hest))
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
assert_dom_equal(
|
|
330
|
+
"<select id=\"post_108_category\" name=\"post[108][category]\"><option value=\"abe\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\">hest</option></select>",
|
|
331
|
+
output_buffer
|
|
332
|
+
)
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
def test_select_under_fields_for_with_string_and_given_prompt
|
|
336
|
+
@post = Post.new
|
|
337
|
+
options = "<option value=\"abe\">abe</option><option value=\"mus\">mus</option><option value=\"hest\">hest</option>"
|
|
338
|
+
|
|
339
|
+
fields_for :post, @post do |f|
|
|
340
|
+
concat f.select(:category, options, :prompt => 'The prompt')
|
|
341
|
+
end
|
|
342
|
+
|
|
343
|
+
assert_dom_equal(
|
|
344
|
+
"<select id=\"post_category\" name=\"post[category]\"><option value=\"\">The prompt</option>\n#{options}</select>",
|
|
345
|
+
output_buffer
|
|
346
|
+
)
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
def test_select_with_blank
|
|
350
|
+
@post = Post.new
|
|
351
|
+
@post.category = "<mus>"
|
|
352
|
+
assert_dom_equal(
|
|
353
|
+
"<select id=\"post_category\" name=\"post[category]\"><option value=\"\"></option>\n<option value=\"abe\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\">hest</option></select>",
|
|
354
|
+
select("post", "category", %w( abe <mus> hest), :include_blank => true)
|
|
355
|
+
)
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
def test_select_with_blank_as_string
|
|
359
|
+
@post = Post.new
|
|
360
|
+
@post.category = "<mus>"
|
|
361
|
+
assert_dom_equal(
|
|
362
|
+
"<select id=\"post_category\" name=\"post[category]\"><option value=\"\">None</option>\n<option value=\"abe\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\">hest</option></select>",
|
|
363
|
+
select("post", "category", %w( abe <mus> hest), :include_blank => 'None')
|
|
364
|
+
)
|
|
365
|
+
end
|
|
366
|
+
|
|
367
|
+
def test_select_with_default_prompt
|
|
368
|
+
@post = Post.new
|
|
369
|
+
@post.category = ""
|
|
370
|
+
assert_dom_equal(
|
|
371
|
+
"<select id=\"post_category\" name=\"post[category]\"><option value=\"\">Please select</option>\n<option value=\"abe\">abe</option>\n<option value=\"<mus>\"><mus></option>\n<option value=\"hest\">hest</option></select>",
|
|
372
|
+
select("post", "category", %w( abe <mus> hest), :prompt => true)
|
|
373
|
+
)
|
|
374
|
+
end
|
|
375
|
+
|
|
376
|
+
def test_select_no_prompt_when_select_has_value
|
|
377
|
+
@post = Post.new
|
|
378
|
+
@post.category = "<mus>"
|
|
379
|
+
assert_dom_equal(
|
|
380
|
+
"<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\">hest</option></select>",
|
|
381
|
+
select("post", "category", %w( abe <mus> hest), :prompt => true)
|
|
382
|
+
)
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
def test_select_with_given_prompt
|
|
386
|
+
@post = Post.new
|
|
387
|
+
@post.category = ""
|
|
388
|
+
assert_dom_equal(
|
|
389
|
+
"<select id=\"post_category\" name=\"post[category]\"><option value=\"\">The prompt</option>\n<option value=\"abe\">abe</option>\n<option value=\"<mus>\"><mus></option>\n<option value=\"hest\">hest</option></select>",
|
|
390
|
+
select("post", "category", %w( abe <mus> hest), :prompt => 'The prompt')
|
|
391
|
+
)
|
|
392
|
+
end
|
|
393
|
+
|
|
394
|
+
def test_select_with_prompt_and_blank
|
|
395
|
+
@post = Post.new
|
|
396
|
+
@post.category = ""
|
|
397
|
+
assert_dom_equal(
|
|
398
|
+
"<select id=\"post_category\" name=\"post[category]\"><option value=\"\">Please select</option>\n<option value=\"\"></option>\n<option value=\"abe\">abe</option>\n<option value=\"<mus>\"><mus></option>\n<option value=\"hest\">hest</option></select>",
|
|
399
|
+
select("post", "category", %w( abe <mus> hest), :prompt => true, :include_blank => true)
|
|
400
|
+
)
|
|
401
|
+
end
|
|
402
|
+
|
|
403
|
+
def test_select_with_selected_value
|
|
404
|
+
@post = Post.new
|
|
405
|
+
@post.category = "<mus>"
|
|
406
|
+
assert_dom_equal(
|
|
407
|
+
"<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\" selected=\"selected\">abe</option>\n<option value=\"<mus>\"><mus></option>\n<option value=\"hest\">hest</option></select>",
|
|
408
|
+
select("post", "category", %w( abe <mus> hest ), :selected => 'abe')
|
|
409
|
+
)
|
|
410
|
+
end
|
|
411
|
+
|
|
412
|
+
def test_select_with_index_option
|
|
413
|
+
@album = Album.new
|
|
414
|
+
@album.id = 1
|
|
415
|
+
|
|
416
|
+
expected = "<select id=\"album__genre\" name=\"album[][genre]\"><option value=\"rap\">rap</option>\n<option value=\"rock\">rock</option>\n<option value=\"country\">country</option></select>"
|
|
417
|
+
|
|
418
|
+
assert_dom_equal(
|
|
419
|
+
expected,
|
|
420
|
+
select("album[]", "genre", %w[rap rock country], {}, { :index => nil })
|
|
421
|
+
)
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
def test_select_with_selected_nil
|
|
425
|
+
@post = Post.new
|
|
426
|
+
@post.category = "<mus>"
|
|
427
|
+
assert_dom_equal(
|
|
428
|
+
"<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\">abe</option>\n<option value=\"<mus>\"><mus></option>\n<option value=\"hest\">hest</option></select>",
|
|
429
|
+
select("post", "category", %w( abe <mus> hest ), :selected => nil)
|
|
430
|
+
)
|
|
431
|
+
end
|
|
432
|
+
|
|
433
|
+
def test_select_with_disabled_value
|
|
434
|
+
@post = Post.new
|
|
435
|
+
@post.category = "<mus>"
|
|
436
|
+
assert_dom_equal(
|
|
437
|
+
"<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\" disabled=\"disabled\">hest</option></select>",
|
|
438
|
+
select("post", "category", %w( abe <mus> hest ), :disabled => 'hest')
|
|
439
|
+
)
|
|
440
|
+
end
|
|
441
|
+
|
|
442
|
+
def test_select_with_disabled_array
|
|
443
|
+
@post = Post.new
|
|
444
|
+
@post.category = "<mus>"
|
|
445
|
+
assert_dom_equal(
|
|
446
|
+
"<select id=\"post_category\" name=\"post[category]\"><option value=\"abe\" disabled=\"disabled\">abe</option>\n<option value=\"<mus>\" selected=\"selected\"><mus></option>\n<option value=\"hest\" disabled=\"disabled\">hest</option></select>",
|
|
447
|
+
select("post", "category", %w( abe <mus> hest ), :disabled => ['hest', 'abe'])
|
|
448
|
+
)
|
|
449
|
+
end
|
|
450
|
+
|
|
451
|
+
def test_collection_select
|
|
452
|
+
@post = Post.new
|
|
453
|
+
@post.author_name = "Babe"
|
|
454
|
+
|
|
455
|
+
assert_dom_equal(
|
|
456
|
+
"<select id=\"post_author_name\" name=\"post[author_name]\"><option value=\"<Abe>\"><Abe></option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>",
|
|
457
|
+
collection_select("post", "author_name", dummy_posts, "author_name", "author_name")
|
|
458
|
+
)
|
|
459
|
+
end
|
|
460
|
+
|
|
461
|
+
def test_collection_select_under_fields_for
|
|
462
|
+
@post = Post.new
|
|
463
|
+
@post.author_name = "Babe"
|
|
464
|
+
|
|
465
|
+
fields_for :post, @post do |f|
|
|
466
|
+
concat f.collection_select(:author_name, dummy_posts, :author_name, :author_name)
|
|
467
|
+
end
|
|
468
|
+
|
|
469
|
+
assert_dom_equal(
|
|
470
|
+
"<select id=\"post_author_name\" name=\"post[author_name]\"><option value=\"<Abe>\"><Abe></option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>",
|
|
471
|
+
output_buffer
|
|
472
|
+
)
|
|
473
|
+
end
|
|
474
|
+
|
|
475
|
+
def test_collection_select_under_fields_for_with_index
|
|
476
|
+
@post = Post.new
|
|
477
|
+
@post.author_name = "Babe"
|
|
478
|
+
|
|
479
|
+
fields_for :post, @post, :index => 815 do |f|
|
|
480
|
+
concat f.collection_select(:author_name, dummy_posts, :author_name, :author_name)
|
|
481
|
+
end
|
|
482
|
+
|
|
483
|
+
assert_dom_equal(
|
|
484
|
+
"<select id=\"post_815_author_name\" name=\"post[815][author_name]\"><option value=\"<Abe>\"><Abe></option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>",
|
|
485
|
+
output_buffer
|
|
486
|
+
)
|
|
487
|
+
end
|
|
488
|
+
|
|
489
|
+
def test_collection_select_under_fields_for_with_auto_index
|
|
490
|
+
@post = Post.new
|
|
491
|
+
@post.author_name = "Babe"
|
|
492
|
+
def @post.to_param; 815; end
|
|
493
|
+
|
|
494
|
+
fields_for "post[]", @post do |f|
|
|
495
|
+
concat f.collection_select(:author_name, dummy_posts, :author_name, :author_name)
|
|
496
|
+
end
|
|
497
|
+
|
|
498
|
+
assert_dom_equal(
|
|
499
|
+
"<select id=\"post_815_author_name\" name=\"post[815][author_name]\"><option value=\"<Abe>\"><Abe></option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>",
|
|
500
|
+
output_buffer
|
|
501
|
+
)
|
|
502
|
+
end
|
|
503
|
+
|
|
504
|
+
def test_collection_select_with_blank_and_style
|
|
505
|
+
@post = Post.new
|
|
506
|
+
@post.author_name = "Babe"
|
|
507
|
+
|
|
508
|
+
assert_dom_equal(
|
|
509
|
+
"<select id=\"post_author_name\" name=\"post[author_name]\" style=\"width: 200px\"><option value=\"\"></option>\n<option value=\"<Abe>\"><Abe></option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>",
|
|
510
|
+
collection_select("post", "author_name", dummy_posts, "author_name", "author_name", { :include_blank => true }, "style" => "width: 200px")
|
|
511
|
+
)
|
|
512
|
+
end
|
|
513
|
+
|
|
514
|
+
def test_collection_select_with_blank_as_string_and_style
|
|
515
|
+
@post = Post.new
|
|
516
|
+
@post.author_name = "Babe"
|
|
517
|
+
|
|
518
|
+
assert_dom_equal(
|
|
519
|
+
"<select id=\"post_author_name\" name=\"post[author_name]\" style=\"width: 200px\"><option value=\"\">No Selection</option>\n<option value=\"<Abe>\"><Abe></option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>",
|
|
520
|
+
collection_select("post", "author_name", dummy_posts, "author_name", "author_name", { :include_blank => 'No Selection' }, "style" => "width: 200px")
|
|
521
|
+
)
|
|
522
|
+
end
|
|
523
|
+
|
|
524
|
+
def test_collection_select_with_multiple_option_appends_array_brackets
|
|
525
|
+
@post = Post.new
|
|
526
|
+
@post.author_name = "Babe"
|
|
527
|
+
|
|
528
|
+
expected = "<select id=\"post_author_name\" name=\"post[author_name][]\" multiple=\"multiple\"><option value=\"\"></option>\n<option value=\"<Abe>\"><Abe></option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>"
|
|
529
|
+
|
|
530
|
+
# Should suffix default name with [].
|
|
531
|
+
assert_dom_equal expected, collection_select("post", "author_name", dummy_posts, "author_name", "author_name", { :include_blank => true }, :multiple => true)
|
|
532
|
+
|
|
533
|
+
# Shouldn't suffix custom name with [].
|
|
534
|
+
assert_dom_equal expected, collection_select("post", "author_name", dummy_posts, "author_name", "author_name", { :include_blank => true, :name => 'post[author_name][]' }, :multiple => true)
|
|
535
|
+
end
|
|
536
|
+
|
|
537
|
+
def test_collection_select_with_blank_and_selected
|
|
538
|
+
@post = Post.new
|
|
539
|
+
@post.author_name = "Babe"
|
|
540
|
+
|
|
541
|
+
assert_dom_equal(
|
|
542
|
+
%{<select id="post_author_name" name="post[author_name]"><option value=""></option>\n<option value="<Abe>" selected="selected"><Abe></option>\n<option value="Babe">Babe</option>\n<option value="Cabe">Cabe</option></select>},
|
|
543
|
+
collection_select("post", "author_name", dummy_posts, "author_name", "author_name", {:include_blank => true, :selected => "<Abe>"})
|
|
544
|
+
)
|
|
545
|
+
end
|
|
546
|
+
|
|
547
|
+
def test_collection_select_with_disabled
|
|
548
|
+
@post = Post.new
|
|
549
|
+
@post.author_name = "Babe"
|
|
550
|
+
|
|
551
|
+
assert_dom_equal(
|
|
552
|
+
"<select id=\"post_author_name\" name=\"post[author_name]\"><option value=\"<Abe>\"><Abe></option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\" disabled=\"disabled\">Cabe</option></select>",
|
|
553
|
+
collection_select("post", "author_name", dummy_posts, "author_name", "author_name", :disabled => 'Cabe')
|
|
554
|
+
)
|
|
555
|
+
end
|
|
556
|
+
|
|
557
|
+
def test_time_zone_select
|
|
558
|
+
@firm = Firm.new("D")
|
|
559
|
+
html = time_zone_select( "firm", "time_zone" )
|
|
560
|
+
assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
|
|
561
|
+
"<option value=\"A\">A</option>\n" +
|
|
562
|
+
"<option value=\"B\">B</option>\n" +
|
|
563
|
+
"<option value=\"C\">C</option>\n" +
|
|
564
|
+
"<option value=\"D\" selected=\"selected\">D</option>\n" +
|
|
565
|
+
"<option value=\"E\">E</option>" +
|
|
566
|
+
"</select>",
|
|
567
|
+
html
|
|
568
|
+
end
|
|
569
|
+
|
|
570
|
+
def test_time_zone_select_under_fields_for
|
|
571
|
+
@firm = Firm.new("D")
|
|
572
|
+
|
|
573
|
+
fields_for :firm, @firm do |f|
|
|
574
|
+
concat f.time_zone_select(:time_zone)
|
|
575
|
+
end
|
|
576
|
+
|
|
577
|
+
assert_dom_equal(
|
|
578
|
+
"<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
|
|
579
|
+
"<option value=\"A\">A</option>\n" +
|
|
580
|
+
"<option value=\"B\">B</option>\n" +
|
|
581
|
+
"<option value=\"C\">C</option>\n" +
|
|
582
|
+
"<option value=\"D\" selected=\"selected\">D</option>\n" +
|
|
583
|
+
"<option value=\"E\">E</option>" +
|
|
584
|
+
"</select>",
|
|
585
|
+
output_buffer
|
|
586
|
+
)
|
|
587
|
+
end
|
|
588
|
+
|
|
589
|
+
def test_time_zone_select_under_fields_for_with_index
|
|
590
|
+
@firm = Firm.new("D")
|
|
591
|
+
|
|
592
|
+
fields_for :firm, @firm, :index => 305 do |f|
|
|
593
|
+
concat f.time_zone_select(:time_zone)
|
|
594
|
+
end
|
|
595
|
+
|
|
596
|
+
assert_dom_equal(
|
|
597
|
+
"<select id=\"firm_305_time_zone\" name=\"firm[305][time_zone]\">" +
|
|
598
|
+
"<option value=\"A\">A</option>\n" +
|
|
599
|
+
"<option value=\"B\">B</option>\n" +
|
|
600
|
+
"<option value=\"C\">C</option>\n" +
|
|
601
|
+
"<option value=\"D\" selected=\"selected\">D</option>\n" +
|
|
602
|
+
"<option value=\"E\">E</option>" +
|
|
603
|
+
"</select>",
|
|
604
|
+
output_buffer
|
|
605
|
+
)
|
|
606
|
+
end
|
|
607
|
+
|
|
608
|
+
def test_time_zone_select_under_fields_for_with_auto_index
|
|
609
|
+
@firm = Firm.new("D")
|
|
610
|
+
def @firm.to_param; 305; end
|
|
611
|
+
|
|
612
|
+
fields_for "firm[]", @firm do |f|
|
|
613
|
+
concat f.time_zone_select(:time_zone)
|
|
614
|
+
end
|
|
615
|
+
|
|
616
|
+
assert_dom_equal(
|
|
617
|
+
"<select id=\"firm_305_time_zone\" name=\"firm[305][time_zone]\">" +
|
|
618
|
+
"<option value=\"A\">A</option>\n" +
|
|
619
|
+
"<option value=\"B\">B</option>\n" +
|
|
620
|
+
"<option value=\"C\">C</option>\n" +
|
|
621
|
+
"<option value=\"D\" selected=\"selected\">D</option>\n" +
|
|
622
|
+
"<option value=\"E\">E</option>" +
|
|
623
|
+
"</select>",
|
|
624
|
+
output_buffer
|
|
625
|
+
)
|
|
626
|
+
end
|
|
627
|
+
|
|
628
|
+
def test_time_zone_select_with_blank
|
|
629
|
+
@firm = Firm.new("D")
|
|
630
|
+
html = time_zone_select("firm", "time_zone", nil, :include_blank => true)
|
|
631
|
+
assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
|
|
632
|
+
"<option value=\"\"></option>\n" +
|
|
633
|
+
"<option value=\"A\">A</option>\n" +
|
|
634
|
+
"<option value=\"B\">B</option>\n" +
|
|
635
|
+
"<option value=\"C\">C</option>\n" +
|
|
636
|
+
"<option value=\"D\" selected=\"selected\">D</option>\n" +
|
|
637
|
+
"<option value=\"E\">E</option>" +
|
|
638
|
+
"</select>",
|
|
639
|
+
html
|
|
640
|
+
end
|
|
641
|
+
|
|
642
|
+
def test_time_zone_select_with_blank_as_string
|
|
643
|
+
@firm = Firm.new("D")
|
|
644
|
+
html = time_zone_select("firm", "time_zone", nil, :include_blank => 'No Zone')
|
|
645
|
+
assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
|
|
646
|
+
"<option value=\"\">No Zone</option>\n" +
|
|
647
|
+
"<option value=\"A\">A</option>\n" +
|
|
648
|
+
"<option value=\"B\">B</option>\n" +
|
|
649
|
+
"<option value=\"C\">C</option>\n" +
|
|
650
|
+
"<option value=\"D\" selected=\"selected\">D</option>\n" +
|
|
651
|
+
"<option value=\"E\">E</option>" +
|
|
652
|
+
"</select>",
|
|
653
|
+
html
|
|
654
|
+
end
|
|
655
|
+
|
|
656
|
+
def test_time_zone_select_with_style
|
|
657
|
+
@firm = Firm.new("D")
|
|
658
|
+
html = time_zone_select("firm", "time_zone", nil, {},
|
|
659
|
+
"style" => "color: red")
|
|
660
|
+
assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\" style=\"color: red\">" +
|
|
661
|
+
"<option value=\"A\">A</option>\n" +
|
|
662
|
+
"<option value=\"B\">B</option>\n" +
|
|
663
|
+
"<option value=\"C\">C</option>\n" +
|
|
664
|
+
"<option value=\"D\" selected=\"selected\">D</option>\n" +
|
|
665
|
+
"<option value=\"E\">E</option>" +
|
|
666
|
+
"</select>",
|
|
667
|
+
html
|
|
668
|
+
assert_dom_equal html, time_zone_select("firm", "time_zone", nil, {},
|
|
669
|
+
:style => "color: red")
|
|
670
|
+
end
|
|
671
|
+
|
|
672
|
+
def test_time_zone_select_with_blank_and_style
|
|
673
|
+
@firm = Firm.new("D")
|
|
674
|
+
html = time_zone_select("firm", "time_zone", nil,
|
|
675
|
+
{ :include_blank => true }, "style" => "color: red")
|
|
676
|
+
assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\" style=\"color: red\">" +
|
|
677
|
+
"<option value=\"\"></option>\n" +
|
|
678
|
+
"<option value=\"A\">A</option>\n" +
|
|
679
|
+
"<option value=\"B\">B</option>\n" +
|
|
680
|
+
"<option value=\"C\">C</option>\n" +
|
|
681
|
+
"<option value=\"D\" selected=\"selected\">D</option>\n" +
|
|
682
|
+
"<option value=\"E\">E</option>" +
|
|
683
|
+
"</select>",
|
|
684
|
+
html
|
|
685
|
+
assert_dom_equal html, time_zone_select("firm", "time_zone", nil,
|
|
686
|
+
{ :include_blank => true }, :style => "color: red")
|
|
687
|
+
end
|
|
688
|
+
|
|
689
|
+
def test_time_zone_select_with_blank_as_string_and_style
|
|
690
|
+
@firm = Firm.new("D")
|
|
691
|
+
html = time_zone_select("firm", "time_zone", nil,
|
|
692
|
+
{ :include_blank => 'No Zone' }, "style" => "color: red")
|
|
693
|
+
assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\" style=\"color: red\">" +
|
|
694
|
+
"<option value=\"\">No Zone</option>\n" +
|
|
695
|
+
"<option value=\"A\">A</option>\n" +
|
|
696
|
+
"<option value=\"B\">B</option>\n" +
|
|
697
|
+
"<option value=\"C\">C</option>\n" +
|
|
698
|
+
"<option value=\"D\" selected=\"selected\">D</option>\n" +
|
|
699
|
+
"<option value=\"E\">E</option>" +
|
|
700
|
+
"</select>",
|
|
701
|
+
html
|
|
702
|
+
assert_dom_equal html, time_zone_select("firm", "time_zone", nil,
|
|
703
|
+
{ :include_blank => 'No Zone' }, :style => "color: red")
|
|
704
|
+
end
|
|
705
|
+
|
|
706
|
+
def test_time_zone_select_with_priority_zones
|
|
707
|
+
@firm = Firm.new("D")
|
|
708
|
+
zones = [ ActiveSupport::TimeZone.new("A"), ActiveSupport::TimeZone.new("D") ]
|
|
709
|
+
html = time_zone_select("firm", "time_zone", zones )
|
|
710
|
+
assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
|
|
711
|
+
"<option value=\"A\">A</option>\n" +
|
|
712
|
+
"<option value=\"D\" selected=\"selected\">D</option>" +
|
|
713
|
+
"<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
|
|
714
|
+
"<option value=\"B\">B</option>\n" +
|
|
715
|
+
"<option value=\"C\">C</option>\n" +
|
|
716
|
+
"<option value=\"E\">E</option>" +
|
|
717
|
+
"</select>",
|
|
718
|
+
html
|
|
719
|
+
end
|
|
720
|
+
|
|
721
|
+
def test_time_zone_select_with_priority_zones_as_regexp
|
|
722
|
+
@firm = Firm.new("D")
|
|
723
|
+
@fake_timezones.each_with_index do |tz, i|
|
|
724
|
+
tz.stubs(:=~).returns(i.zero? || i == 3)
|
|
725
|
+
end
|
|
726
|
+
|
|
727
|
+
html = time_zone_select("firm", "time_zone", /A|D/)
|
|
728
|
+
assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
|
|
729
|
+
"<option value=\"A\">A</option>\n" +
|
|
730
|
+
"<option value=\"D\" selected=\"selected\">D</option>" +
|
|
731
|
+
"<option value=\"\" disabled=\"disabled\">-------------</option>\n" +
|
|
732
|
+
"<option value=\"B\">B</option>\n" +
|
|
733
|
+
"<option value=\"C\">C</option>\n" +
|
|
734
|
+
"<option value=\"E\">E</option>" +
|
|
735
|
+
"</select>",
|
|
736
|
+
html
|
|
737
|
+
end
|
|
738
|
+
|
|
739
|
+
def test_time_zone_select_with_default_time_zone_and_nil_value
|
|
740
|
+
@firm = Firm.new()
|
|
741
|
+
@firm.time_zone = nil
|
|
742
|
+
html = time_zone_select( "firm", "time_zone", nil, :default => 'B' )
|
|
743
|
+
assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
|
|
744
|
+
"<option value=\"A\">A</option>\n" +
|
|
745
|
+
"<option value=\"B\" selected=\"selected\">B</option>\n" +
|
|
746
|
+
"<option value=\"C\">C</option>\n" +
|
|
747
|
+
"<option value=\"D\">D</option>\n" +
|
|
748
|
+
"<option value=\"E\">E</option>" +
|
|
749
|
+
"</select>",
|
|
750
|
+
html
|
|
751
|
+
end
|
|
752
|
+
|
|
753
|
+
def test_time_zone_select_with_default_time_zone_and_value
|
|
754
|
+
@firm = Firm.new('D')
|
|
755
|
+
html = time_zone_select( "firm", "time_zone", nil, :default => 'B' )
|
|
756
|
+
assert_dom_equal "<select id=\"firm_time_zone\" name=\"firm[time_zone]\">" +
|
|
757
|
+
"<option value=\"A\">A</option>\n" +
|
|
758
|
+
"<option value=\"B\">B</option>\n" +
|
|
759
|
+
"<option value=\"C\">C</option>\n" +
|
|
760
|
+
"<option value=\"D\" selected=\"selected\">D</option>\n" +
|
|
761
|
+
"<option value=\"E\">E</option>" +
|
|
762
|
+
"</select>",
|
|
763
|
+
html
|
|
764
|
+
end
|
|
765
|
+
|
|
766
|
+
def test_grouped_collection_select
|
|
767
|
+
@continents = [
|
|
768
|
+
Continent.new("<Africa>", [Country.new("<sa>", "<South Africa>"), Country.new("so", "Somalia")] ),
|
|
769
|
+
Continent.new("Europe", [Country.new("dk", "Denmark"), Country.new("ie", "Ireland")] )
|
|
770
|
+
]
|
|
771
|
+
|
|
772
|
+
@post = Post.new
|
|
773
|
+
@post.origin = 'dk'
|
|
774
|
+
|
|
775
|
+
assert_dom_equal(
|
|
776
|
+
%Q{<select id="post_origin" name="post[origin]"><optgroup label="<Africa>"><option value="<sa>"><South Africa></option>\n<option value="so">Somalia</option></optgroup><optgroup label="Europe"><option value="dk" selected="selected">Denmark</option>\n<option value="ie">Ireland</option></optgroup></select>},
|
|
777
|
+
grouped_collection_select("post", "origin", @continents, :countries, :continent_name, :country_id, :country_name)
|
|
778
|
+
)
|
|
779
|
+
end
|
|
780
|
+
|
|
781
|
+
def test_grouped_collection_select_under_fields_for
|
|
782
|
+
@continents = [
|
|
783
|
+
Continent.new("<Africa>", [Country.new("<sa>", "<South Africa>"), Country.new("so", "Somalia")] ),
|
|
784
|
+
Continent.new("Europe", [Country.new("dk", "Denmark"), Country.new("ie", "Ireland")] )
|
|
785
|
+
]
|
|
786
|
+
|
|
787
|
+
@post = Post.new
|
|
788
|
+
@post.origin = 'dk'
|
|
789
|
+
|
|
790
|
+
fields_for :post, @post do |f|
|
|
791
|
+
concat f.grouped_collection_select("origin", @continents, :countries, :continent_name, :country_id, :country_name)
|
|
792
|
+
end
|
|
793
|
+
|
|
794
|
+
assert_dom_equal(
|
|
795
|
+
%Q{<select id="post_origin" name="post[origin]"><optgroup label="<Africa>"><option value="<sa>"><South Africa></option>\n<option value="so">Somalia</option></optgroup><optgroup label="Europe"><option value="dk" selected="selected">Denmark</option>\n<option value="ie">Ireland</option></optgroup></select>},
|
|
796
|
+
output_buffer
|
|
797
|
+
)
|
|
798
|
+
end
|
|
799
|
+
|
|
800
|
+
private
|
|
801
|
+
|
|
802
|
+
def dummy_posts
|
|
803
|
+
[ Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
|
|
804
|
+
Post.new("Babe went home", "Babe", "To a little house", "shh!"),
|
|
805
|
+
Post.new("Cabe went home", "Cabe", "To a little house", "shh!") ]
|
|
806
|
+
end
|
|
807
|
+
end
|