diff options
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 |