From beffb77e05bf3c192e798587812105458146df32 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 28 Jun 2005 17:44:16 +0000 Subject: Added support for upload progress indicators in Apache and lighttpd 1.4.x (won't work in WEBrick or lighttpd 1.3.x) #1475 [Sean Treadway] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1553 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- .../test/template/upload_progress_helper_test.rb | 272 +++++++++++++++++++++ 1 file changed, 272 insertions(+) create mode 100644 actionpack/test/template/upload_progress_helper_test.rb (limited to 'actionpack/test/template') diff --git a/actionpack/test/template/upload_progress_helper_test.rb b/actionpack/test/template/upload_progress_helper_test.rb new file mode 100644 index 0000000000..361aa4bb08 --- /dev/null +++ b/actionpack/test/template/upload_progress_helper_test.rb @@ -0,0 +1,272 @@ +require File.dirname(__FILE__) + '/../abstract_unit' + +require File.dirname(__FILE__) + '/../../lib/action_view/helpers/date_helper' +require File.dirname(__FILE__) + '/../../lib/action_view/helpers/number_helper' +require File.dirname(__FILE__) + '/../../lib/action_view/helpers/asset_tag_helper' +require File.dirname(__FILE__) + '/../../lib/action_view/helpers/form_tag_helper' +require File.dirname(__FILE__) + '/../../lib/action_view/helpers/tag_helper' +require File.dirname(__FILE__) + '/../../lib/action_view/helpers/javascript_helper' +require File.dirname(__FILE__) + '/../../lib/action_view/helpers/upload_progress_helper' +require File.dirname(__FILE__) + '/../../../activesupport/lib/active_support/core_ext/hash' #for stringify keys + +class MockProgress + def initialize(started, finished) + @started, @finished = [started, finished] + end + + def started? + @started + end + + def finished? + @finished + end + + def message + "A message" + end + + def method_missing(meth, *args) + # Just return some consitant number + meth.to_s.hash.to_i.abs + args.hash.to_i.abs + end +end + +class UploadProgressHelperTest < Test::Unit::TestCase + include ActionView::Helpers::DateHelper + include ActionView::Helpers::NumberHelper + include ActionView::Helpers::AssetTagHelper + include ActionView::Helpers::FormTagHelper + include ActionView::Helpers::TagHelper + include ActionView::Helpers::UrlHelper + include ActionView::Helpers::JavascriptHelper + include ActionView::Helpers::UploadProgressHelper + + def next_upload_id; @upload_id = last_upload_id.succ; end + def last_upload_id; @upload_id ||= 0; end + def current_upload_id; last_upload_id; end + def upload_progress(upload_id = nil); @upload_progress or MockProgress.new(false, true); end + + def setup + @controller = Class.new do + def url_for(options, *parameters_for_method_reference) + "http://www.example.com" + end + end + @controller = @controller.new + end + + def test_upload_status_tag + assert_equal( + '
', + upload_status_tag + ) + end + + def test_upload_status_text_tag + assert_equal( + '
Starting
', + upload_status_text_tag('Starting', :class => 'my-upload', :id => 'my-id') + ) + end + + + def test_upload_progress_text + @upload_progress = MockProgress.new(false, false) + assert_equal( + "Upload starting...", + upload_progress_text + ) + + @upload_progress = MockProgress.new(true, false) + assert_equal( + "828.7 MB of 456.2 MB at 990.1 MB/s; 10227 days remaining", + upload_progress_text + ) + + @upload_progress = MockProgress.new(true, true) + assert_equal( + "Upload finished. A message", + upload_progress_text + ) + end + + def test_upload_progress_update_bar_js + assert_equal( + "$('UploadProgressBar0').firstChild.firstChild.style.width='0%';", + upload_progress_update_bar_js + ) + + assert_equal( + "$('UploadProgressBar0').firstChild.firstChild.style.width='50%';", + upload_progress_update_bar_js(50) + ) + end + + def test_finish_upload_status + assert_equal( + "", + finish_upload_status + ) + + assert_equal( + "", + finish_upload_status(:client_js_argument => 123) + ) + + assert_equal( + "", + finish_upload_status(:redirect_to => '/redirected/') + ) + end + + def test_form_tag_with_upload_progress + assert_equal( + "
", + form_tag_with_upload_progress + ) + end + + def test_form_tag_with_upload_progress_custom + assert_equal( + "", + form_tag_with_upload_progress({:upload_id => 5}, {:begin => "alert('foo')", :finish => "alert('bar')", :frequency => 6, :decay => 7, :target => 'awindow'}) + ) + end +end +require File.dirname(__FILE__) + '/../abstract_unit' + +require File.dirname(__FILE__) + '/../../lib/action_view/helpers/date_helper' +require File.dirname(__FILE__) + '/../../lib/action_view/helpers/number_helper' +require File.dirname(__FILE__) + '/../../lib/action_view/helpers/asset_tag_helper' +require File.dirname(__FILE__) + '/../../lib/action_view/helpers/form_tag_helper' +require File.dirname(__FILE__) + '/../../lib/action_view/helpers/tag_helper' +require File.dirname(__FILE__) + '/../../lib/action_view/helpers/javascript_helper' +require File.dirname(__FILE__) + '/../../lib/action_view/helpers/upload_progress_helper' +require File.dirname(__FILE__) + '/../../../activesupport/lib/active_support/core_ext/hash' #for stringify keys + +class MockProgress + def initialize(started, finished) + @started, @finished = [started, finished] + end + + def started? + @started + end + + def finished? + @finished + end + + def message + "A message" + end + + def method_missing(meth, *args) + # Just return some consitant number + meth.to_s.hash.to_i.abs + args.hash.to_i.abs + end +end + +class UploadProgressHelperTest < Test::Unit::TestCase + include ActionView::Helpers::DateHelper + include ActionView::Helpers::NumberHelper + include ActionView::Helpers::AssetTagHelper + include ActionView::Helpers::FormTagHelper + include ActionView::Helpers::TagHelper + include ActionView::Helpers::UrlHelper + include ActionView::Helpers::JavascriptHelper + include ActionView::Helpers::UploadProgressHelper + + def next_upload_id; @upload_id = last_upload_id.succ; end + def last_upload_id; @upload_id ||= 0; end + def current_upload_id; last_upload_id; end + def upload_progress(upload_id = nil); @upload_progress ||= MockProgress.new(false, true); end + + def setup + @controller = Class.new do + def url_for(options, *parameters_for_method_reference) + "http://www.example.com" + end + end + @controller = @controller.new + end + + def test_upload_status_tag + assert_equal( + '
', + upload_status_tag + ) + end + + def test_upload_status_text_tag + assert_equal( + '
Starting
', + upload_status_text_tag('Starting', :class => 'my-upload', :id => 'my-id') + ) + end + + + def test_upload_progress_text + @upload_progress = MockProgress.new(false, false) + assert_equal( + "Upload starting...", + upload_progress_text + ) + + @upload_progress = MockProgress.new(true, false) + assert_equal( + "828.7 MB of 456.2 MB at 990.1 MB/s; 10227 days remaining", + upload_progress_text + ) + + @upload_progress = MockProgress.new(true, true) + assert_equal( + "A message", + upload_progress_text + ) + end + + def test_upload_progress_update_bar_js + assert_equal( + "$('UploadProgressBar0').firstChild.firstChild.style.width='0%'", + upload_progress_update_bar_js + ) + + assert_equal( + "$('UploadProgressBar0').firstChild.firstChild.style.width='50%'", + upload_progress_update_bar_js(50) + ) + end + + def test_finish_upload_status + assert_equal( + "", + finish_upload_status + ) + + assert_equal( + "", + finish_upload_status(:client_js_argument => 123) + ) + + assert_equal( + "", + finish_upload_status(:redirect_to => '/redirected/') + ) + end + + def test_form_tag_with_upload_progress + assert_equal( + "", + form_tag_with_upload_progress + ) + end + + def test_form_tag_with_upload_progress_custom + assert_equal( + "", + form_tag_with_upload_progress({:upload_id => 5}, {:begin => "alert('foo')", :finish => "alert('bar')", :frequency => 6, :decay => 7, :target => 'awindow'}) + ) + end +end -- cgit v1.2.3