actionpack 1.11.2 → 1.12.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of actionpack might be problematic. Click here for more details.
- data/CHANGELOG +392 -5
- data/lib/action_controller.rb +8 -4
- data/lib/action_controller/assertions.rb +9 -10
- data/lib/action_controller/base.rb +177 -88
- data/lib/action_controller/benchmarking.rb +5 -5
- data/lib/action_controller/caching.rb +44 -36
- data/lib/action_controller/cgi_ext/cgi_methods.rb +71 -6
- data/lib/action_controller/cgi_ext/cookie_performance_fix.rb +1 -1
- data/lib/action_controller/cgi_process.rb +36 -24
- data/lib/action_controller/components.rb +152 -52
- data/lib/action_controller/dependencies.rb +1 -1
- data/lib/action_controller/deprecated_redirects.rb +2 -2
- data/lib/action_controller/deprecated_request_methods.rb +34 -0
- data/lib/action_controller/filters.rb +59 -19
- data/lib/action_controller/flash.rb +53 -47
- data/lib/action_controller/helpers.rb +2 -2
- data/lib/action_controller/integration.rb +524 -0
- data/lib/action_controller/layout.rb +58 -23
- data/lib/action_controller/mime_responds.rb +163 -0
- data/lib/action_controller/mime_type.rb +142 -0
- data/lib/action_controller/pagination.rb +13 -7
- data/lib/action_controller/request.rb +59 -56
- data/lib/action_controller/rescue.rb +1 -1
- data/lib/action_controller/routing.rb +29 -10
- data/lib/action_controller/scaffolding.rb +8 -0
- data/lib/action_controller/session/active_record_store.rb +21 -10
- data/lib/action_controller/session/mem_cache_store.rb +18 -12
- data/lib/action_controller/session_management.rb +30 -11
- data/lib/action_controller/templates/rescues/_trace.rhtml +1 -1
- data/lib/action_controller/templates/scaffolds/layout.rhtml +4 -4
- data/lib/action_controller/templates/scaffolds/list.rhtml +1 -1
- data/lib/action_controller/test_process.rb +189 -118
- data/lib/action_controller/vendor/html-scanner/html/node.rb +20 -1
- data/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +3 -0
- data/lib/action_controller/vendor/html-scanner/html/version.rb +1 -1
- data/lib/action_controller/vendor/xml_node.rb +97 -0
- data/lib/action_controller/verification.rb +2 -0
- data/lib/action_pack/version.rb +3 -3
- data/lib/action_view.rb +0 -2
- data/lib/action_view/base.rb +109 -36
- data/lib/action_view/compiled_templates.rb +1 -1
- data/lib/action_view/helpers/active_record_helper.rb +4 -2
- data/lib/action_view/helpers/asset_tag_helper.rb +6 -7
- data/lib/action_view/helpers/capture_helper.rb +49 -12
- data/lib/action_view/helpers/date_helper.rb +14 -4
- data/lib/action_view/helpers/form_helper.rb +136 -20
- data/lib/action_view/helpers/form_options_helper.rb +29 -7
- data/lib/action_view/helpers/form_tag_helper.rb +22 -20
- data/lib/action_view/helpers/java_script_macros_helper.rb +29 -9
- data/lib/action_view/helpers/javascript_helper.rb +50 -446
- data/lib/action_view/helpers/javascripts/controls.js +95 -30
- data/lib/action_view/helpers/javascripts/dragdrop.js +161 -21
- data/lib/action_view/helpers/javascripts/effects.js +310 -211
- data/lib/action_view/helpers/javascripts/prototype.js +228 -28
- data/lib/action_view/helpers/number_helper.rb +9 -9
- data/lib/action_view/helpers/pagination_helper.rb +1 -1
- data/lib/action_view/helpers/prototype_helper.rb +900 -0
- data/lib/action_view/helpers/scriptaculous_helper.rb +135 -0
- data/lib/action_view/helpers/text_helper.rb +7 -6
- data/lib/action_view/helpers/url_helper.rb +23 -14
- data/lib/action_view/partials.rb +12 -4
- data/rakefile +13 -5
- data/test/abstract_unit.rb +4 -3
- data/test/active_record_unit.rb +88 -0
- data/test/{controller → activerecord}/active_record_assertions_test.rb +7 -50
- data/test/{controller → activerecord}/active_record_store_test.rb +27 -4
- data/test/activerecord/pagination_test.rb +161 -0
- data/test/controller/action_pack_assertions_test.rb +18 -15
- data/test/controller/base_test.rb +31 -42
- data/test/controller/benchmark_test.rb +8 -11
- data/test/controller/capture_test.rb +33 -1
- data/test/controller/cgi_test.rb +33 -0
- data/test/controller/custom_handler_test.rb +8 -0
- data/test/controller/fake_controllers.rb +9 -17
- data/test/controller/filters_test.rb +32 -3
- data/test/controller/flash_test.rb +26 -41
- data/test/controller/fragment_store_setting_test.rb +1 -1
- data/test/controller/layout_test.rb +73 -0
- data/test/controller/mime_responds_test.rb +257 -0
- data/test/controller/mime_type_test.rb +24 -0
- data/test/controller/new_render_test.rb +157 -1
- data/test/controller/redirect_test.rb +23 -0
- data/test/controller/render_test.rb +54 -56
- data/test/controller/request_test.rb +25 -0
- data/test/controller/routing_test.rb +74 -66
- data/test/controller/test_test.rb +66 -1
- data/test/controller/verification_test.rb +3 -1
- data/test/controller/webservice_test.rb +255 -0
- data/test/fixtures/companies.yml +24 -0
- data/test/fixtures/company.rb +9 -0
- data/test/fixtures/db_definitions/sqlite.sql +42 -0
- data/test/fixtures/developer.rb +7 -0
- data/test/fixtures/developers.yml +21 -0
- data/test/fixtures/developers_projects.yml +13 -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/third_party_template_library.mab +1 -0
- data/test/fixtures/layout_tests/views/hello.rhtml +1 -0
- data/test/fixtures/multipart/mona_lisa.jpg +0 -0
- data/test/fixtures/project.rb +3 -0
- data/test/fixtures/projects.yml +7 -0
- data/test/fixtures/replies.yml +13 -0
- data/test/fixtures/reply.rb +5 -0
- data/test/fixtures/respond_to/all_types_with_layout.rhtml +1 -0
- data/test/fixtures/respond_to/all_types_with_layout.rjs +1 -0
- data/test/fixtures/respond_to/layouts/standard.rhtml +1 -0
- data/test/fixtures/respond_to/using_defaults.rhtml +1 -0
- data/test/fixtures/respond_to/using_defaults.rjs +1 -0
- data/test/fixtures/respond_to/using_defaults.rxml +1 -0
- data/test/fixtures/respond_to/using_defaults_with_type_list.rhtml +1 -0
- data/test/fixtures/respond_to/using_defaults_with_type_list.rjs +1 -0
- data/test/fixtures/respond_to/using_defaults_with_type_list.rxml +1 -0
- data/test/fixtures/test/block_content_for.rhtml +2 -0
- data/test/fixtures/test/delete_with_js.rjs +2 -0
- data/test/fixtures/test/dot.directory/render_file_with_ivar.rhtml +1 -0
- data/test/fixtures/test/enum_rjs_test.rjs +6 -0
- data/test/fixtures/test/erb_content_for.rhtml +2 -0
- data/test/fixtures/test/hello_world.rxml +3 -0
- data/test/fixtures/test/hello_world_with_layout_false.rhtml +1 -0
- data/test/fixtures/test/non_erb_block_content_for.rxml +4 -0
- data/test/fixtures/topic.rb +3 -0
- data/test/fixtures/topics.yml +22 -0
- data/test/template/active_record_helper_test.rb +4 -0
- data/test/template/asset_tag_helper_test.rb +7 -2
- data/test/template/date_helper_test.rb +39 -2
- data/test/template/form_helper_test.rb +238 -5
- data/test/template/form_options_helper_test.rb +78 -0
- data/test/template/form_tag_helper_test.rb +11 -0
- data/test/template/java_script_macros_helper_test.rb +51 -6
- data/test/template/javascript_helper_test.rb +7 -153
- data/test/template/number_helper_test.rb +14 -13
- data/test/template/prototype_helper_test.rb +423 -0
- data/test/template/scriptaculous_helper_test.rb +90 -0
- data/test/template/text_helper_test.rb +12 -9
- data/test/template/url_helper_test.rb +31 -15
- metadata +291 -246
- data/lib/action_controller/cgi_ext/multipart_progress.rb +0 -169
- data/lib/action_controller/upload_progress.rb +0 -473
- data/lib/action_controller/vendor/html-scanner/html/node.rb.rej +0 -17
- data/lib/action_view/helpers/upload_progress_helper.rb +0 -433
- data/lib/action_view/vendor/builder.rb +0 -13
- data/lib/action_view/vendor/builder/blankslate.rb +0 -53
- data/lib/action_view/vendor/builder/xmlbase.rb +0 -143
- data/lib/action_view/vendor/builder/xmlevents.rb +0 -63
- data/lib/action_view/vendor/builder/xmlmarkup.rb +0 -308
- data/test/controller/multipart_progress_testx.rb +0 -365
- data/test/controller/upload_progress_testx.rb +0 -89
- data/test/template/upload_progress_helper_testx.rb +0 -136
@@ -1,136 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../abstract_unit'
|
2
|
-
|
3
|
-
require File.dirname(__FILE__) + '/../../lib/action_view/helpers/date_helper'
|
4
|
-
require File.dirname(__FILE__) + '/../../lib/action_view/helpers/number_helper'
|
5
|
-
require File.dirname(__FILE__) + '/../../lib/action_view/helpers/asset_tag_helper'
|
6
|
-
require File.dirname(__FILE__) + '/../../lib/action_view/helpers/form_tag_helper'
|
7
|
-
require File.dirname(__FILE__) + '/../../lib/action_view/helpers/tag_helper'
|
8
|
-
require File.dirname(__FILE__) + '/../../lib/action_view/helpers/javascript_helper'
|
9
|
-
require File.dirname(__FILE__) + '/../../lib/action_view/helpers/upload_progress_helper'
|
10
|
-
require File.dirname(__FILE__) + '/../../../activesupport/lib/active_support/core_ext/hash' #for stringify keys
|
11
|
-
|
12
|
-
class MockProgress
|
13
|
-
def initialize(started, finished)
|
14
|
-
@started, @finished = [started, finished]
|
15
|
-
end
|
16
|
-
|
17
|
-
def started?
|
18
|
-
@started
|
19
|
-
end
|
20
|
-
|
21
|
-
def finished?
|
22
|
-
@finished
|
23
|
-
end
|
24
|
-
|
25
|
-
def message
|
26
|
-
"A message"
|
27
|
-
end
|
28
|
-
|
29
|
-
def method_missing(meth, *args)
|
30
|
-
# Just return some consitant number
|
31
|
-
meth.to_s.hash.to_i.abs + args.hash.to_i.abs
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
class UploadProgressHelperTest < Test::Unit::TestCase
|
36
|
-
include ActionView::Helpers::DateHelper
|
37
|
-
include ActionView::Helpers::NumberHelper
|
38
|
-
include ActionView::Helpers::AssetTagHelper
|
39
|
-
include ActionView::Helpers::FormTagHelper
|
40
|
-
include ActionView::Helpers::TagHelper
|
41
|
-
include ActionView::Helpers::UrlHelper
|
42
|
-
include ActionView::Helpers::JavaScriptHelper
|
43
|
-
include ActionView::Helpers::UploadProgressHelper
|
44
|
-
|
45
|
-
def next_upload_id; @upload_id = last_upload_id.succ; end
|
46
|
-
def last_upload_id; @upload_id ||= 0; end
|
47
|
-
def current_upload_id; last_upload_id; end
|
48
|
-
def upload_progress(upload_id = nil); @upload_progress ||= MockProgress.new(false, true); end
|
49
|
-
|
50
|
-
def setup
|
51
|
-
@controller = Class.new do
|
52
|
-
def url_for(options, *parameters_for_method_reference)
|
53
|
-
"http://www.example.com"
|
54
|
-
end
|
55
|
-
end
|
56
|
-
@controller = @controller.new
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_upload_status_tag
|
60
|
-
assert_dom_equal(
|
61
|
-
'<div class="progressBar" id="UploadProgressBar0"><div class="border"><div class="background"><div class="foreground"></div></div></div></div><div class="uploadStatus" id="UploadStatus0"></div>',
|
62
|
-
upload_status_tag
|
63
|
-
)
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_upload_status_text_tag
|
67
|
-
assert_dom_equal(
|
68
|
-
'<div class="my-upload" id="my-id">Starting</div>',
|
69
|
-
upload_status_text_tag('Starting', :class => 'my-upload', :id => 'my-id')
|
70
|
-
)
|
71
|
-
end
|
72
|
-
|
73
|
-
|
74
|
-
def test_upload_progress_text
|
75
|
-
@upload_progress = MockProgress.new(false, false)
|
76
|
-
assert_equal(
|
77
|
-
"Upload starting...",
|
78
|
-
upload_progress_text
|
79
|
-
)
|
80
|
-
|
81
|
-
@upload_progress = MockProgress.new(true, false)
|
82
|
-
assert_equal(
|
83
|
-
"828.7 MB of 456.2 MB at 990.1 MB/s; 10227 days remaining",
|
84
|
-
upload_progress_text
|
85
|
-
)
|
86
|
-
|
87
|
-
@upload_progress = MockProgress.new(true, true)
|
88
|
-
assert_equal(
|
89
|
-
"A message",
|
90
|
-
upload_progress_text
|
91
|
-
)
|
92
|
-
end
|
93
|
-
|
94
|
-
def test_upload_progress_update_bar_js
|
95
|
-
assert_equal(
|
96
|
-
"if($('UploadProgressBar0')){$('UploadProgressBar0').firstChild.firstChild.style.width='0%'}",
|
97
|
-
upload_progress_update_bar_js
|
98
|
-
)
|
99
|
-
|
100
|
-
assert_equal(
|
101
|
-
"if($('UploadProgressBar0')){$('UploadProgressBar0').firstChild.firstChild.style.width='50%'}",
|
102
|
-
upload_progress_update_bar_js(50)
|
103
|
-
)
|
104
|
-
end
|
105
|
-
|
106
|
-
def test_finish_upload_status
|
107
|
-
assert_dom_equal(
|
108
|
-
"<html><head><script language=\"javascript\" type=\"text/javascript\">function finish() { if (parent.document.uploadStatus0) { parent.document.uploadStatus0.stop();\n }\n }</script></head><body onload=\"finish()\"></body></html>",
|
109
|
-
finish_upload_status
|
110
|
-
)
|
111
|
-
|
112
|
-
assert_dom_equal(
|
113
|
-
"<html><head><script language=\"javascript\" type=\"text/javascript\">function finish() { if (parent.document.uploadStatus0) { parent.document.uploadStatus0.stop(123);\n }\n }</script></head><body onload=\"finish()\"></body></html>",
|
114
|
-
finish_upload_status(:client_js_argument => 123)
|
115
|
-
)
|
116
|
-
|
117
|
-
assert_dom_equal(
|
118
|
-
"<html><head><script language=\"javascript\" type=\"text/javascript\">function finish() { if (parent.document.uploadStatus0) { parent.document.uploadStatus0.stop();\nparent.location.replace('/redirected/');\n }\n }</script></head><body onload=\"finish()\"></body></html>",
|
119
|
-
finish_upload_status(:redirect_to => '/redirected/')
|
120
|
-
)
|
121
|
-
end
|
122
|
-
|
123
|
-
def test_form_tag_with_upload_progress
|
124
|
-
assert_dom_equal(
|
125
|
-
"<form action=\"http://www.example.com\" enctype=\"multipart/form-data\" method=\"post\" onsubmit=\"if (this.action.indexOf('upload_id') < 0){ this.action += '?upload_id=1'; }this.target = 'UploadTarget1';$('UploadStatus1').innerHTML='Upload starting...'; if($('UploadProgressBar1')){$('UploadProgressBar1').firstChild.firstChild.style.width='0%'}; if (document.uploadStatus1) { document.uploadStatus1.stop(); }document.uploadStatus1 = new Ajax.PeriodicalUpdater('UploadStatus1','http://www.example.com', Object.extend({asynchronous:true, evalScripts:true, onComplete:function(request){$('UploadStatus1').innerHTML='A message';if($('UploadProgressBar1')){$('UploadProgressBar1').firstChild.firstChild.style.width='100%'};document.uploadStatus1 = null}},{decay:1.8,frequency:2.0})); return true\"><iframe id=\"UploadTarget1\" name=\"UploadTarget1\" src=\"\" style=\"width:0px;height:0px;border:0\"></iframe>",
|
126
|
-
form_tag_with_upload_progress
|
127
|
-
)
|
128
|
-
end
|
129
|
-
|
130
|
-
def test_form_tag_with_upload_progress_custom
|
131
|
-
assert_dom_equal(
|
132
|
-
"<form action=\"http://www.example.com\" enctype=\"multipart/form-data\" method=\"post\" onsubmit=\"if (this.action.indexOf('upload_id') < 0){ this.action += '?upload_id=5'; }this.target = 'awindow';$('UploadStatus0').innerHTML='Upload starting...'; if($('UploadProgressBar0')){$('UploadProgressBar0').firstChild.firstChild.style.width='0%'}; alert('foo'); if (document.uploadStatus0) { document.uploadStatus0.stop(); }document.uploadStatus0 = new Ajax.PeriodicalUpdater('UploadStatus0','http://www.example.com', Object.extend({asynchronous:true, evalScripts:true, onComplete:function(request){$('UploadStatus0').innerHTML='A message';if($('UploadProgressBar0')){$('UploadProgressBar0').firstChild.firstChild.style.width='100%'};document.uploadStatus0 = null; alert('bar')}},{decay:7,frequency:6})); return true\" target=\"awindow\">",
|
133
|
-
form_tag_with_upload_progress({:upload_id => 5}, {:begin => "alert('foo')", :finish => "alert('bar')", :frequency => 6, :decay => 7, :target => 'awindow'})
|
134
|
-
)
|
135
|
-
end
|
136
|
-
end
|