actionpack 2.3.5 → 2.3.6
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 +45 -0
- data/MIT-LICENSE +1 -1
- data/README +7 -7
- data/Rakefile +2 -2
- data/lib/action_controller.rb +2 -2
- data/lib/action_controller/assertions/response_assertions.rb +18 -9
- data/lib/action_controller/base.rb +14 -14
- data/lib/action_controller/caching/fragments.rb +6 -6
- data/lib/action_controller/cookies.rb +96 -0
- data/lib/action_controller/failsafe.rb +1 -0
- data/lib/action_controller/flash.rb +42 -0
- data/lib/action_controller/integration.rb +5 -1
- data/lib/action_controller/polymorphic_routes.rb +1 -1
- data/lib/action_controller/rack_lint_patch.rb +1 -1
- data/lib/action_controller/rescue.rb +2 -2
- data/lib/action_controller/response.rb +4 -7
- data/lib/action_controller/routing/route_set.rb +1 -0
- data/lib/action_controller/session/abstract_store.rb +6 -0
- data/lib/action_controller/session/cookie_store.rb +6 -0
- data/lib/action_controller/templates/rescues/_trace.erb +2 -2
- data/lib/action_controller/url_rewriter.rb +4 -1
- data/lib/action_pack.rb +1 -1
- data/lib/action_pack/version.rb +1 -1
- data/lib/action_view.rb +3 -3
- data/lib/action_view/helpers/active_record_helper.rb +11 -11
- data/lib/action_view/helpers/asset_tag_helper.rb +2 -2
- data/lib/action_view/helpers/capture_helper.rb +2 -2
- data/lib/action_view/helpers/date_helper.rb +12 -11
- data/lib/action_view/helpers/debug_helper.rb +2 -2
- data/lib/action_view/helpers/form_helper.rb +49 -12
- data/lib/action_view/helpers/form_options_helper.rb +3 -4
- data/lib/action_view/helpers/form_tag_helper.rb +7 -4
- data/lib/action_view/helpers/javascript_helper.rb +1 -1
- data/lib/action_view/helpers/number_helper.rb +1 -1
- data/lib/action_view/helpers/prototype_helper.rb +2 -2
- data/lib/action_view/helpers/raw_output_helper.rb +2 -2
- data/lib/action_view/helpers/sanitize_helper.rb +2 -10
- data/lib/action_view/helpers/tag_helper.rb +6 -5
- data/lib/action_view/helpers/text_helper.rb +5 -5
- data/lib/action_view/helpers/translation_helper.rb +6 -4
- data/lib/action_view/helpers/url_helper.rb +9 -11
- data/lib/action_view/partials.rb +2 -1
- data/lib/action_view/paths.rb +8 -0
- data/lib/action_view/renderable.rb +16 -2
- data/lib/action_view/template_handlers/erb.rb +3 -5
- data/lib/action_view/test_case.rb +2 -2
- data/test/abstract_unit.rb +3 -3
- data/test/controller/action_pack_assertions_test.rb +3 -1
- data/test/controller/assert_select_test.rb +1 -0
- data/test/controller/caching_test.rb +16 -2
- data/test/controller/cookie_test.rb +37 -1
- data/test/controller/flash_test.rb +28 -1
- data/test/controller/integration_test.rb +0 -1
- data/test/controller/localized_templates_test.rb +24 -0
- data/test/controller/output_escaping_test.rb +19 -0
- data/test/controller/rack_test.rb +1 -4
- data/test/controller/render_test.rb +11 -2
- data/test/controller/rescue_test.rb +8 -2
- data/test/controller/routing_test.rb +1 -0
- data/test/controller/send_file_test.rb +1 -1
- data/test/controller/session/cookie_store_test.rb +2 -2
- data/test/controller/url_rewriter_test.rb +10 -6
- data/test/fixtures/localized/hello_world.de.html +1 -0
- data/test/fixtures/localized/hello_world.en.html +1 -0
- data/test/fixtures/test/_customer_counter_with_as.erb +1 -0
- data/test/fixtures/test/_utf8_partial.html.erb +1 -0
- data/test/fixtures/test/_utf8_partial_magic.html.erb +2 -0
- data/test/fixtures/test/array_translation.erb +1 -0
- data/test/fixtures/test/scoped_array_translation.erb +1 -0
- data/test/fixtures/test/utf8.html.erb +4 -2
- data/test/fixtures/test/utf8_magic.html.erb +5 -0
- data/test/fixtures/test/utf8_magic_with_bare_partial.html.erb +5 -0
- data/test/template/active_record_helper_i18n_test.rb +9 -2
- data/test/template/asset_tag_helper_test.rb +0 -1
- data/test/template/date_helper_test.rb +118 -0
- data/test/template/erb_util_test.rb +12 -0
- data/test/template/form_helper_test.rb +57 -3
- data/test/template/form_tag_helper_test.rb +15 -9
- data/test/template/render_test.rb +47 -8
- data/test/template/text_helper_test.rb +26 -1
- data/test/template/translation_helper_test.rb +20 -2
- data/test/template/url_helper_test.rb +20 -1
- data/test/tmp/RackMultipart20100114-2850-18awt99-0 +1 -0
- data/test/tmp/RackMultipart20100114-2850-19mxvfk-0 +0 -0
- data/test/tmp/RackMultipart20100114-2850-1il5j9y-0 +1 -0
- data/test/tmp/RackMultipart20100114-2850-1kr4fph-0 +1 -0
- data/test/tmp/RackMultipart20100114-2850-1whjzgd-0 +0 -0
- data/test/tmp/RackMultipart20100114-2850-2oxu19-0 +1 -0
- data/test/tmp/RackMultipart20100114-2850-34lp5r-0 +0 -0
- data/test/tmp/RackMultipart20100114-2850-bqfazg-0 +1 -0
- data/test/tmp/RackMultipart20100114-2850-vbyi8g-0 +0 -0
- data/test/tmp/RackMultipart20100127-16318-140g9v4-0 +1 -0
- data/test/tmp/RackMultipart20100127-16318-1gc081d-0 +0 -0
- data/test/tmp/RackMultipart20100127-16318-1hs9edk-0 +0 -0
- data/test/tmp/RackMultipart20100127-16318-1xv7yvp-0 +1 -0
- data/test/tmp/RackMultipart20100127-16318-9eyfmo-0 +1 -0
- data/test/tmp/RackMultipart20100127-16318-o81drl-0 +0 -0
- data/test/tmp/RackMultipart20100127-16318-ubd6vm-0 +1 -0
- data/test/tmp/RackMultipart20100127-16318-xltjpf-0 +1 -0
- data/test/tmp/RackMultipart20100127-16318-z0s5v6-0 +0 -0
- data/test/tmp/RackMultipart20100131-1041-1fpxdo1-0 +1 -0
- data/test/tmp/RackMultipart20100131-1041-1hgld51-0 +1 -0
- data/test/tmp/RackMultipart20100131-1041-1sfw61g-0 +0 -0
- data/test/tmp/RackMultipart20100131-1041-1txiwx-0 +0 -0
- data/test/tmp/RackMultipart20100131-1041-3nxhtk-0 +1 -0
- data/test/tmp/RackMultipart20100131-1041-msmvjp-0 +1 -0
- data/test/tmp/RackMultipart20100131-1041-snlih6-0 +0 -0
- data/test/tmp/RackMultipart20100131-1041-utmx6r-0 +1 -0
- data/test/tmp/RackMultipart20100131-1041-vr2eir-0 +0 -0
- data/test/tmp/RackMultipart20100131-1200-116kivk-0 +1 -0
- data/test/tmp/RackMultipart20100131-1200-13yj0g7-0 +0 -0
- data/test/tmp/RackMultipart20100131-1200-1b0awcl-0 +1 -0
- data/test/tmp/RackMultipart20100131-1200-1qc4a1o-0 +0 -0
- data/test/tmp/RackMultipart20100131-1200-1sch05j-0 +1 -0
- data/test/tmp/RackMultipart20100131-1200-2wwvjw-0 +1 -0
- data/test/tmp/RackMultipart20100131-1200-4ybied-0 +0 -0
- data/test/tmp/RackMultipart20100131-1200-n4jwgg-0 +0 -0
- data/test/tmp/RackMultipart20100131-1200-nqwg4i-0 +1 -0
- data/test/tmp/RackMultipart20100131-1566-10hgtsj-0 +0 -0
- data/test/tmp/RackMultipart20100131-1566-1m2ix3r-0 +1 -0
- data/test/tmp/RackMultipart20100131-1566-1szdt3p-0 +0 -0
- data/test/tmp/RackMultipart20100131-1566-6cb9xb-0 +0 -0
- data/test/tmp/RackMultipart20100131-1566-aervb6-0 +1 -0
- data/test/tmp/RackMultipart20100131-1566-o57d30-0 +1 -0
- data/test/tmp/RackMultipart20100131-1566-q06s4u-0 +1 -0
- data/test/tmp/RackMultipart20100131-1566-r3eau5-0 +1 -0
- data/test/tmp/RackMultipart20100131-1566-rhvbsr-0 +0 -0
- data/test/tmp/RackMultipart20100131-2176-19tk67i-0 +0 -0
- data/test/tmp/RackMultipart20100131-2176-1iuhegu-0 +0 -0
- data/test/tmp/RackMultipart20100131-2176-1mfu303-0 +1 -0
- data/test/tmp/RackMultipart20100131-2176-1qv96rf-0 +1 -0
- data/test/tmp/RackMultipart20100131-2176-7rae4i-0 +1 -0
- data/test/tmp/RackMultipart20100131-2176-g7hqdt-0 +0 -0
- data/test/tmp/RackMultipart20100131-2176-spxexk-0 +1 -0
- data/test/tmp/RackMultipart20100131-2176-x57r68-0 +0 -0
- data/test/tmp/RackMultipart20100131-2176-xx8aqr-0 +1 -0
- data/test/tmp/RackMultipart20100131-2251-1kx4y7u-0 +1 -0
- data/test/tmp/RackMultipart20100131-2251-1p70d6c-0 +1 -0
- data/test/tmp/RackMultipart20100131-2251-1w181g4-0 +1 -0
- data/test/tmp/RackMultipart20100131-2251-9dl2hy-0 +1 -0
- data/test/tmp/RackMultipart20100131-2251-dd4aqa-0 +0 -0
- data/test/tmp/RackMultipart20100131-2251-dq1bs7-0 +0 -0
- data/test/tmp/RackMultipart20100131-2251-rjlwid-0 +0 -0
- data/test/tmp/RackMultipart20100131-2251-svv2my-0 +0 -0
- data/test/tmp/RackMultipart20100131-2251-znyywm-0 +1 -0
- data/test/tmp/RackMultipart20100131-2563-1b9atyq-0 +1 -0
- data/test/tmp/RackMultipart20100131-2563-1j4bk06-0 +1 -0
- data/test/tmp/RackMultipart20100131-2563-1nd3jkk-0 +0 -0
- data/test/tmp/RackMultipart20100131-2563-1ud0b43-0 +1 -0
- data/test/tmp/RackMultipart20100131-2563-2t9aus-0 +1 -0
- data/test/tmp/RackMultipart20100131-2563-4xhtq9-0 +0 -0
- data/test/tmp/RackMultipart20100131-2563-80xjuq-0 +1 -0
- data/test/tmp/RackMultipart20100131-2563-du6204-0 +0 -0
- data/test/tmp/RackMultipart20100131-2563-m2xw0u-0 +0 -0
- data/test/tmp/RackMultipart20100131-3324-1bz902a-0 +1 -0
- data/test/tmp/RackMultipart20100131-3324-1cj3c2q-0 +1 -0
- data/test/tmp/RackMultipart20100131-3324-1dcwnmh-0 +1 -0
- data/test/tmp/RackMultipart20100131-3324-1qu1vvo-0 +1 -0
- data/test/tmp/RackMultipart20100131-3324-1wksfd7-0 +0 -0
- data/test/tmp/RackMultipart20100131-3324-8bmth5-0 +0 -0
- data/test/tmp/RackMultipart20100131-3324-c0sen5-0 +1 -0
- data/test/tmp/RackMultipart20100131-3324-mhg9zb-0 +0 -0
- data/test/tmp/RackMultipart20100131-3324-mram2k-0 +0 -0
- data/test/tmp/RackMultipart20100131-3712-11l26yb-0 +1 -0
- data/test/tmp/RackMultipart20100131-3712-18qhzz9-0 +1 -0
- data/test/tmp/RackMultipart20100131-3712-19efkti-0 +1 -0
- data/test/tmp/RackMultipart20100131-3712-1s6qbc-0 +1 -0
- data/test/tmp/RackMultipart20100131-3712-948hce-0 +0 -0
- data/test/tmp/RackMultipart20100131-3712-rliyfc-0 +0 -0
- data/test/tmp/RackMultipart20100131-3712-tvfxgh-0 +1 -0
- data/test/tmp/RackMultipart20100131-3712-ywjidy-0 +0 -0
- data/test/tmp/RackMultipart20100131-3712-zwa1yl-0 +0 -0
- data/test/tmp/RackMultipart20100131-4098-12u1n7m-0 +1 -0
- data/test/tmp/RackMultipart20100131-4098-188dwav-0 +0 -0
- data/test/tmp/RackMultipart20100131-4098-1a2nulg-0 +0 -0
- data/test/tmp/RackMultipart20100131-4098-1c9gbau-0 +1 -0
- data/test/tmp/RackMultipart20100131-4098-2923tu-0 +0 -0
- data/test/tmp/RackMultipart20100131-4098-he7nm8-0 +0 -0
- data/test/tmp/RackMultipart20100131-4098-nw5pcp-0 +1 -0
- data/test/tmp/RackMultipart20100131-4098-plj7cd-0 +1 -0
- data/test/tmp/RackMultipart20100131-4098-wha9du-0 +1 -0
- data/test/tmp/RackMultipart20100131-4178-10rjsef-0 +0 -0
- data/test/tmp/RackMultipart20100131-4178-13qqazs-0 +0 -0
- data/test/tmp/RackMultipart20100131-4178-1hpjqkl-0 +0 -0
- data/test/tmp/RackMultipart20100131-4178-1idjtdl-0 +1 -0
- data/test/tmp/RackMultipart20100131-4178-1ke1zpq-0 +1 -0
- data/test/tmp/RackMultipart20100131-4178-6y51hb-0 +1 -0
- data/test/tmp/RackMultipart20100131-4178-98i2o0-0 +1 -0
- data/test/tmp/RackMultipart20100131-4178-9k4jj6-0 +0 -0
- data/test/tmp/RackMultipart20100131-4178-zcxa4g-0 +1 -0
- data/test/tmp/RackMultipart20100131-4297-1moo7v9-0 +0 -0
- data/test/tmp/RackMultipart20100131-4297-1yxib1r-0 +0 -0
- data/test/tmp/RackMultipart20100131-4297-b239su-0 +0 -0
- data/test/tmp/RackMultipart20100131-4297-ht0qby-0 +1 -0
- data/test/tmp/RackMultipart20100131-4297-ia5rov-0 +1 -0
- data/test/tmp/RackMultipart20100131-4297-m6gof0-0 +1 -0
- data/test/tmp/RackMultipart20100131-4297-nm3rvt-0 +0 -0
- data/test/tmp/RackMultipart20100131-4297-qla73p-0 +1 -0
- data/test/tmp/RackMultipart20100131-4297-ylrtmu-0 +1 -0
- data/test/tmp/RackMultipart20100131-4434-11fsv9d-0 +0 -0
- data/test/tmp/RackMultipart20100131-4434-19ycsmr-0 +1 -0
- data/test/tmp/RackMultipart20100131-4434-1h0ws4q-0 +1 -0
- data/test/tmp/RackMultipart20100131-4434-1lszvv8-0 +0 -0
- data/test/tmp/RackMultipart20100131-4434-1ocgqu3-0 +1 -0
- data/test/tmp/RackMultipart20100131-4434-1ukqdfd-0 +1 -0
- data/test/tmp/RackMultipart20100131-4434-cq7rvl-0 +1 -0
- data/test/tmp/RackMultipart20100131-4434-f7jbl4-0 +0 -0
- data/test/tmp/RackMultipart20100131-4434-vxlg5t-0 +0 -0
- data/test/tmp/RackMultipart20100131-4544-1bf8inz-0 +1 -0
- data/test/tmp/RackMultipart20100131-4544-1vj44nb-0 +0 -0
- data/test/tmp/RackMultipart20100131-4544-20mdip-0 +1 -0
- data/test/tmp/RackMultipart20100131-4544-89y67y-0 +0 -0
- data/test/tmp/RackMultipart20100131-4544-gdbsui-0 +1 -0
- data/test/tmp/RackMultipart20100131-4544-ko8plt-0 +0 -0
- data/test/tmp/RackMultipart20100131-4544-ojykbo-0 +1 -0
- data/test/tmp/RackMultipart20100131-4544-r8sahr-0 +0 -0
- data/test/tmp/RackMultipart20100131-4544-uluv8k-0 +1 -0
- data/test/tmp/RackMultipart20100131-4655-11ovmuw-0 +0 -0
- data/test/tmp/RackMultipart20100131-4655-12iht5p-0 +1 -0
- data/test/tmp/RackMultipart20100131-4655-142j0ug-0 +0 -0
- data/test/tmp/RackMultipart20100131-4655-15affqj-0 +0 -0
- data/test/tmp/RackMultipart20100131-4655-1gv4gb4-0 +1 -0
- data/test/tmp/RackMultipart20100131-4655-1gwchw7-0 +1 -0
- data/test/tmp/RackMultipart20100131-4655-1hvqx5t-0 +1 -0
- data/test/tmp/RackMultipart20100131-4655-1jhgk7a-0 +1 -0
- data/test/tmp/RackMultipart20100131-4655-1yktury-0 +0 -0
- data/test/tmp/RackMultipart20100131-5244-13z86ip-0 +0 -0
- data/test/tmp/RackMultipart20100131-5244-17vpiv6-0 +0 -0
- data/test/tmp/RackMultipart20100131-5244-1a9w3e-0 +1 -0
- data/test/tmp/RackMultipart20100131-5244-1ox8g0l-0 +1 -0
- data/test/tmp/RackMultipart20100131-5244-1qrzlqz-0 +1 -0
- data/test/tmp/RackMultipart20100131-5244-g3mpli-0 +0 -0
- data/test/tmp/RackMultipart20100131-5244-gcl80c-0 +0 -0
- data/test/tmp/RackMultipart20100131-5244-jqk7el-0 +1 -0
- data/test/tmp/RackMultipart20100131-5244-st1ldm-0 +1 -0
- data/test/tmp/RackMultipart20100131-5383-10si01q-0 +0 -0
- data/test/tmp/RackMultipart20100131-5383-16ye4w3-0 +1 -0
- data/test/tmp/RackMultipart20100131-5383-1imlta8-0 +0 -0
- data/test/tmp/RackMultipart20100131-5383-1r3gvaw-0 +0 -0
- data/test/tmp/RackMultipart20100131-5383-3wialw-0 +1 -0
- data/test/tmp/RackMultipart20100131-5383-k16uor-0 +1 -0
- data/test/tmp/RackMultipart20100131-5383-oz1b3a-0 +0 -0
- data/test/tmp/RackMultipart20100131-5383-una84e-0 +1 -0
- data/test/tmp/RackMultipart20100131-5383-zk1hmz-0 +1 -0
- data/test/tmp/RackMultipart20100131-5711-12j0qy5-0 +1 -0
- data/test/tmp/RackMultipart20100131-5711-1cozdic-0 +0 -0
- data/test/tmp/RackMultipart20100131-5711-1kebrgm-0 +0 -0
- data/test/tmp/RackMultipart20100131-5711-1q3jt9q-0 +0 -0
- data/test/tmp/RackMultipart20100131-5711-6sv1xg-0 +1 -0
- data/test/tmp/RackMultipart20100131-5711-esxrbg-0 +0 -0
- data/test/tmp/RackMultipart20100131-5711-jfbr34-0 +1 -0
- data/test/tmp/RackMultipart20100131-5711-q1e91g-0 +1 -0
- data/test/tmp/RackMultipart20100131-5711-tdauxm-0 +1 -0
- data/test/tmp/RackMultipart20100131-91110-1196t1f-0 +1 -0
- data/test/tmp/RackMultipart20100131-91110-11tfgc4-0 +1 -0
- data/test/tmp/RackMultipart20100131-91110-19e4l6u-0 +0 -0
- data/test/tmp/RackMultipart20100131-91110-1m6i8r4-0 +0 -0
- data/test/tmp/RackMultipart20100131-91110-1nv9cn8-0 +1 -0
- data/test/tmp/RackMultipart20100131-91110-6gbf58-0 +0 -0
- data/test/tmp/RackMultipart20100131-91110-b7iewa-0 +1 -0
- data/test/tmp/RackMultipart20100131-91110-b8kbab-0 +0 -0
- data/test/tmp/RackMultipart20100131-91110-rq2ytl-0 +1 -0
- data/test/tmp/RackMultipart20100131-91876-1848spe-0 +1 -0
- data/test/tmp/RackMultipart20100131-91876-1u8xsmd-0 +0 -0
- data/test/tmp/RackMultipart20100131-91876-1vlruve-0 +0 -0
- data/test/tmp/RackMultipart20100131-91876-cbcvg1-0 +1 -0
- data/test/tmp/RackMultipart20100131-91876-jv0zd7-0 +1 -0
- data/test/tmp/RackMultipart20100131-91876-laype7-0 +1 -0
- data/test/tmp/RackMultipart20100131-91876-mswlj3-0 +1 -0
- data/test/tmp/RackMultipart20100131-91876-se56ms-0 +0 -0
- data/test/tmp/RackMultipart20100131-91876-t14psz-0 +0 -0
- data/test/tmp/RackMultipart20100131-93665-1cv0oop-0 +1 -0
- data/test/tmp/RackMultipart20100131-93665-1n0c582-0 +0 -0
- data/test/tmp/RackMultipart20100131-93665-1obpgzg-0 +1 -0
- data/test/tmp/RackMultipart20100131-93665-1pgbkl0-0 +1 -0
- data/test/tmp/RackMultipart20100131-93665-1udk862-0 +1 -0
- data/test/tmp/RackMultipart20100131-93665-9xxo6q-0 +0 -0
- data/test/tmp/RackMultipart20100131-93665-eawsec-0 +0 -0
- data/test/tmp/RackMultipart20100131-93665-g5rmm9-0 +0 -0
- data/test/tmp/RackMultipart20100131-93665-kdm9y0-0 +1 -0
- data/test/tmp/RackMultipart20100131-96270-10h26kt-0 +0 -0
- data/test/tmp/RackMultipart20100131-96270-1dtgwke-0 +1 -0
- data/test/tmp/RackMultipart20100131-96270-1pib5qg-0 +0 -0
- data/test/tmp/RackMultipart20100131-96270-1tfonee-0 +1 -0
- data/test/tmp/RackMultipart20100131-96270-1xoj9si-0 +0 -0
- data/test/tmp/RackMultipart20100131-96270-5kzssn-0 +0 -0
- data/test/tmp/RackMultipart20100131-96270-5qgi09-0 +1 -0
- data/test/tmp/RackMultipart20100131-96270-dlgdff-0 +1 -0
- data/test/tmp/RackMultipart20100131-96270-uky8ij-0 +1 -0
- data/test/tmp/RackMultipart20100131-96373-140mlqp-0 +1 -0
- data/test/tmp/RackMultipart20100131-96373-16du1gs-0 +1 -0
- data/test/tmp/RackMultipart20100131-96373-181k6zk-0 +1 -0
- data/test/tmp/RackMultipart20100131-96373-1f1xgl8-0 +0 -0
- data/test/tmp/RackMultipart20100131-96373-1v4tnat-0 +1 -0
- data/test/tmp/RackMultipart20100131-96373-5iwxty-0 +0 -0
- data/test/tmp/RackMultipart20100131-96373-nrglr4-0 +1 -0
- data/test/tmp/RackMultipart20100131-96373-tj67zf-0 +0 -0
- data/test/tmp/RackMultipart20100131-96373-y7mw5e-0 +0 -0
- data/test/tmp/RackMultipart20100131-96488-1c52jwo-0 +0 -0
- data/test/tmp/RackMultipart20100131-96488-1g4n5g3-0 +0 -0
- data/test/tmp/RackMultipart20100131-96488-1ih9vjx-0 +1 -0
- data/test/tmp/RackMultipart20100131-96488-1m67bqh-0 +1 -0
- data/test/tmp/RackMultipart20100131-96488-1sff2qf-0 +1 -0
- data/test/tmp/RackMultipart20100131-96488-1vxr0sz-0 +0 -0
- data/test/tmp/RackMultipart20100131-96488-f1va0r-0 +1 -0
- data/test/tmp/RackMultipart20100131-96488-godmi4-0 +0 -0
- data/test/tmp/RackMultipart20100131-96488-v7puqu-0 +1 -0
- data/test/tmp/RackMultipart20100131-96889-10srx2y-0 +1 -0
- data/test/tmp/RackMultipart20100131-96889-14sujbg-0 +1 -0
- data/test/tmp/RackMultipart20100131-96889-1edgzzr-0 +0 -0
- data/test/tmp/RackMultipart20100131-96889-1jtlvx0-0 +0 -0
- data/test/tmp/RackMultipart20100131-96889-1leo16l-0 +0 -0
- data/test/tmp/RackMultipart20100131-96889-1nroez0-0 +0 -0
- data/test/tmp/RackMultipart20100131-96889-2z4au4-0 +1 -0
- data/test/tmp/RackMultipart20100131-96889-v6dj39-0 +1 -0
- data/test/tmp/RackMultipart20100131-96889-z2owq5-0 +1 -0
- data/test/tmp/RackMultipart20100131-97178-1kzzmnx-0 +0 -0
- data/test/tmp/RackMultipart20100131-97178-1p48git-0 +0 -0
- data/test/tmp/RackMultipart20100131-97178-1pak2jq-0 +0 -0
- data/test/tmp/RackMultipart20100131-97178-1vb21z0-0 +1 -0
- data/test/tmp/RackMultipart20100131-97178-3pstpf-0 +1 -0
- data/test/tmp/RackMultipart20100131-97178-ah9j8g-0 +0 -0
- data/test/tmp/RackMultipart20100131-97178-dzgylu-0 +1 -0
- data/test/tmp/RackMultipart20100131-97178-eh8uuk-0 +1 -0
- data/test/tmp/RackMultipart20100131-97178-mompd7-0 +1 -0
- data/test/tmp/RackMultipart20100131-97404-11op195-0 +0 -0
- data/test/tmp/RackMultipart20100131-97404-15vgv5a-0 +0 -0
- data/test/tmp/RackMultipart20100131-97404-1ipzwm0-0 +1 -0
- data/test/tmp/RackMultipart20100131-97404-1je7x2p-0 +1 -0
- data/test/tmp/RackMultipart20100131-97404-1mb6juq-0 +0 -0
- data/test/tmp/RackMultipart20100131-97404-1uhf75x-0 +1 -0
- data/test/tmp/RackMultipart20100131-97404-4bkht5-0 +0 -0
- data/test/tmp/RackMultipart20100131-97404-8wsyqb-0 +1 -0
- data/test/tmp/RackMultipart20100131-97404-p5bwvt-0 +1 -0
- data/test/tmp/RackMultipart20100131-97860-134h0yk-0 +1 -0
- data/test/tmp/RackMultipart20100131-97860-137z1v8-0 +1 -0
- data/test/tmp/RackMultipart20100131-97860-1fxatvg-0 +1 -0
- data/test/tmp/RackMultipart20100131-97860-1rkrzj1-0 +0 -0
- data/test/tmp/RackMultipart20100131-97860-5aahhh-0 +0 -0
- data/test/tmp/RackMultipart20100131-97860-bk11df-0 +0 -0
- data/test/tmp/RackMultipart20100131-97860-bpt71-0 +0 -0
- data/test/tmp/RackMultipart20100131-97860-k5kib2-0 +1 -0
- data/test/tmp/RackMultipart20100131-97860-yj6uro-0 +1 -0
- data/test/tmp/RackMultipart20100131-97900-12zytln-0 +1 -0
- data/test/tmp/RackMultipart20100131-97900-1hpjwgc-0 +0 -0
- data/test/tmp/RackMultipart20100131-97900-1kuj8ok-0 +1 -0
- data/test/tmp/RackMultipart20100131-97900-1wtlnbe-0 +1 -0
- data/test/tmp/RackMultipart20100131-97900-66d1fg-0 +0 -0
- data/test/tmp/RackMultipart20100131-97900-m7hm3n-0 +1 -0
- data/test/tmp/RackMultipart20100131-97900-n2a8fd-0 +0 -0
- data/test/tmp/RackMultipart20100131-97900-y9kwnp-0 +1 -0
- data/test/tmp/RackMultipart20100131-97900-yu52kd-0 +0 -0
- data/test/tmp/RackMultipart20100131-97937-1fxbun8-0 +1 -0
- data/test/tmp/RackMultipart20100131-97937-1qjxhia-0 +1 -0
- data/test/tmp/RackMultipart20100131-97937-1vwp4fj-0 +1 -0
- data/test/tmp/RackMultipart20100131-97937-aha3dl-0 +0 -0
- data/test/tmp/RackMultipart20100131-97937-asyrei-0 +1 -0
- data/test/tmp/RackMultipart20100131-97937-d8rmsv-0 +1 -0
- data/test/tmp/RackMultipart20100131-97937-g9oy2w-0 +0 -0
- data/test/tmp/RackMultipart20100131-97937-lt544p-0 +0 -0
- data/test/tmp/RackMultipart20100131-97937-mgf4qa-0 +0 -0
- data/test/tmp/RackMultipart20100131-98521-1fdcemt-0 +0 -0
- data/test/tmp/RackMultipart20100131-98521-1l33j9z-0 +1 -0
- data/test/tmp/RackMultipart20100131-98521-1ohobk0-0 +0 -0
- data/test/tmp/RackMultipart20100131-98521-45jwmb-0 +1 -0
- data/test/tmp/RackMultipart20100131-98521-7vu49l-0 +1 -0
- data/test/tmp/RackMultipart20100131-98521-9kzlxx-0 +1 -0
- data/test/tmp/RackMultipart20100131-98521-cycfj-0 +0 -0
- data/test/tmp/RackMultipart20100131-98521-hhd1bf-0 +1 -0
- data/test/tmp/RackMultipart20100131-98521-iqvlrq-0 +0 -0
- data/test/tmp/RackMultipart20100201-6555-1ce2ok5-0 +1 -0
- data/test/tmp/RackMultipart20100201-6555-2rd8zm-0 +0 -0
- data/test/tmp/RackMultipart20100201-6555-9brifb-0 +0 -0
- data/test/tmp/RackMultipart20100201-6555-dcf8h0-0 +1 -0
- data/test/tmp/RackMultipart20100201-6555-meb4gi-0 +1 -0
- data/test/tmp/RackMultipart20100201-6555-sci6i5-0 +0 -0
- data/test/tmp/RackMultipart20100201-6555-sox363-0 +1 -0
- data/test/tmp/RackMultipart20100201-6555-x9kyyz-0 +0 -0
- data/test/tmp/RackMultipart20100201-6555-zqn4x6-0 +1 -0
- data/test/tmp/RackMultipart20100204-40252-123q4em-0 +1 -0
- data/test/tmp/RackMultipart20100204-40252-1jzjes5-0 +0 -0
- data/test/tmp/RackMultipart20100204-40252-1reve0y-0 +0 -0
- data/test/tmp/RackMultipart20100204-40252-1u2b3qm-0 +1 -0
- data/test/tmp/RackMultipart20100204-40252-3un54m-0 +1 -0
- data/test/tmp/RackMultipart20100204-40252-a2oh9b-0 +0 -0
- data/test/tmp/RackMultipart20100204-40252-od0run-0 +1 -0
- data/test/tmp/RackMultipart20100204-40252-qbgvnt-0 +0 -0
- data/test/tmp/RackMultipart20100204-40252-tey6cp-0 +1 -0
- data/test/tmp/RackMultipart20100204-40512-15nitzo-0 +0 -0
- data/test/tmp/RackMultipart20100204-40512-18g0pdd-0 +0 -0
- data/test/tmp/RackMultipart20100204-40512-1brd1j2-0 +1 -0
- data/test/tmp/RackMultipart20100204-40512-1fz7mb1-0 +0 -0
- data/test/tmp/RackMultipart20100204-40512-1n1muze-0 +1 -0
- data/test/tmp/RackMultipart20100204-40512-1q3r24f-0 +1 -0
- data/test/tmp/RackMultipart20100204-40512-1tnhl3y-0 +1 -0
- data/test/tmp/RackMultipart20100204-40512-okgtu4-0 +0 -0
- data/test/tmp/RackMultipart20100204-40512-qn5sg0-0 +1 -0
- data/test/tmp/RackMultipart20100204-57419-15yya1x-0 +1 -0
- data/test/tmp/RackMultipart20100204-57419-19m1c3d-0 +0 -0
- data/test/tmp/RackMultipart20100204-57419-1n7d3i6-0 +1 -0
- data/test/tmp/RackMultipart20100204-57419-1npqntd-0 +0 -0
- data/test/tmp/RackMultipart20100204-57419-bklpgc-0 +1 -0
- data/test/tmp/RackMultipart20100204-57419-ei91e5-0 +0 -0
- data/test/tmp/RackMultipart20100204-57419-g1hqwp-0 +1 -0
- data/test/tmp/RackMultipart20100204-57419-t7ag5k-0 +0 -0
- data/test/tmp/RackMultipart20100204-57419-xiebhk-0 +1 -0
- data/test/tmp/RackMultipart20100204-57658-16cfrux-0 +1 -0
- data/test/tmp/RackMultipart20100204-57658-19wbkan-0 +1 -0
- data/test/tmp/RackMultipart20100204-57658-1qptexw-0 +0 -0
- data/test/tmp/RackMultipart20100204-57658-1u2bpg8-0 +0 -0
- data/test/tmp/RackMultipart20100204-57658-1v8jrhq-0 +0 -0
- data/test/tmp/RackMultipart20100204-57658-48l4m0-0 +1 -0
- data/test/tmp/RackMultipart20100204-57658-hpw0o9-0 +1 -0
- data/test/tmp/RackMultipart20100204-57658-l75jof-0 +1 -0
- data/test/tmp/RackMultipart20100204-57658-t3or19-0 +0 -0
- data/test/tmp/RackMultipart20100204-57712-101mfz2-0 +1 -0
- data/test/tmp/RackMultipart20100204-57712-136zsqs-0 +0 -0
- data/test/tmp/RackMultipart20100204-57712-16ge0ra-0 +1 -0
- data/test/tmp/RackMultipart20100204-57712-18dppuc-0 +0 -0
- data/test/tmp/RackMultipart20100204-57712-1aj6ady-0 +0 -0
- data/test/tmp/RackMultipart20100204-57712-1nqkndh-0 +1 -0
- data/test/tmp/RackMultipart20100204-57712-1pngw5w-0 +1 -0
- data/test/tmp/RackMultipart20100204-57712-6lo90o-0 +1 -0
- data/test/tmp/RackMultipart20100204-57712-ufq7x-0 +0 -0
- data/test/tmp/RackMultipart20100204-58321-10lc3a6-0 +1 -0
- data/test/tmp/RackMultipart20100204-58321-15o8a4o-0 +0 -0
- data/test/tmp/RackMultipart20100204-58321-1sos76-0 +1 -0
- data/test/tmp/RackMultipart20100204-58321-26876u-0 +1 -0
- data/test/tmp/RackMultipart20100204-58321-hnz5b8-0 +0 -0
- data/test/tmp/RackMultipart20100204-58321-lrmvfa-0 +1 -0
- data/test/tmp/RackMultipart20100204-58321-q0ak2g-0 +1 -0
- data/test/tmp/RackMultipart20100204-58321-sa8wal-0 +0 -0
- data/test/tmp/RackMultipart20100204-58321-z7jxeq-0 +0 -0
- data/test/tmp/RackMultipart20100204-59702-1fdw43n-0 +1 -0
- data/test/tmp/RackMultipart20100204-59702-2hf4ld-0 +1 -0
- data/test/tmp/RackMultipart20100204-59702-2ldyxj-0 +0 -0
- data/test/tmp/RackMultipart20100204-59702-aqevfm-0 +1 -0
- data/test/tmp/RackMultipart20100204-59702-dpbv5t-0 +0 -0
- data/test/tmp/RackMultipart20100204-59702-ec8276-0 +1 -0
- data/test/tmp/RackMultipart20100204-59702-jn6ncc-0 +1 -0
- data/test/tmp/RackMultipart20100204-59702-m8xobr-0 +0 -0
- data/test/tmp/RackMultipart20100204-59702-q89plk-0 +0 -0
- data/test/tmp/RackMultipart20100204-59747-14sdb6-0 +1 -0
- data/test/tmp/RackMultipart20100204-59747-15742uk-0 +1 -0
- data/test/tmp/RackMultipart20100204-59747-15lp9kl-0 +0 -0
- data/test/tmp/RackMultipart20100204-59747-1a7ub6i-0 +0 -0
- data/test/tmp/RackMultipart20100204-59747-1i77fp1-0 +1 -0
- data/test/tmp/RackMultipart20100204-59747-1mfl7gf-0 +0 -0
- data/test/tmp/RackMultipart20100204-59747-1qrkt89-0 +0 -0
- data/test/tmp/RackMultipart20100204-59747-6biaui-0 +1 -0
- data/test/tmp/RackMultipart20100204-59747-m7iqd0-0 +1 -0
- data/test/tmp/RackMultipart20100204-60097-1kgjis5-0 +0 -0
- data/test/tmp/RackMultipart20100204-60097-1odv8os-0 +1 -0
- data/test/tmp/RackMultipart20100204-60097-1p5yvyk-0 +0 -0
- data/test/tmp/RackMultipart20100204-60097-43si9w-0 +1 -0
- data/test/tmp/RackMultipart20100204-60097-awjfar-0 +1 -0
- data/test/tmp/RackMultipart20100204-60097-d7g9gf-0 +1 -0
- data/test/tmp/RackMultipart20100204-60097-fmxwtb-0 +0 -0
- data/test/tmp/RackMultipart20100204-60097-i8r8ph-0 +0 -0
- data/test/tmp/RackMultipart20100204-60097-yv1urn-0 +1 -0
- data/test/tmp/RackMultipart20100204-60773-14k87gs-0 +1 -0
- data/test/tmp/RackMultipart20100204-60773-15uh5fc-0 +1 -0
- data/test/tmp/RackMultipart20100204-60773-1b4gi3-0 +1 -0
- data/test/tmp/RackMultipart20100204-60773-1g0sg6r-0 +1 -0
- data/test/tmp/RackMultipart20100204-60773-1jgjbwl-0 +0 -0
- data/test/tmp/RackMultipart20100204-60773-1kk50pp-0 +0 -0
- data/test/tmp/RackMultipart20100204-60773-1xktk0q-0 +0 -0
- data/test/tmp/RackMultipart20100204-60773-jcuq05-0 +1 -0
- data/test/tmp/RackMultipart20100204-60773-og04od-0 +0 -0
- data/test/tmp/RackMultipart20100205-69480-169yh4u-0 +1 -0
- data/test/tmp/RackMultipart20100205-69480-16ry3sk-0 +0 -0
- data/test/tmp/RackMultipart20100205-69480-1dm58eb-0 +1 -0
- data/test/tmp/RackMultipart20100205-69480-1e6dfel-0 +1 -0
- data/test/tmp/RackMultipart20100205-69480-1knio7h-0 +0 -0
- data/test/tmp/RackMultipart20100205-69480-1rxthf1-0 +1 -0
- data/test/tmp/RackMultipart20100205-69480-1sqp1p6-0 +1 -0
- data/test/tmp/RackMultipart20100205-69480-k3c5xi-0 +0 -0
- data/test/tmp/RackMultipart20100205-69480-y0o7bs-0 +0 -0
- data/test/tmp/RackMultipart20100205-89390-12t4t4h-0 +0 -0
- data/test/tmp/RackMultipart20100205-89390-18sku49-0 +1 -0
- data/test/tmp/RackMultipart20100205-89390-1aeaxrj-0 +0 -0
- data/test/tmp/RackMultipart20100205-89390-1ej1o6b-0 +0 -0
- data/test/tmp/RackMultipart20100205-89390-1qbye80-0 +1 -0
- data/test/tmp/RackMultipart20100205-89390-1t2reiw-0 +0 -0
- data/test/tmp/RackMultipart20100205-89390-2j4ebh-0 +1 -0
- data/test/tmp/RackMultipart20100205-89390-cqkz93-0 +1 -0
- data/test/tmp/RackMultipart20100205-89390-ehlxym-0 +1 -0
- data/test/tmp/RackMultipart20100207-41099-1db1yc7-0 +0 -0
- data/test/tmp/RackMultipart20100207-41099-1enfwih-0 +0 -0
- data/test/tmp/RackMultipart20100207-41099-1hiqogn-0 +1 -0
- data/test/tmp/RackMultipart20100207-41099-1n21xz7-0 +0 -0
- data/test/tmp/RackMultipart20100207-41099-1ofbaxj-0 +0 -0
- data/test/tmp/RackMultipart20100207-41099-1pqhw0q-0 +1 -0
- data/test/tmp/RackMultipart20100207-41099-1s6zxzw-0 +1 -0
- data/test/tmp/RackMultipart20100207-41099-asxuq9-0 +1 -0
- data/test/tmp/RackMultipart20100207-41099-eowd6o-0 +1 -0
- data/test/tmp/RackMultipart20100209-65426-10ag1jr-0 +1 -0
- data/test/tmp/RackMultipart20100209-65426-13zm3yu-0 +0 -0
- data/test/tmp/RackMultipart20100209-65426-1otg9r6-0 +0 -0
- data/test/tmp/RackMultipart20100209-65426-1rdz5v6-0 +1 -0
- data/test/tmp/RackMultipart20100209-65426-1usq2ff-0 +1 -0
- data/test/tmp/RackMultipart20100209-65426-1wxs8n7-0 +1 -0
- data/test/tmp/RackMultipart20100209-65426-4uffbj-0 +1 -0
- data/test/tmp/RackMultipart20100209-65426-a5hra7-0 +0 -0
- data/test/tmp/RackMultipart20100209-65426-ylpq1h-0 +0 -0
- data/test/tmp/RackMultipart20100209-65558-1bghj62-0 +0 -0
- data/test/tmp/RackMultipart20100209-65558-1fbovnp-0 +1 -0
- data/test/tmp/RackMultipart20100209-65558-1hfwl02-0 +1 -0
- data/test/tmp/RackMultipart20100209-65558-b35wyr-0 +0 -0
- data/test/tmp/RackMultipart20100209-65558-esd0f1-0 +1 -0
- data/test/tmp/RackMultipart20100209-65558-gq26ri-0 +0 -0
- data/test/tmp/RackMultipart20100209-65558-mwizdx-0 +1 -0
- data/test/tmp/RackMultipart20100209-65558-ntlzq6-0 +1 -0
- data/test/tmp/RackMultipart20100209-65558-yoxcgc-0 +0 -0
- data/test/tmp/RackMultipart20100212-43647-12bo3g0-0 +0 -0
- data/test/tmp/RackMultipart20100212-43647-133b4b8-0 +1 -0
- data/test/tmp/RackMultipart20100212-43647-1b2g7f7-0 +1 -0
- data/test/tmp/RackMultipart20100212-43647-1et2ima-0 +0 -0
- data/test/tmp/RackMultipart20100212-43647-1thip8b-0 +1 -0
- data/test/tmp/RackMultipart20100212-43647-1x05hpf-0 +1 -0
- data/test/tmp/RackMultipart20100212-43647-cbseb3-0 +0 -0
- data/test/tmp/RackMultipart20100212-43647-mybv0k-0 +1 -0
- data/test/tmp/RackMultipart20100212-43647-scxg3k-0 +0 -0
- data/test/tmp/RackMultipart20100316-26215-15fvlkf-0 +1 -0
- data/test/tmp/RackMultipart20100316-26215-15ms9t8-0 +0 -0
- data/test/tmp/RackMultipart20100316-26215-196k138-0 +0 -0
- data/test/tmp/RackMultipart20100316-26215-1qbnikd-0 +1 -0
- data/test/tmp/RackMultipart20100316-26215-1tey31-0 +1 -0
- data/test/tmp/RackMultipart20100316-26215-dp0rwx-0 +0 -0
- data/test/tmp/RackMultipart20100316-26215-lmfp1-0 +1 -0
- data/test/tmp/RackMultipart20100316-26215-njsjmn-0 +0 -0
- data/test/tmp/RackMultipart20100316-26215-z39dzf-0 +1 -0
- data/test/tmp/mona_lisa.jpg20100114-2850-1t73ev7-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100127-16318-1bffb05-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-1041-1rvua2k-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-1200-i3rods-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-1566-18mcqh9-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-2176-1t3bsp-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-2251-1tz4wqa-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-2563-ohvnnb-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-3076-m9pk9y-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-3324-9rpzdj-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-3712-wf4b9m-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-4098-l9cg9j-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-4178-vk5vzl-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-4297-ger5pb-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-4434-1bacf3n-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-4544-1mod9m0-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-4655-14v218s-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-5244-j05927-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-5383-immke7-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-5711-li3y72-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-91110-1tcf6h5-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-91876-1qvpsdp-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-93665-e6omtk-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-96270-l86z07-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-96373-du21ld-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-96488-14o5536-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-96889-1gtncmi-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-97178-1ppkuxt-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-97404-kcrmpr-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-97860-q1g3ex-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-97900-1mp4tmq-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-97937-o67sr4-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-98521-jd7yia-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100201-6555-1vw40l7-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100204-40252-13zlhuo-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100204-40512-nc3x8n-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100204-57419-7yfe6o-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100204-57658-b4op4h-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100204-57712-11uqh50-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100204-58321-ukp8q0-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100204-59747-ov4w4c-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100204-60097-1ekqjc6-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100204-60773-1eh6ap6-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100205-69480-tay2k2-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100205-89390-16rh2ue-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100205-91358-cdsa2g-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100207-41099-llyyhb-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100209-65426-pequnv-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100209-65558-fbl6xv-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100212-43647-l1vsxc-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100316-26215-1jtjllg-0 +0 -0
- metadata +542 -18
- data/lib/action_view/erb/util.rb +0 -44
- data/lib/action_view/safe_buffer.rb +0 -28
- data/test/view/safe_buffer_test.rb +0 -36
|
@@ -604,7 +604,7 @@ class FragmentCachingTest < ActionController::TestCase
|
|
|
604
604
|
@store.write('views/expensive', 'fragment content')
|
|
605
605
|
fragment_computed = false
|
|
606
606
|
|
|
607
|
-
buffer = 'generated till now -> '
|
|
607
|
+
buffer = 'generated till now -> '.html_safe
|
|
608
608
|
@controller.fragment_for(buffer, 'expensive') { fragment_computed = true }
|
|
609
609
|
|
|
610
610
|
assert fragment_computed
|
|
@@ -615,12 +615,26 @@ class FragmentCachingTest < ActionController::TestCase
|
|
|
615
615
|
@store.write('views/expensive', 'fragment content')
|
|
616
616
|
fragment_computed = false
|
|
617
617
|
|
|
618
|
-
buffer = 'generated till now -> '
|
|
618
|
+
buffer = 'generated till now -> '.html_safe
|
|
619
619
|
@controller.fragment_for(buffer, 'expensive') { fragment_computed = true }
|
|
620
620
|
|
|
621
621
|
assert !fragment_computed
|
|
622
622
|
assert_equal 'generated till now -> fragment content', buffer
|
|
623
623
|
end
|
|
624
|
+
|
|
625
|
+
def test_html_safety
|
|
626
|
+
assert_nil @store.read('views/name')
|
|
627
|
+
content = 'value'.html_safe
|
|
628
|
+
assert_equal content, @controller.write_fragment('name', content)
|
|
629
|
+
|
|
630
|
+
cached = @store.read('views/name')
|
|
631
|
+
assert_equal content, cached
|
|
632
|
+
assert_equal String, cached.class
|
|
633
|
+
|
|
634
|
+
html_safe = @controller.read_fragment('name')
|
|
635
|
+
assert_equal content, html_safe
|
|
636
|
+
assert html_safe.html_safe?
|
|
637
|
+
end
|
|
624
638
|
end
|
|
625
639
|
|
|
626
640
|
class FunctionalCachingController < ActionController::Base
|
|
@@ -2,6 +2,8 @@ require 'abstract_unit'
|
|
|
2
2
|
|
|
3
3
|
class CookieTest < ActionController::TestCase
|
|
4
4
|
class TestController < ActionController::Base
|
|
5
|
+
self.cookie_verifier_secret = "thisISverySECRET123"
|
|
6
|
+
|
|
5
7
|
def authenticate
|
|
6
8
|
cookies["user_name"] = "david"
|
|
7
9
|
end
|
|
@@ -39,6 +41,18 @@ class CookieTest < ActionController::TestCase
|
|
|
39
41
|
def authenticate_with_http_only
|
|
40
42
|
cookies["user_name"] = { :value => "david", :httponly => true }
|
|
41
43
|
end
|
|
44
|
+
|
|
45
|
+
def set_permanent_cookie
|
|
46
|
+
cookies.permanent[:user_name] = "Jamie"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def set_signed_cookie
|
|
50
|
+
cookies.signed[:user_id] = 45
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def set_permanent_signed_cookie
|
|
54
|
+
cookies.permanent.signed[:remember_me] = 100
|
|
55
|
+
end
|
|
42
56
|
|
|
43
57
|
def rescue_action(e)
|
|
44
58
|
raise unless ActionView::MissingTemplate # No templates here, and we don't care about the output
|
|
@@ -131,4 +145,26 @@ class CookieTest < ActionController::TestCase
|
|
|
131
145
|
cookies = @controller.send(:cookies)
|
|
132
146
|
assert_equal 'david', cookies['user_name']
|
|
133
147
|
end
|
|
134
|
-
|
|
148
|
+
|
|
149
|
+
def test_permanent_cookie
|
|
150
|
+
get :set_permanent_cookie
|
|
151
|
+
assert_match /Jamie/, @response.headers["Set-Cookie"].first
|
|
152
|
+
assert_match %r(#{20.years.from_now.year}), @response.headers["Set-Cookie"].first
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def test_signed_cookie
|
|
156
|
+
get :set_signed_cookie
|
|
157
|
+
assert_equal 45, @controller.send(:cookies).signed[:user_id]
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def test_accessing_nonexistant_signed_cookie_should_not_raise_an_invalid_signature
|
|
161
|
+
get :set_signed_cookie
|
|
162
|
+
assert_nil @controller.send(:cookies).signed[:non_existant_attribute]
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def test_permanent_signed_cookie
|
|
166
|
+
get :set_permanent_signed_cookie
|
|
167
|
+
assert_match %r(#{20.years.from_now.year}), @response.headers["Set-Cookie"].first
|
|
168
|
+
assert_equal 100, @controller.send(:cookies).signed[:remember_me]
|
|
169
|
+
end
|
|
170
|
+
end
|
|
@@ -71,6 +71,18 @@ class FlashTest < ActionController::TestCase
|
|
|
71
71
|
redirect_to :action => "std_action"
|
|
72
72
|
@flash_copy = {}.update(flash)
|
|
73
73
|
end
|
|
74
|
+
|
|
75
|
+
def redirect_with_alert
|
|
76
|
+
redirect_to '/nowhere', :alert => "Beware the nowheres!"
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def redirect_with_notice
|
|
80
|
+
redirect_to '/somewhere', :notice => "Good luck in the somewheres!"
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def redirect_with_other_flashes
|
|
84
|
+
redirect_to '/wonderland', :flash => { :joyride => "Horses!" }
|
|
85
|
+
end
|
|
74
86
|
end
|
|
75
87
|
|
|
76
88
|
tests TestController
|
|
@@ -144,4 +156,19 @@ class FlashTest < ActionController::TestCase
|
|
|
144
156
|
get :std_action
|
|
145
157
|
assert_nil session["flash"]
|
|
146
158
|
end
|
|
147
|
-
|
|
159
|
+
|
|
160
|
+
def test_redirect_to_with_alert
|
|
161
|
+
get :redirect_with_alert
|
|
162
|
+
assert_equal "Beware the nowheres!", @controller.send(:flash)[:alert]
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def test_redirect_to_with_notice
|
|
166
|
+
get :redirect_with_notice
|
|
167
|
+
assert_equal "Good luck in the somewheres!", @controller.send(:flash)[:notice]
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
def test_redirect_to_with_other_flashes
|
|
171
|
+
get :redirect_with_other_flashes
|
|
172
|
+
assert_equal "Horses!", @controller.send(:flash)[:joyride]
|
|
173
|
+
end
|
|
174
|
+
end
|
|
@@ -324,7 +324,6 @@ class IntegrationProcessTest < ActionController::IntegrationTest
|
|
|
324
324
|
assert_equal "Gone", status_message
|
|
325
325
|
assert_response 410
|
|
326
326
|
assert_response :gone
|
|
327
|
-
assert_equal "cookie_1=; path=/\ncookie_3=chocolate; path=/", headers["Set-Cookie"]
|
|
328
327
|
assert_equal({"cookie_1"=>"", "cookie_2"=>"oatmeal", "cookie_3"=>"chocolate"}, cookies)
|
|
329
328
|
assert_equal "Gone", response.body
|
|
330
329
|
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'abstract_unit'
|
|
2
|
+
|
|
3
|
+
class LocalizedController < ActionController::Base
|
|
4
|
+
def hello_world
|
|
5
|
+
end
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class LocalizedTemplatesTest < ActionController::TestCase
|
|
9
|
+
tests LocalizedController
|
|
10
|
+
|
|
11
|
+
teardown { I18n.locale = :en }
|
|
12
|
+
|
|
13
|
+
def test_localized_template_is_used
|
|
14
|
+
I18n.locale = :de
|
|
15
|
+
get :hello_world
|
|
16
|
+
assert_equal "Gutten Tag", @response.body
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_default_locale_template_is_used_when_locale_is_missing
|
|
20
|
+
I18n.locale = :dk
|
|
21
|
+
get :hello_world
|
|
22
|
+
assert_equal "Hello World", @response.body
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'abstract_unit'
|
|
2
|
+
|
|
3
|
+
class OutputEscapingTest < ActiveSupport::TestCase
|
|
4
|
+
|
|
5
|
+
test "escape_html shouldn't die when passed nil" do
|
|
6
|
+
assert ERB::Util.h(nil).blank?
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
test "escapeHTML should escape strings" do
|
|
10
|
+
assert_equal "<>"", ERB::Util.h("<>\"")
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
test "escapeHTML shouldn't touch explicitly safe strings" do
|
|
14
|
+
# TODO this seems easier to compose and reason about, but
|
|
15
|
+
# this should be verified
|
|
16
|
+
assert_equal "<", ERB::Util.h("<".html_safe)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -219,7 +219,6 @@ class RackResponseTest < BaseRackTest
|
|
|
219
219
|
"Content-Type" => "text/html; charset=utf-8",
|
|
220
220
|
"Cache-Control" => "private, max-age=0, must-revalidate",
|
|
221
221
|
"ETag" => '"65a8e27d8879283831b664bd8b7f0ad4"',
|
|
222
|
-
"Set-Cookie" => "",
|
|
223
222
|
"Content-Length" => "13"
|
|
224
223
|
}, headers)
|
|
225
224
|
|
|
@@ -238,7 +237,6 @@ class RackResponseTest < BaseRackTest
|
|
|
238
237
|
"Content-Type" => "text/html; charset=utf-8",
|
|
239
238
|
"Cache-Control" => "private, max-age=0, must-revalidate",
|
|
240
239
|
"ETag" => '"ebb5e89e8a94e9dd22abf5d915d112b2"',
|
|
241
|
-
"Set-Cookie" => "",
|
|
242
240
|
"Content-Length" => "8"
|
|
243
241
|
}, headers)
|
|
244
242
|
end
|
|
@@ -253,8 +251,7 @@ class RackResponseTest < BaseRackTest
|
|
|
253
251
|
assert_equal 200, status
|
|
254
252
|
assert_equal({
|
|
255
253
|
"Content-Type" => "text/html; charset=utf-8",
|
|
256
|
-
"Cache-Control" => "no-cache"
|
|
257
|
-
"Set-Cookie" => ""
|
|
254
|
+
"Cache-Control" => "no-cache"
|
|
258
255
|
}, headers)
|
|
259
256
|
|
|
260
257
|
parts = []
|
|
@@ -652,6 +652,10 @@ class TestController < ActionController::Base
|
|
|
652
652
|
render :partial => "customer_counter", :collection => [ Customer.new("david"), Customer.new("mary") ]
|
|
653
653
|
end
|
|
654
654
|
|
|
655
|
+
def partial_collection_with_as_and_counter
|
|
656
|
+
render :partial => "customer_counter_with_as", :collection => [ Customer.new("david"), Customer.new("mary") ], :as => :client
|
|
657
|
+
end
|
|
658
|
+
|
|
655
659
|
def partial_collection_with_locals
|
|
656
660
|
render :partial => "customer_greeting", :collection => [ Customer.new("david"), Customer.new("mary") ], :locals => { :greeting => "Bonjour" }
|
|
657
661
|
end
|
|
@@ -1470,6 +1474,11 @@ class RenderTest < ActionController::TestCase
|
|
|
1470
1474
|
assert_equal "david0mary1", @response.body
|
|
1471
1475
|
end
|
|
1472
1476
|
|
|
1477
|
+
def test_partial_collection_with_as_and_counter
|
|
1478
|
+
get :partial_collection_with_as_and_counter
|
|
1479
|
+
assert_equal "david0mary1", @response.body
|
|
1480
|
+
end
|
|
1481
|
+
|
|
1473
1482
|
def test_partial_collection_with_locals
|
|
1474
1483
|
get :partial_collection_with_locals
|
|
1475
1484
|
assert_equal "Bonjour: davidBonjour: mary", @response.body
|
|
@@ -1590,7 +1599,7 @@ class EtagRenderTest < ActionController::TestCase
|
|
|
1590
1599
|
|
|
1591
1600
|
def test_render_blank_body_shouldnt_set_etag
|
|
1592
1601
|
get :blank_response
|
|
1593
|
-
assert !@response.etag
|
|
1602
|
+
assert !@response.etag?, @response.headers.inspect
|
|
1594
1603
|
end
|
|
1595
1604
|
|
|
1596
1605
|
def test_render_200_should_set_etag
|
|
@@ -1609,7 +1618,7 @@ class EtagRenderTest < ActionController::TestCase
|
|
|
1609
1618
|
def test_render_against_etag_request_should_have_no_content_length_when_match
|
|
1610
1619
|
@request.if_none_match = etag_for("hello david")
|
|
1611
1620
|
get :render_hello_world_from_variable
|
|
1612
|
-
|
|
1621
|
+
assert_nil @response.headers["Content-Length"], @response.headers.inspect
|
|
1613
1622
|
end
|
|
1614
1623
|
|
|
1615
1624
|
def test_render_against_etag_request_should_200_when_no_match
|
|
@@ -281,17 +281,23 @@ class RescueControllerTest < ActionController::TestCase
|
|
|
281
281
|
end
|
|
282
282
|
|
|
283
283
|
def test_local_request_when_remote_addr_is_localhost
|
|
284
|
-
@controller.expects(:request).returns(@request).
|
|
284
|
+
@controller.expects(:request).returns(@request).at_least(4)
|
|
285
285
|
with_remote_addr '127.0.0.1' do
|
|
286
286
|
assert @controller.send(:local_request?)
|
|
287
287
|
end
|
|
288
|
+
with_remote_addr '::1' do
|
|
289
|
+
assert @controller.send(:local_request?)
|
|
290
|
+
end
|
|
288
291
|
end
|
|
289
292
|
|
|
290
293
|
def test_local_request_when_remote_addr_isnt_locahost
|
|
291
|
-
@controller.expects(:request).returns(@request)
|
|
294
|
+
@controller.expects(:request).returns(@request).at_least(4)
|
|
292
295
|
with_remote_addr '1.2.3.4' do
|
|
293
296
|
assert !@controller.send(:local_request?)
|
|
294
297
|
end
|
|
298
|
+
with_remote_addr '2002::102:304' do
|
|
299
|
+
assert !@controller.send(:local_request?)
|
|
300
|
+
end
|
|
295
301
|
end
|
|
296
302
|
|
|
297
303
|
def test_rescue_responses
|
|
@@ -145,7 +145,7 @@ class CookieStoreTest < ActionController::IntegrationTest
|
|
|
145
145
|
with_test_route_set do
|
|
146
146
|
get '/no_session_access'
|
|
147
147
|
assert_response :success
|
|
148
|
-
assert_equal
|
|
148
|
+
assert_equal nil, headers['Set-Cookie']
|
|
149
149
|
end
|
|
150
150
|
end
|
|
151
151
|
|
|
@@ -155,7 +155,7 @@ class CookieStoreTest < ActionController::IntegrationTest
|
|
|
155
155
|
"fef868465920f415f2c0652d6910d3af288a0367"
|
|
156
156
|
get '/no_session_access'
|
|
157
157
|
assert_response :success
|
|
158
|
-
assert_equal
|
|
158
|
+
assert_equal nil, headers['Set-Cookie']
|
|
159
159
|
end
|
|
160
160
|
end
|
|
161
161
|
|
|
@@ -65,9 +65,11 @@ class UrlRewriterTests < ActionController::TestCase
|
|
|
65
65
|
@params[:action] = 'bye'
|
|
66
66
|
@params[:id] = '2'
|
|
67
67
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
assert_deprecated /overwrite_params/ do
|
|
69
|
+
assert_equal '/hi/hi/2', @rewriter.rewrite(:only_path => true, :overwrite_params => {:action => 'hi'})
|
|
70
|
+
u = @rewriter.rewrite(:only_path => false, :overwrite_params => {:action => 'hi'})
|
|
71
|
+
assert_match %r(/hi/hi/2$), u
|
|
72
|
+
end
|
|
71
73
|
end
|
|
72
74
|
|
|
73
75
|
def test_overwrite_removes_original
|
|
@@ -75,9 +77,11 @@ class UrlRewriterTests < ActionController::TestCase
|
|
|
75
77
|
@params[:action] = 'list'
|
|
76
78
|
@params[:list_page] = 1
|
|
77
79
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
80
|
+
assert_deprecated /overwrite_params/ do
|
|
81
|
+
assert_equal '/search/list?list_page=2', @rewriter.rewrite(:only_path => true, :overwrite_params => {"list_page" => 2})
|
|
82
|
+
u = @rewriter.rewrite(:only_path => false, :overwrite_params => {:list_page => 2})
|
|
83
|
+
assert_equal 'http://test.host/search/list?list_page=2', u
|
|
84
|
+
end
|
|
81
85
|
end
|
|
82
86
|
|
|
83
87
|
def test_to_str
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Gutten Tag
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Hello World
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= client.name %><%= client_counter %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= "текст" %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= t(['foo', 'bar']) %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= t(['.foo', '.bar']) %>
|
|
@@ -2,7 +2,7 @@ require 'abstract_unit'
|
|
|
2
2
|
|
|
3
3
|
class ActiveRecordHelperI18nTest < Test::Unit::TestCase
|
|
4
4
|
include ActionView::Helpers::ActiveRecordHelper
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
attr_reader :request
|
|
7
7
|
def setup
|
|
8
8
|
@object = stub :errors => stub(:count => 1, :full_messages => ['full_messages'])
|
|
@@ -35,10 +35,17 @@ class ActiveRecordHelperI18nTest < Test::Unit::TestCase
|
|
|
35
35
|
I18n.expects(:t).with('', :default => '', :count => 1, :scope => [:activerecord, :models]).once.returns ''
|
|
36
36
|
error_messages_for(:object => @object, :locale => 'en')
|
|
37
37
|
end
|
|
38
|
-
|
|
38
|
+
|
|
39
39
|
def test_error_messages_for_given_object_name_it_translates_object_name
|
|
40
40
|
I18n.expects(:t).with(:header, :locale => 'en', :scope => [:activerecord, :errors, :template], :count => 1, :model => @object_name).returns "1 error prohibited this #{@object_name} from being saved"
|
|
41
41
|
I18n.expects(:t).with(@object_name, :default => @object_name, :count => 1, :scope => [:activerecord, :models]).once.returns @object_name
|
|
42
42
|
error_messages_for(:object => @object, :locale => 'en', :object_name => @object_name)
|
|
43
43
|
end
|
|
44
|
+
|
|
45
|
+
def test_error_messages_for_given_object_name_with_underscore_it_translates_object_name
|
|
46
|
+
I18n.expects(:t).with('bank_account', :default => 'bank account', :count => 1, :scope => [:activerecord, :models]).once.returns 'bank account'
|
|
47
|
+
I18n.expects(:t).with(:header, :locale => 'en', :scope => [:activerecord, :errors, :template], :count => 1, :model => 'bank account').returns "1 error prohibited this bank account from being saved"
|
|
48
|
+
error_messages_for(:object => @object, :locale => 'en', :object_name => 'bank_account')
|
|
49
|
+
end
|
|
44
50
|
end
|
|
51
|
+
|
|
@@ -128,7 +128,6 @@ class AssetTagHelperTest < ActionView::TestCase
|
|
|
128
128
|
|
|
129
129
|
ImageLinkToTag = {
|
|
130
130
|
%(image_tag("xml.png")) => %(<img alt="Xml" src="/images/xml.png" />),
|
|
131
|
-
%(image_tag("..jpg")) => %(<img alt="" src="/images/..jpg" />),
|
|
132
131
|
%(image_tag("rss.gif", :alt => "rss syndication")) => %(<img alt="rss syndication" src="/images/rss.gif" />),
|
|
133
132
|
%(image_tag("gold.png", :size => "45x70")) => %(<img alt="Gold" height="70" src="/images/gold.png" width="45" />),
|
|
134
133
|
%(image_tag("gold.png", "size" => "45x70")) => %(<img alt="Gold" height="70" src="/images/gold.png" width="45" />),
|
|
@@ -1229,6 +1229,23 @@ class DateHelperTest < ActionView::TestCase
|
|
|
1229
1229
|
assert_dom_equal expected, date_select("post", "written_on", :order => [ :month, :year ])
|
|
1230
1230
|
end
|
|
1231
1231
|
|
|
1232
|
+
def test_date_select_without_day_and_with_disabled_html_option
|
|
1233
|
+
@post = Post.new
|
|
1234
|
+
@post.written_on = Date.new(2004, 6, 15)
|
|
1235
|
+
|
|
1236
|
+
expected = "<input type=\"hidden\" id=\"post_written_on_3i\" disabled=\"disabled\" name=\"post[written_on(3i)]\" value=\"1\" />\n"
|
|
1237
|
+
|
|
1238
|
+
expected << %{<select id="post_written_on_2i" disabled="disabled" name="post[written_on(2i)]">\n}
|
|
1239
|
+
expected << %{<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n}
|
|
1240
|
+
expected << "</select>\n"
|
|
1241
|
+
|
|
1242
|
+
expected << %{<select id="post_written_on_1i" disabled="disabled" name="post[written_on(1i)]">\n}
|
|
1243
|
+
expected << %{<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n}
|
|
1244
|
+
expected << "</select>\n"
|
|
1245
|
+
|
|
1246
|
+
assert_dom_equal expected, date_select("post", "written_on", { :order => [ :month, :year ] }, :disabled => true)
|
|
1247
|
+
end
|
|
1248
|
+
|
|
1232
1249
|
def test_date_select_within_fields_for
|
|
1233
1250
|
@post = Post.new
|
|
1234
1251
|
@post.written_on = Date.new(2004, 6, 15)
|
|
@@ -1713,6 +1730,25 @@ class DateHelperTest < ActionView::TestCase
|
|
|
1713
1730
|
assert_dom_equal expected, time_select("post", "written_on", :prompt => {:hour => 'Choose hour', :minute => 'Choose minute'})
|
|
1714
1731
|
end
|
|
1715
1732
|
|
|
1733
|
+
def test_time_select_with_disabled_html_option
|
|
1734
|
+
@post = Post.new
|
|
1735
|
+
@post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
|
|
1736
|
+
|
|
1737
|
+
expected = %{<input type="hidden" id="post_written_on_1i" disabled="disabled" name="post[written_on(1i)]" value="2004" />\n}
|
|
1738
|
+
expected << %{<input type="hidden" id="post_written_on_2i" disabled="disabled" name="post[written_on(2i)]" value="6" />\n}
|
|
1739
|
+
expected << %{<input type="hidden" id="post_written_on_3i" disabled="disabled" name="post[written_on(3i)]" value="15" />\n}
|
|
1740
|
+
|
|
1741
|
+
expected << %(<select id="post_written_on_4i" disabled="disabled" name="post[written_on(4i)]">\n)
|
|
1742
|
+
0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
|
|
1743
|
+
expected << "</select>\n"
|
|
1744
|
+
expected << " : "
|
|
1745
|
+
expected << %(<select id="post_written_on_5i" disabled="disabled" name="post[written_on(5i)]">\n)
|
|
1746
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
|
|
1747
|
+
expected << "</select>\n"
|
|
1748
|
+
|
|
1749
|
+
assert_dom_equal expected, time_select("post", "written_on", {}, :disabled => true)
|
|
1750
|
+
end
|
|
1751
|
+
|
|
1716
1752
|
def test_datetime_select
|
|
1717
1753
|
@post = Post.new
|
|
1718
1754
|
@post.updated_at = Time.local(2004, 6, 15, 16, 35)
|
|
@@ -2173,6 +2209,66 @@ class DateHelperTest < ActionView::TestCase
|
|
|
2173
2209
|
assert_dom_equal expected, datetime_select("post", "updated_at", :discard_year => true, :discard_month => true)
|
|
2174
2210
|
end
|
|
2175
2211
|
|
|
2212
|
+
def test_datetime_select_discard_year_and_month_with_disabled_html_option
|
|
2213
|
+
@post = Post.new
|
|
2214
|
+
@post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
|
|
2215
|
+
|
|
2216
|
+
expected = %{<input type="hidden" id="post_updated_at_1i" disabled="disabled" name="post[updated_at(1i)]" value="2004" />\n}
|
|
2217
|
+
expected << %{<input type="hidden" id="post_updated_at_2i" disabled="disabled" name="post[updated_at(2i)]" value="6" />\n}
|
|
2218
|
+
expected << %{<input type="hidden" id="post_updated_at_3i" disabled="disabled" name="post[updated_at(3i)]" value="15" />\n}
|
|
2219
|
+
|
|
2220
|
+
expected << %{<select id="post_updated_at_4i" disabled="disabled" name="post[updated_at(4i)]">\n}
|
|
2221
|
+
0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
|
|
2222
|
+
expected << "</select>\n"
|
|
2223
|
+
expected << " : "
|
|
2224
|
+
expected << %{<select id="post_updated_at_5i" disabled="disabled" name="post[updated_at(5i)]">\n}
|
|
2225
|
+
0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
|
|
2226
|
+
expected << "</select>\n"
|
|
2227
|
+
|
|
2228
|
+
assert_dom_equal expected, datetime_select("post", "updated_at", { :discard_year => true, :discard_month => true }, :disabled => true)
|
|
2229
|
+
end
|
|
2230
|
+
|
|
2231
|
+
def test_datetime_select_discard_hour
|
|
2232
|
+
@post = Post.new
|
|
2233
|
+
@post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
|
|
2234
|
+
|
|
2235
|
+
expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
|
|
2236
|
+
1999.upto(2009) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 2004}>#{i}</option>\n) }
|
|
2237
|
+
expected << "</select>\n"
|
|
2238
|
+
expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
|
|
2239
|
+
1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 6}>#{Date::MONTHNAMES[i]}</option>\n) }
|
|
2240
|
+
expected << "</select>\n"
|
|
2241
|
+
expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
|
|
2242
|
+
1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 15}>#{i}</option>\n) }
|
|
2243
|
+
expected << "</select>\n"
|
|
2244
|
+
|
|
2245
|
+
assert_dom_equal expected, datetime_select("post", "updated_at", :discard_hour => true)
|
|
2246
|
+
end
|
|
2247
|
+
|
|
2248
|
+
def test_datetime_select_discard_minute
|
|
2249
|
+
@post = Post.new
|
|
2250
|
+
@post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
|
|
2251
|
+
|
|
2252
|
+
expected = %{<select id="post_updated_at_1i" name="post[updated_at(1i)]">\n}
|
|
2253
|
+
1999.upto(2009) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 2004}>#{i}</option>\n) }
|
|
2254
|
+
expected << "</select>\n"
|
|
2255
|
+
expected << %{<select id="post_updated_at_2i" name="post[updated_at(2i)]">\n}
|
|
2256
|
+
1.upto(12) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 6}>#{Date::MONTHNAMES[i]}</option>\n) }
|
|
2257
|
+
expected << "</select>\n"
|
|
2258
|
+
expected << %{<select id="post_updated_at_3i" name="post[updated_at(3i)]">\n}
|
|
2259
|
+
1.upto(31) { |i| expected << %(<option value="#{i}"#{' selected="selected"' if i == 15}>#{i}</option>\n) }
|
|
2260
|
+
expected << "</select>\n"
|
|
2261
|
+
|
|
2262
|
+
expected << " — "
|
|
2263
|
+
|
|
2264
|
+
expected << %{<select id="post_updated_at_4i" name="post[updated_at(4i)]">\n}
|
|
2265
|
+
0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
|
|
2266
|
+
expected << "</select>\n"
|
|
2267
|
+
expected << %{<input type="hidden" id="post_updated_at_5i" name="post[updated_at(5i)]" value="16" />\n}
|
|
2268
|
+
|
|
2269
|
+
assert_dom_equal expected, datetime_select("post", "updated_at", :discard_minute => true)
|
|
2270
|
+
end
|
|
2271
|
+
|
|
2176
2272
|
def test_datetime_select_invalid_order
|
|
2177
2273
|
@post = Post.new
|
|
2178
2274
|
@post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
|
|
@@ -2475,6 +2571,28 @@ class DateHelperTest < ActionView::TestCase
|
|
|
2475
2571
|
}, options)
|
|
2476
2572
|
end
|
|
2477
2573
|
|
|
2574
|
+
def test_select_html_safety
|
|
2575
|
+
assert select_day(16).html_safe?
|
|
2576
|
+
assert select_month(8).html_safe?
|
|
2577
|
+
assert select_year(Time.mktime(2003, 8, 16, 8, 4, 18)).html_safe?
|
|
2578
|
+
assert select_minute(Time.mktime(2003, 8, 16, 8, 4, 18)).html_safe?
|
|
2579
|
+
assert select_second(Time.mktime(2003, 8, 16, 8, 4, 18)).html_safe?
|
|
2580
|
+
|
|
2581
|
+
assert select_minute(8, :use_hidden => true).html_safe?
|
|
2582
|
+
assert select_month(8, :prompt => 'Choose month').html_safe?
|
|
2583
|
+
|
|
2584
|
+
assert select_time(Time.mktime(2003, 8, 16, 8, 4, 18), {}, :class => 'selector').html_safe?
|
|
2585
|
+
assert select_date(Time.mktime(2003, 8, 16), :date_separator => " / ", :start_year => 2003, :end_year => 2005, :prefix => "date[first]").html_safe?
|
|
2586
|
+
end
|
|
2587
|
+
|
|
2588
|
+
def test_object_select_html_safety
|
|
2589
|
+
@post = Post.new
|
|
2590
|
+
@post.written_on = Date.new(2004, 6, 15)
|
|
2591
|
+
|
|
2592
|
+
assert date_select("post", "written_on", :default => Time.local(2006, 9, 19, 15, 16, 35), :include_blank => true).html_safe?
|
|
2593
|
+
assert time_select("post", "written_on", :ignore_date => true).html_safe?
|
|
2594
|
+
end
|
|
2595
|
+
|
|
2478
2596
|
protected
|
|
2479
2597
|
def with_env_tz(new_tz = 'US/Eastern')
|
|
2480
2598
|
old_tz, ENV['TZ'] = ENV['TZ'], new_tz
|