From 7acd04fb87229cd35c5c7a765bf1cfe9aaf69052 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 8 Jul 2012 12:23:47 +0000 Subject: [PATCH] Tests should not change settings. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9949 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- test/functional/documents_controller_test.rb | 6 +-- test/functional/files_controller_test.rb | 12 ++--- test/functional/messages_controller_test.rb | 5 ++- test/functional/news_controller_test.rb | 7 +-- .../repositories_git_controller_test.rb | 29 ++++++------ test/functional/settings_controller_test.rb | 1 + test/functional/sys_controller_test.rb | 4 ++ test/unit/comment_test.rb | 7 +-- test/unit/document_test.rb | 9 ++-- test/unit/journal_observer_test.rb | 45 +++++++++++-------- test/unit/mail_handler_test.rb | 4 ++ test/unit/news_test.rb | 5 ++- test/unit/repository_test.rb | 5 ++- test/unit/setting_test.rb | 4 ++ test/unit/wiki_content_test.rb | 12 +++-- 15 files changed, 94 insertions(+), 61 deletions(-) diff --git a/test/functional/documents_controller_test.rb b/test/functional/documents_controller_test.rb index 5b76d8407..b9ff12ad6 100644 --- a/test/functional/documents_controller_test.rb +++ b/test/functional/documents_controller_test.rb @@ -95,16 +95,16 @@ LOREM def test_create_with_one_attachment ActionMailer::Base.deliveries.clear - Setting.notified_events << 'document_added' @request.session[:user_id] = 2 set_tmp_attachments_directory - post :create, :project_id => 'ecookbook', + with_settings :notified_events => %w(document_added) do + post :create, :project_id => 'ecookbook', :document => { :title => 'DocumentsControllerTest#test_post_new', :description => 'This is a new document', :category_id => 2}, :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}} - + end assert_redirected_to '/projects/ecookbook/documents' document = Document.find_by_title('DocumentsControllerTest#test_post_new') diff --git a/test/functional/files_controller_test.rb b/test/functional/files_controller_test.rb index d05557990..5e3c9d68b 100644 --- a/test/functional/files_controller_test.rb +++ b/test/functional/files_controller_test.rb @@ -58,13 +58,14 @@ class FilesControllerTest < ActionController::TestCase def test_create_file set_tmp_attachments_directory @request.session[:user_id] = 2 - Setting.notified_events = ['file_added'] ActionMailer::Base.deliveries.clear - assert_difference 'Attachment.count' do - post :create, :project_id => 1, :version_id => '', - :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}} - assert_response :redirect + with_settings :notified_events => %w(file_added) do + assert_difference 'Attachment.count' do + post :create, :project_id => 1, :version_id => '', + :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}} + assert_response :redirect + end end assert_redirected_to '/projects/ecookbook/files' a = Attachment.find(:first, :order => 'created_on DESC') @@ -80,7 +81,6 @@ class FilesControllerTest < ActionController::TestCase def test_create_version_file set_tmp_attachments_directory @request.session[:user_id] = 2 - Setting.notified_events = ['file_added'] assert_difference 'Attachment.count' do post :create, :project_id => 1, :version_id => '2', diff --git a/test/functional/messages_controller_test.rb b/test/functional/messages_controller_test.rb index 5f8b22af4..294f87035 100644 --- a/test/functional/messages_controller_test.rb +++ b/test/functional/messages_controller_test.rb @@ -91,11 +91,12 @@ class MessagesControllerTest < ActionController::TestCase def test_post_new @request.session[:user_id] = 2 ActionMailer::Base.deliveries.clear - Setting.notified_events = ['message_posted'] - post :new, :board_id => 1, + with_settings :notified_events => %w(message_posted) do + post :new, :board_id => 1, :message => { :subject => 'Test created message', :content => 'Message body'} + end message = Message.find_by_subject('Test created message') assert_not_nil message assert_redirected_to "/boards/1/topics/#{message.to_param}" diff --git a/test/functional/news_controller_test.rb b/test/functional/news_controller_test.rb index 44c00d73a..dcc6410ed 100644 --- a/test/functional/news_controller_test.rb +++ b/test/functional/news_controller_test.rb @@ -82,12 +82,13 @@ class NewsControllerTest < ActionController::TestCase def test_post_create ActionMailer::Base.deliveries.clear - Setting.notified_events << 'news_added' - @request.session[:user_id] = 2 - post :create, :project_id => 1, :news => { :title => 'NewsControllerTest', + + with_settings :notified_events => %w(news_added) do + post :create, :project_id => 1, :news => { :title => 'NewsControllerTest', :description => 'This is the description', :summary => '' } + end assert_redirected_to '/projects/ecookbook/news' news = News.find_by_title('NewsControllerTest') diff --git a/test/functional/repositories_git_controller_test.rb b/test/functional/repositories_git_controller_test.rb index 52f3c6509..44e74ea7d 100644 --- a/test/functional/repositories_git_controller_test.rb +++ b/test/functional/repositories_git_controller_test.rb @@ -292,21 +292,22 @@ class RepositoriesGitControllerTest < ActionController::TestCase @repository.fetch_changesets @project.reload assert_equal NUM_REV, @repository.changesets.count - Setting.diff_max_lines_displayed = 5 - # Truncated diff of changeset 2f9c0091 - with_cache do - get :diff, :id => PRJ_ID, :type => 'inline', - :rev => '2f9c0091c754a91af7a9c478e36556b4bde8dcf7' - assert_response :success - assert @response.body.include?("... This diff was truncated") - - Setting.default_language = 'fr' - get :diff, :id => PRJ_ID, :type => 'inline', - :rev => '2f9c0091c754a91af7a9c478e36556b4bde8dcf7' - assert_response :success - assert ! @response.body.include?("... This diff was truncated") - assert @response.body.include?("... Ce diff") + with_settings :diff_max_lines_displayed => 5 do + # Truncated diff of changeset 2f9c0091 + with_cache do + get :diff, :id => PRJ_ID, :type => 'inline', + :rev => '2f9c0091c754a91af7a9c478e36556b4bde8dcf7' + assert_response :success + assert @response.body.include?("... This diff was truncated") + + Setting.default_language = 'fr' + get :diff, :id => PRJ_ID, :type => 'inline', + :rev => '2f9c0091c754a91af7a9c478e36556b4bde8dcf7' + assert_response :success + assert ! @response.body.include?("... This diff was truncated") + assert @response.body.include?("... Ce diff") + end end end diff --git a/test/functional/settings_controller_test.rb b/test/functional/settings_controller_test.rb index 0457e70f2..deddabea5 100644 --- a/test/functional/settings_controller_test.rb +++ b/test/functional/settings_controller_test.rb @@ -77,6 +77,7 @@ class SettingsControllerTest < ActionController::TestCase assert !Setting.bcc_recipients? assert_equal %w(issue_added issue_updated news_added), Setting.notified_events assert_equal 'Test footer', Setting.emails_footer + Setting.clear_cache end def test_get_plugin_settings diff --git a/test/functional/sys_controller_test.rb b/test/functional/sys_controller_test.rb index 439e4c0f5..d046c231a 100644 --- a/test/functional/sys_controller_test.rb +++ b/test/functional/sys_controller_test.rb @@ -33,6 +33,10 @@ class SysControllerTest < ActionController::TestCase Setting.enabled_scm = %w(Subversion Git) end + def teardown + Setting.clear_cache + end + def test_projects_with_repository_enabled get :projects assert_response :success diff --git a/test/unit/comment_test.rb b/test/unit/comment_test.rb index 004bd8e09..f88528d32 100644 --- a/test/unit/comment_test.rb +++ b/test/unit/comment_test.rb @@ -33,11 +33,12 @@ class CommentTest < ActiveSupport::TestCase end def test_create_should_send_notification - Setting.notified_events << 'news_comment_added' Watcher.create!(:watchable => @news, :user => @jsmith) - assert_difference 'ActionMailer::Base.deliveries.size' do - Comment.create!(:commented => @news, :author => @jsmith, :comments => "my comment") + with_settings :notified_events => %w(news_comment_added) do + assert_difference 'ActionMailer::Base.deliveries.size' do + Comment.create!(:commented => @news, :author => @jsmith, :comments => "my comment") + end end end diff --git a/test/unit/document_test.rb b/test/unit/document_test.rb index ba2d73de7..afcb53d24 100644 --- a/test/unit/document_test.rb +++ b/test/unit/document_test.rb @@ -27,10 +27,11 @@ class DocumentTest < ActiveSupport::TestCase def test_create_should_send_email_notification ActionMailer::Base.deliveries.clear - Setting.notified_events << 'document_added' - doc = Document.new(:project => Project.find(1), :title => 'New document', :category => Enumeration.find_by_name('User documentation')) - - assert doc.save + + with_settings :notified_events => %w(document_added) do + doc = Document.new(:project => Project.find(1), :title => 'New document', :category => Enumeration.find_by_name('User documentation')) + assert doc.save + end assert_equal 1, ActionMailer::Base.deliveries.size end diff --git a/test/unit/journal_observer_test.rb b/test/unit/journal_observer_test.rb index 06a5499ed..2e7bad436 100644 --- a/test/unit/journal_observer_test.rb +++ b/test/unit/journal_observer_test.rb @@ -27,102 +27,111 @@ class JournalObserverTest < ActiveSupport::TestCase # context: issue_updated notified_events def test_create_should_send_email_notification_with_issue_updated - Setting.notified_events = ['issue_updated'] issue = Issue.find(:first) user = User.find(:first) journal = issue.init_journal(user, issue) - assert journal.save + with_settings :notified_events => %w(issue_updated) do + assert journal.save + end assert_equal 1, ActionMailer::Base.deliveries.size end def test_create_should_not_send_email_notification_with_notify_set_to_false - Setting.notified_events = ['issue_updated'] issue = Issue.find(:first) user = User.find(:first) journal = issue.init_journal(user, issue) journal.notify = false - assert journal.save + with_settings :notified_events => %w(issue_updated) do + assert journal.save + end assert_equal 0, ActionMailer::Base.deliveries.size end def test_create_should_not_send_email_notification_without_issue_updated - Setting.notified_events = [] issue = Issue.find(:first) user = User.find(:first) journal = issue.init_journal(user, issue) - assert journal.save + with_settings :notified_events => [] do + assert journal.save + end assert_equal 0, ActionMailer::Base.deliveries.size end # context: issue_note_added notified_events def test_create_should_send_email_notification_with_issue_note_added - Setting.notified_events = ['issue_note_added'] issue = Issue.find(:first) user = User.find(:first) journal = issue.init_journal(user, issue) journal.notes = 'This update has a note' - assert journal.save + with_settings :notified_events => %w(issue_note_added) do + assert journal.save + end assert_equal 1, ActionMailer::Base.deliveries.size end def test_create_should_not_send_email_notification_without_issue_note_added - Setting.notified_events = [] issue = Issue.find(:first) user = User.find(:first) journal = issue.init_journal(user, issue) journal.notes = 'This update has a note' - assert journal.save + with_settings :notified_events => [] do + assert journal.save + end assert_equal 0, ActionMailer::Base.deliveries.size end # context: issue_status_updated notified_events def test_create_should_send_email_notification_with_issue_status_updated - Setting.notified_events = ['issue_status_updated'] issue = Issue.find(:first) user = User.find(:first) issue.init_journal(user, issue) issue.status = IssueStatus.last - assert issue.save + with_settings :notified_events => %w(issue_status_updated) do + assert issue.save + end assert_equal 1, ActionMailer::Base.deliveries.size end def test_create_should_not_send_email_notification_without_issue_status_updated - Setting.notified_events = [] issue = Issue.find(:first) user = User.find(:first) issue.init_journal(user, issue) issue.status = IssueStatus.last - assert issue.save + with_settings :notified_events => [] do + assert issue.save + end assert_equal 0, ActionMailer::Base.deliveries.size end # context: issue_priority_updated notified_events def test_create_should_send_email_notification_with_issue_priority_updated - Setting.notified_events = ['issue_priority_updated'] issue = Issue.find(:first) user = User.find(:first) issue.init_journal(user, issue) issue.priority = IssuePriority.last - assert issue.save + with_settings :notified_events => %w(issue_priority_updated) do + assert issue.save + end assert_equal 1, ActionMailer::Base.deliveries.size end def test_create_should_not_send_email_notification_without_issue_priority_updated - Setting.notified_events = [] issue = Issue.find(:first) user = User.find(:first) issue.init_journal(user, issue) issue.priority = IssuePriority.last - assert issue.save + with_settings :notified_events => [] do + assert issue.save + end assert_equal 0, ActionMailer::Base.deliveries.size end end diff --git a/test/unit/mail_handler_test.rb b/test/unit/mail_handler_test.rb index 0e94fcc18..ce21f3cea 100644 --- a/test/unit/mail_handler_test.rb +++ b/test/unit/mail_handler_test.rb @@ -35,6 +35,10 @@ class MailHandlerTest < ActiveSupport::TestCase Setting.notified_events = Redmine::Notifiable.all.collect(&:name) end + def teardown + Setting.clear_cache + end + def test_add_issue ActionMailer::Base.deliveries.clear # This email contains: 'Project: onlinestore' diff --git a/test/unit/news_test.rb b/test/unit/news_test.rb index 71b939d63..94054e5a7 100644 --- a/test/unit/news_test.rb +++ b/test/unit/news_test.rb @@ -29,10 +29,11 @@ class NewsTest < ActiveSupport::TestCase def test_create_should_send_email_notification ActionMailer::Base.deliveries.clear - Setting.notified_events << 'news_added' news = Project.find(1).news.new(valid_news) - assert news.save + with_settings :notified_events => %w(news_added) do + assert news.save + end assert_equal 1, ActionMailer::Base.deliveries.size end diff --git a/test/unit/repository_test.rb b/test/unit/repository_test.rb index bf17b8884..f99711623 100644 --- a/test/unit/repository_test.rb +++ b/test/unit/repository_test.rb @@ -149,7 +149,6 @@ class RepositoryTest < ActiveSupport::TestCase def test_scan_changesets_for_issue_ids Setting.default_language = 'en' - Setting.notified_events = ['issue_added','issue_updated'] # choosing a status to apply to fix issues Setting.commit_fix_status_id = IssueStatus.find( @@ -166,7 +165,9 @@ class RepositoryTest < ActiveSupport::TestCase assert !fixed_issue.status.is_closed? old_status = fixed_issue.status - Repository.scan_changesets_for_issue_ids + with_settings :notified_events => %w(issue_added issue_updated) do + Repository.scan_changesets_for_issue_ids + end assert_equal [101, 102], Issue.find(3).changeset_ids # fixed issues diff --git a/test/unit/setting_test.rb b/test/unit/setting_test.rb index 41bc31aef..089cb2754 100644 --- a/test/unit/setting_test.rb +++ b/test/unit/setting_test.rb @@ -19,6 +19,10 @@ require File.expand_path('../../test_helper', __FILE__) class SettingTest < ActiveSupport::TestCase + def teardown + Setting.clear_cache + end + def test_read_default assert_equal "Redmine", Setting.app_title assert Setting.self_registration? diff --git a/test/unit/wiki_content_test.rb b/test/unit/wiki_content_test.rb index bd8474b55..420095807 100644 --- a/test/unit/wiki_content_test.rb +++ b/test/unit/wiki_content_test.rb @@ -44,11 +44,13 @@ class WikiContentTest < ActiveSupport::TestCase end def test_create_should_send_email_notification - Setting.notified_events = ['wiki_content_added'] ActionMailer::Base.deliveries.clear page = WikiPage.new(:wiki => @wiki, :title => "A new page") page.content = WikiContent.new(:text => "Content text", :author => User.find(1), :comments => "My comment") - assert page.save + + with_settings :notified_events => %w(wiki_content_added) do + assert page.save + end assert_equal 1, ActionMailer::Base.deliveries.size end @@ -88,11 +90,13 @@ class WikiContentTest < ActiveSupport::TestCase end def test_update_should_send_email_notification - Setting.notified_events = ['wiki_content_updated'] ActionMailer::Base.deliveries.clear content = @page.content content.text = "My new content" - assert content.save + + with_settings :notified_events => %w(wiki_content_updated) do + assert content.save + end assert_equal 1, ActionMailer::Base.deliveries.size end