diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2008-01-06 17:06:14 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2008-01-06 17:06:14 +0000 |
commit | 976a31e941e61542075866563e4c0740106c5d70 (patch) | |
tree | f9e9ef35a84f4f37f5db76de1db6f7442503abb8 /test | |
parent | 4a729036bf0a92b8da4481d1313512c5b885770a (diff) | |
download | redmine-976a31e941e61542075866563e4c0740106c5d70.tar.gz redmine-976a31e941e61542075866563e4c0740106c5d70.zip |
Merged IssuesController change_status and add_note actions.
The 'Change status' specific form removed and now accessible from issue/show view with no additional request (click on 'Update' to show the form).
The 'Change issue status' permission is removed. To change the status, the user just needs to have either 'Edit' or 'Add note' permissions and some workflow transitions allowed.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1043 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'test')
-rw-r--r-- | test/fixtures/enumerations.yml | 9 | ||||
-rw-r--r-- | test/fixtures/roles.yml | 5 | ||||
-rw-r--r-- | test/fixtures/users.yml | 23 | ||||
-rw-r--r-- | test/functional/issues_controller_test.rb | 122 | ||||
-rw-r--r-- | test/integration/issues_test.rb | 4 | ||||
-rw-r--r-- | test/test_helper.rb | 6 |
6 files changed, 154 insertions, 15 deletions
diff --git a/test/fixtures/enumerations.yml b/test/fixtures/enumerations.yml index eeef99b5b..c90a997ee 100644 --- a/test/fixtures/enumerations.yml +++ b/test/fixtures/enumerations.yml @@ -31,3 +31,12 @@ enumerations_008: name: Immediate
id: 8
opt: IPRI
+enumerations_009:
+ name: Design
+ id: 9
+ opt: ACTI
+enumerations_010:
+ name: Development
+ id: 10
+ opt: ACTI
+
\ No newline at end of file diff --git a/test/fixtures/roles.yml b/test/fixtures/roles.yml index a089a98f9..c4d417a09 100644 --- a/test/fixtures/roles.yml +++ b/test/fixtures/roles.yml @@ -9,7 +9,6 @@ roles_004: - :edit_issues
- :manage_issue_relations
- :add_issue_notes
- - :change_issue_status
- :move_issues
- :save_queries
- :view_gantt
@@ -34,6 +33,7 @@ roles_005: builtin: 2
permissions: |
---
+ - :add_issue_notes
- :view_gantt
- :view_calendar
- :view_time_entries
@@ -58,7 +58,6 @@ roles_001: - :edit_issues
- :manage_issue_relations
- :add_issue_notes
- - :change_issue_status
- :move_issues
- :delete_issues
- :manage_public_queries
@@ -99,7 +98,6 @@ roles_002: - :edit_issues
- :manage_issue_relations
- :add_issue_notes
- - :change_issue_status
- :move_issues
- :delete_issues
- :manage_public_queries
@@ -137,7 +135,6 @@ roles_003: - :edit_issues
- :manage_issue_relations
- :add_issue_notes
- - :change_issue_status
- :move_issues
- :delete_issues
- :manage_public_queries
diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml index df7123879..de3553173 100644 --- a/test/fixtures/users.yml +++ b/test/fixtures/users.yml @@ -14,6 +14,7 @@ users_004: auth_source_id:
mail_notification: true
login: rhill
+ type: User
users_001:
created_on: 2006-07-19 19:12:21 +02:00
status: 1
@@ -29,6 +30,7 @@ users_001: auth_source_id:
mail_notification: true
login: admin
+ type: User
users_002:
created_on: 2006-07-19 19:32:09 +02:00
status: 1
@@ -44,6 +46,7 @@ users_002: auth_source_id:
mail_notification: true
login: jsmith
+ type: User
users_003:
created_on: 2006-07-19 19:33:19 +02:00
status: 1
@@ -59,6 +62,7 @@ users_003: auth_source_id:
mail_notification: true
login: dlopper
+ type: User
users_005:
id: 5
created_on: 2006-07-19 19:33:19 +02:00
@@ -75,3 +79,22 @@ users_005: auth_source_id:
mail_notification: true
login: dlopper2
+ type: User
+users_006:
+ id: 6
+ created_on: 2006-07-19 19:33:19 +02:00
+ status: 1
+ last_login_on:
+ language: ''
+ hashed_password: 1
+ updated_on: 2006-07-19 19:33:19 +02:00
+ admin: false
+ mail: ''
+ lastname: Anonymous
+ firstname: ''
+ auth_source_id:
+ mail_notification: false
+ login: ''
+ type: AnonymousUser
+
+
\ No newline at end of file diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index 06d2f1029..d60e32200 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -32,7 +32,8 @@ class IssuesControllerTest < Test::Unit::TestCase :issue_categories, :enabled_modules, :enumerations, - :attachments + :attachments, + :workflows def setup @controller = IssuesController.new @@ -94,13 +95,37 @@ class IssuesControllerTest < Test::Unit::TestCase assert_equal 'application/atom+xml', @response.content_type end - def test_show + def test_show_by_anonymous get :show, :id => 1 assert_response :success assert_template 'show.rhtml' assert_not_nil assigns(:issue) + assert_equal Issue.find(1), assigns(:issue) + + # anonymous role is allowed to add a note + assert_tag :tag => 'form', + :descendant => { :tag => 'fieldset', + :child => { :tag => 'legend', + :content => /Notes/ } } end + def test_show_by_manager + @request.session[:user_id] = 2 + get :show, :id => 1 + assert_response :success + + assert_tag :tag => 'form', + :descendant => { :tag => 'fieldset', + :child => { :tag => 'legend', + :content => /Change properties/ } }, + :descendant => { :tag => 'fieldset', + :child => { :tag => 'legend', + :content => /Log time/ } }, + :descendant => { :tag => 'fieldset', + :child => { :tag => 'legend', + :content => /Notes/ } } + end + def test_get_edit @request.session[:user_id] = 2 get :edit, :id => 1 @@ -129,21 +154,100 @@ class IssuesControllerTest < Test::Unit::TestCase assert mail.body.include?("Subject changed from #{old_subject} to #{new_subject}") end - def test_post_change_status + def test_get_update + @request.session[:user_id] = 2 + get :update, :id => 1 + assert_response :success + assert_template 'update' + end + + def test_update_with_status_and_assignee_change issue = Issue.find(1) assert_equal 1, issue.status_id @request.session[:user_id] = 2 - post :change_status, :id => 1, - :new_status_id => 2, - :issue => { :assigned_to_id => 3 }, - :notes => 'Assigned to dlopper', - :confirm => 1 + post :update, + :id => 1, + :issue => { :status_id => 2, :assigned_to_id => 3 }, + :notes => 'Assigned to dlopper' assert_redirected_to 'issues/show/1' issue.reload assert_equal 2, issue.status_id - j = issue.journals.find(:first, :order => 'created_on DESC') + j = issue.journals.find(:first, :order => 'id DESC') assert_equal 'Assigned to dlopper', j.notes assert_equal 2, j.details.size + + mail = ActionMailer::Base.deliveries.last + assert mail.body.include?("Status changed from New to Assigned") + end + + def test_update_with_note_only + notes = 'Note added by IssuesControllerTest#test_update_with_note_only' + # anonymous user + post :update, + :id => 1, + :notes => notes + assert_redirected_to 'issues/show/1' + j = Issue.find(1).journals.find(:first, :order => 'id DESC') + assert_equal notes, j.notes + assert_equal 0, j.details.size + assert_equal User.anonymous, j.user + + mail = ActionMailer::Base.deliveries.last + assert mail.body.include?(notes) + end + + def test_update_with_note_and_spent_time + @request.session[:user_id] = 2 + spent_hours_before = Issue.find(1).spent_hours + post :update, + :id => 1, + :notes => '2.5 hours added', + :time_entry => { :hours => '2.5', :comments => '', :activity_id => Enumeration.get_values('ACTI').first } + assert_redirected_to 'issues/show/1' + + issue = Issue.find(1) + + j = issue.journals.find(:first, :order => 'id DESC') + assert_equal '2.5 hours added', j.notes + assert_equal 0, j.details.size + + t = issue.time_entries.find(:first, :order => 'id DESC') + assert_not_nil t + assert_equal 2.5, t.hours + assert_equal spent_hours_before + 2.5, issue.spent_hours + end + + def test_update_with_attachment_only + # anonymous user + post :update, + :id => 1, + :notes => '', + :attachments => [ test_uploaded_file('testfile.txt', 'text/plain') ] + assert_redirected_to 'issues/show/1' + j = Issue.find(1).journals.find(:first, :order => 'id DESC') + assert j.notes.blank? + assert_equal 1, j.details.size + assert_equal 'testfile.txt', j.details.first.value + assert_equal User.anonymous, j.user + + mail = ActionMailer::Base.deliveries.last + assert mail.body.include?('testfile.txt') + end + + def test_update_with_no_change + issue = Issue.find(1) + issue.journals.clear + ActionMailer::Base.deliveries.clear + + post :update, + :id => 1, + :notes => '' + assert_redirected_to 'issues/show/1' + + issue.reload + assert issue.journals.empty? + # No email should be sent + assert ActionMailer::Base.deliveries.empty? end def test_context_menu diff --git a/test/integration/issues_test.rb b/test/integration/issues_test.rb index 702fbc026..a9d3f9c74 100644 --- a/test/integration/issues_test.rb +++ b/test/integration/issues_test.rb @@ -38,7 +38,9 @@ class IssuesTest < ActionController::IntegrationTest def test_issue_attachements log_user('jsmith', 'jsmith') - post "issues/add_note/1", { :notes => 'Some notes', 'attachments[]' => ActionController::TestUploadedFile.new(Test::Unit::TestCase.fixture_path + '/files/testfile.txt', 'text/plain') } + post 'issues/update/1', + :notes => 'Some notes', + :attachments => ([] << ActionController::TestUploadedFile.new(Test::Unit::TestCase.fixture_path + '/files/testfile.txt', 'text/plain')) assert_redirected_to "issues/show/1" # make sure attachment was saved diff --git a/test/test_helper.rb b/test/test_helper.rb index 542d4ce72..7c81c3607 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -53,6 +53,10 @@ class Test::Unit::TestCase assert_redirected_to "my/page" assert_equal login, User.find(session[:user_id]).login end + + def test_uploaded_file(name, mime) + ActionController::TestUploadedFile.new(Test::Unit::TestCase.fixture_path + "/files/#{name}", mime) + end end @@ -70,4 +74,4 @@ class String def read self.to_s end -end
\ No newline at end of file +end |