##// END OF EJS Templates
When copying issues, let the status be changed to default or left unchanged....
When copying issues, let the status be changed to default or left unchanged. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9404 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r8771:d4e6355eb3f2
r9270:09375960d69d
Show More
issues_controller_transaction_test.rb
232 lines | 7.6 KiB | text/x-ruby | RubyLexer
/ test / functional / issues_controller_transaction_test.rb
Jean-Philippe Lang
Fixes a test failure with SQLite3 due to transaction fixtures (#5290)....
r3555 # Redmine - project management software
Toshi MARUYAMA
remove trailing white-spaces from test/functional/issues_controller_transaction_test.rb....
r6799 # Copyright (C) 2006-2011 Jean-Philippe Lang
Jean-Philippe Lang
Fixes a test failure with SQLite3 due to transaction fixtures (#5290)....
r3555 #
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
Toshi MARUYAMA
remove trailing white-spaces from test/functional/issues_controller_transaction_test.rb....
r6799 #
Jean-Philippe Lang
Fixes a test failure with SQLite3 due to transaction fixtures (#5290)....
r3555 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
Toshi MARUYAMA
remove trailing white-spaces from test/functional/issues_controller_transaction_test.rb....
r6799 #
Jean-Philippe Lang
Fixes a test failure with SQLite3 due to transaction fixtures (#5290)....
r3555 # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Jean-Baptiste Barth
Use absolute paths in test/**/* requires for Ruby 1.9.2 compatibility. #4050...
r4395 require File.expand_path('../../test_helper', __FILE__)
Jean-Philippe Lang
Fixes a test failure with SQLite3 due to transaction fixtures (#5290)....
r3555 require 'issues_controller'
class IssuesControllerTransactionTest < ActionController::TestCase
fixtures :projects,
:users,
:roles,
:members,
:member_roles,
:issues,
:issue_statuses,
:versions,
:trackers,
:projects_trackers,
:issue_categories,
:enabled_modules,
:enumerations,
:attachments,
:workflows,
:custom_fields,
:custom_values,
:custom_fields_projects,
:custom_fields_trackers,
:time_entries,
:journals,
:journal_details,
:queries
self.use_transactional_fixtures = false
Toshi MARUYAMA
remove trailing white-spaces from test/functional/issues_controller_transaction_test.rb....
r6799
Jean-Philippe Lang
Fixes a test failure with SQLite3 due to transaction fixtures (#5290)....
r3555 def setup
@controller = IssuesController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
User.current = nil
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/issues_controller_transaction_test.rb....
r6799
Jean-Philippe Lang
Better handling of issue update conflicts (#8691)....
r8654 def test_update_stale_issue_should_not_update_the_issue
Jean-Philippe Lang
Fixes a test failure with SQLite3 due to transaction fixtures (#5290)....
r3555 issue = Issue.find(2)
@request.session[:user_id] = 2
assert_no_difference 'Journal.count' do
assert_no_difference 'TimeEntry.count' do
Jean-Philippe Lang
Better handling of attachments when issue validation fails (#10253)....
r8771 put :update,
:id => issue.id,
:issue => {
:fixed_version_id => 4,
:lock_version => (issue.lock_version - 1)
},
:notes => 'My notes',
:time_entry => { :hours => '2.5', :comments => '', :activity_id => TimeEntryActivity.first.id }
end
end
assert_response :success
assert_template 'edit'
assert_tag 'div', :attributes => {:class => 'conflict'}
assert_tag 'input', :attributes => {:name => 'conflict_resolution', :value => 'overwrite'}
assert_tag 'input', :attributes => {:name => 'conflict_resolution', :value => 'add_notes'}
assert_tag 'input', :attributes => {:name => 'conflict_resolution', :value => 'cancel'}
end
def test_update_stale_issue_should_save_attachments
set_tmp_attachments_directory
issue = Issue.find(2)
@request.session[:user_id] = 2
assert_no_difference 'Journal.count' do
assert_no_difference 'TimeEntry.count' do
assert_difference 'Attachment.count' do
Jean-Philippe Lang
Fixes a test failure with SQLite3 due to transaction fixtures (#5290)....
r3555 put :update,
:id => issue.id,
:issue => {
:fixed_version_id => 4,
:lock_version => (issue.lock_version - 1)
},
Jean-Philippe Lang
Better handling of issue update conflicts (#8691)....
r8654 :notes => 'My notes',
Jean-Philippe Lang
Fixes a test failure with SQLite3 due to transaction fixtures (#5290)....
r3555 :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}},
Jean-Philippe Lang
Fixes some parameters in functional tests....
r3587 :time_entry => { :hours => '2.5', :comments => '', :activity_id => TimeEntryActivity.first.id }
Jean-Philippe Lang
Fixes a test failure with SQLite3 due to transaction fixtures (#5290)....
r3555 end
end
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/issues_controller_transaction_test.rb....
r6799
Jean-Philippe Lang
Fixes a test failure with SQLite3 due to transaction fixtures (#5290)....
r3555 assert_response :success
assert_template 'edit'
Jean-Philippe Lang
Better handling of attachments when issue validation fails (#10253)....
r8771 attachment = Attachment.first(:order => 'id DESC')
assert_tag 'input', :attributes => {:name => 'attachments[p0][token]', :value => attachment.token}
assert_tag 'span', :content => /testfile.txt/
Jean-Philippe Lang
Better handling of issue update conflicts (#8691)....
r8654 end
def test_update_stale_issue_without_notes_should_not_show_add_notes_option
issue = Issue.find(2)
@request.session[:user_id] = 2
put :update, :id => issue.id,
:issue => {
:fixed_version_id => 4,
:lock_version => (issue.lock_version - 1)
},
:notes => ''
assert_tag 'div', :attributes => {:class => 'conflict'}
assert_tag 'input', :attributes => {:name => 'conflict_resolution', :value => 'overwrite'}
assert_no_tag 'input', :attributes => {:name => 'conflict_resolution', :value => 'add_notes'}
assert_tag 'input', :attributes => {:name => 'conflict_resolution', :value => 'cancel'}
end
def test_update_stale_issue_should_show_conflicting_journals
@request.session[:user_id] = 2
put :update, :id => 1,
:issue => {
:fixed_version_id => 4,
:lock_version => 2
},
:notes => '',
:last_journal_id => 1
assert_not_nil assigns(:conflict_journals)
assert_equal 1, assigns(:conflict_journals).size
assert_equal 2, assigns(:conflict_journals).first.id
assert_tag 'div', :attributes => {:class => 'conflict'},
:descendant => {:content => /Some notes with Redmine links/}
end
def test_update_stale_issue_without_previous_journal_should_show_all_journals
@request.session[:user_id] = 2
put :update, :id => 1,
:issue => {
:fixed_version_id => 4,
:lock_version => 2
},
:notes => '',
:last_journal_id => ''
assert_not_nil assigns(:conflict_journals)
assert_equal 2, assigns(:conflict_journals).size
assert_tag 'div', :attributes => {:class => 'conflict'},
:descendant => {:content => /Some notes with Redmine links/}
assert_tag 'div', :attributes => {:class => 'conflict'},
:descendant => {:content => /Journal notes/}
end
def test_update_stale_issue_with_overwrite_conflict_resolution_should_update
@request.session[:user_id] = 2
assert_difference 'Journal.count' do
put :update, :id => 1,
:issue => {
:fixed_version_id => 4,
:lock_version => 2
},
:notes => 'overwrite_conflict_resolution',
:conflict_resolution => 'overwrite'
end
assert_response 302
issue = Issue.find(1)
assert_equal 4, issue.fixed_version_id
journal = Journal.first(:order => 'id DESC')
assert_equal 'overwrite_conflict_resolution', journal.notes
assert journal.details.any?
end
def test_update_stale_issue_with_add_notes_conflict_resolution_should_update
@request.session[:user_id] = 2
assert_difference 'Journal.count' do
put :update, :id => 1,
:issue => {
:fixed_version_id => 4,
:lock_version => 2
},
:notes => 'add_notes_conflict_resolution',
:conflict_resolution => 'add_notes'
end
assert_response 302
issue = Issue.find(1)
assert_nil issue.fixed_version_id
journal = Journal.first(:order => 'id DESC')
assert_equal 'add_notes_conflict_resolution', journal.notes
assert journal.details.empty?
end
def test_update_stale_issue_with_cancel_conflict_resolution_should_redirect_without_updating
@request.session[:user_id] = 2
assert_no_difference 'Journal.count' do
put :update, :id => 1,
:issue => {
:fixed_version_id => 4,
:lock_version => 2
},
:notes => 'add_notes_conflict_resolution',
:conflict_resolution => 'cancel'
end
assert_redirected_to '/issues/1'
issue = Issue.find(1)
assert_nil issue.fixed_version_id
Jean-Philippe Lang
Fixes a test failure with SQLite3 due to transaction fixtures (#5290)....
r3555 end
Jean-Philippe Lang
Moves test to non-transactional fixtures tests (failure with postgresql)....
r7958
def test_index_should_rescue_invalid_sql_query
Query.any_instance.stubs(:statement).returns("INVALID STATEMENT")
get :index
assert_response 500
assert_tag 'p', :content => /An error occurred/
assert_nil session[:query]
assert_nil session[:issues_index_sort]
end
Jean-Philippe Lang
Fixes a test failure with SQLite3 due to transaction fixtures (#5290)....
r3555 end