comparison test/unit/.svn/text-base/mail_handler_test.rb.svn-base @ 119:8661b858af72

* Update to Redmine trunk rev 4705
author Chris Cannam
date Thu, 13 Jan 2011 14:12:06 +0000
parents 94944d00e43c
children cbce1fd3b1b7
comparison
equal deleted inserted replaced
39:150ceac17a8d 119:8661b858af72
15 # 15 #
16 # You should have received a copy of the GNU General Public License 16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software 17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 19
20 require File.dirname(__FILE__) + '/../test_helper' 20 require File.expand_path('../../test_helper', __FILE__)
21 21
22 class MailHandlerTest < ActiveSupport::TestCase 22 class MailHandlerTest < ActiveSupport::TestCase
23 fixtures :users, :projects, 23 fixtures :users, :projects,
24 :enabled_modules, 24 :enabled_modules,
25 :roles, 25 :roles,
34 :versions, 34 :versions,
35 :enumerations, 35 :enumerations,
36 :issue_categories, 36 :issue_categories,
37 :custom_fields, 37 :custom_fields,
38 :custom_fields_trackers, 38 :custom_fields_trackers,
39 :custom_fields_projects,
39 :boards, 40 :boards,
40 :messages 41 :messages
41 42
42 FIXTURES_PATH = File.dirname(__FILE__) + '/../fixtures/mail_handler' 43 FIXTURES_PATH = File.dirname(__FILE__) + '/../fixtures/mail_handler'
43 44
51 # This email contains: 'Project: onlinestore' 52 # This email contains: 'Project: onlinestore'
52 issue = submit_email('ticket_on_given_project.eml') 53 issue = submit_email('ticket_on_given_project.eml')
53 assert issue.is_a?(Issue) 54 assert issue.is_a?(Issue)
54 assert !issue.new_record? 55 assert !issue.new_record?
55 issue.reload 56 issue.reload
57 assert_equal Project.find(2), issue.project
58 assert_equal issue.project.trackers.first, issue.tracker
56 assert_equal 'New ticket on a given project', issue.subject 59 assert_equal 'New ticket on a given project', issue.subject
57 assert_equal User.find_by_login('jsmith'), issue.author 60 assert_equal User.find_by_login('jsmith'), issue.author
58 assert_equal Project.find(2), issue.project
59 assert_equal IssueStatus.find_by_name('Resolved'), issue.status 61 assert_equal IssueStatus.find_by_name('Resolved'), issue.status
60 assert issue.description.include?('Lorem ipsum dolor sit amet, consectetuer adipiscing elit.') 62 assert issue.description.include?('Lorem ipsum dolor sit amet, consectetuer adipiscing elit.')
61 assert_equal '2010-01-01', issue.start_date.to_s 63 assert_equal '2010-01-01', issue.start_date.to_s
62 assert_equal '2010-12-31', issue.due_date.to_s 64 assert_equal '2010-12-31', issue.due_date.to_s
63 assert_equal User.find_by_login('jsmith'), issue.assigned_to 65 assert_equal User.find_by_login('jsmith'), issue.assigned_to
64 assert_equal Version.find_by_name('alpha'), issue.fixed_version 66 assert_equal Version.find_by_name('alpha'), issue.fixed_version
65 assert_equal 2.5, issue.estimated_hours 67 assert_equal 2.5, issue.estimated_hours
66 assert_equal 30, issue.done_ratio 68 assert_equal 30, issue.done_ratio
69 assert_equal [issue.id, 1, 2], [issue.root_id, issue.lft, issue.rgt]
67 # keywords should be removed from the email body 70 # keywords should be removed from the email body
68 assert !issue.description.match(/^Project:/i) 71 assert !issue.description.match(/^Project:/i)
69 assert !issue.description.match(/^Status:/i) 72 assert !issue.description.match(/^Status:/i)
70 # Email notification should be sent 73 # Email notification should be sent
71 mail = ActionMailer::Base.deliveries.last 74 mail = ActionMailer::Base.deliveries.last
72 assert_not_nil mail 75 assert_not_nil mail
73 assert mail.subject.include?('New ticket on a given project') 76 assert mail.subject.include?('New ticket on a given project')
74 end 77 end
78
79 def test_add_issue_with_default_tracker
80 # This email contains: 'Project: onlinestore'
81 issue = submit_email('ticket_on_given_project.eml', :issue => {:tracker => 'Support request'})
82 assert issue.is_a?(Issue)
83 assert !issue.new_record?
84 issue.reload
85 assert_equal 'Support request', issue.tracker.name
86 end
75 87
76 def test_add_issue_with_status 88 def test_add_issue_with_status
77 # This email contains: 'Project: onlinestore' and 'Status: Resolved' 89 # This email contains: 'Project: onlinestore' and 'Status: Resolved'
78 issue = submit_email('ticket_on_given_project.eml') 90 issue = submit_email('ticket_on_given_project.eml')
79 assert issue.is_a?(Issue) 91 assert issue.is_a?(Issue)
199 assert_difference 'Issue.count' do 211 assert_difference 'Issue.count' do
200 issue = submit_email('ticket_by_unknown_user.eml', :issue => {:project => 'onlinestore'}, :no_permission_check => '1', :unknown_user => 'accept') 212 issue = submit_email('ticket_by_unknown_user.eml', :issue => {:project => 'onlinestore'}, :no_permission_check => '1', :unknown_user => 'accept')
201 assert issue.is_a?(Issue) 213 assert issue.is_a?(Issue)
202 assert issue.author.anonymous? 214 assert issue.author.anonymous?
203 assert !issue.project.is_public? 215 assert !issue.project.is_public?
216 assert_equal [issue.id, 1, 2], [issue.root_id, issue.lft, issue.rgt]
204 end 217 end
205 end 218 end
206 end 219 end
207 220
208 def test_add_issue_by_created_user 221 def test_add_issue_by_created_user
286 journal = submit_email('ticket_reply.eml') 299 journal = submit_email('ticket_reply.eml')
287 assert journal.is_a?(Journal) 300 assert journal.is_a?(Journal)
288 assert_equal User.find_by_login('jsmith'), journal.user 301 assert_equal User.find_by_login('jsmith'), journal.user
289 assert_equal Issue.find(2), journal.journalized 302 assert_equal Issue.find(2), journal.journalized
290 assert_match /This is reply/, journal.notes 303 assert_match /This is reply/, journal.notes
304 assert_equal 'Feature request', journal.issue.tracker.name
291 end 305 end
292 306
293 def test_add_issue_note_with_attribute_changes 307 def test_add_issue_note_with_attribute_changes
294 # This email contains: 'Status: Resolved' 308 # This email contains: 'Status: Resolved'
295 journal = submit_email('ticket_reply_with_status.eml') 309 journal = submit_email('ticket_reply_with_status.eml')
296 assert journal.is_a?(Journal) 310 assert journal.is_a?(Journal)
297 issue = Issue.find(journal.issue.id) 311 issue = Issue.find(journal.issue.id)
298 assert_equal User.find_by_login('jsmith'), journal.user 312 assert_equal User.find_by_login('jsmith'), journal.user
299 assert_equal Issue.find(2), journal.journalized 313 assert_equal Issue.find(2), journal.journalized
300 assert_match /This is reply/, journal.notes 314 assert_match /This is reply/, journal.notes
315 assert_equal 'Feature request', journal.issue.tracker.name
301 assert_equal IssueStatus.find_by_name("Resolved"), issue.status 316 assert_equal IssueStatus.find_by_name("Resolved"), issue.status
302 assert_equal '2010-01-01', issue.start_date.to_s 317 assert_equal '2010-01-01', issue.start_date.to_s
303 assert_equal '2010-12-31', issue.due_date.to_s 318 assert_equal '2010-12-31', issue.due_date.to_s
304 assert_equal User.find_by_login('jsmith'), issue.assigned_to 319 assert_equal User.find_by_login('jsmith'), issue.assigned_to
305 assert_equal 'Updated custom value', issue.custom_value_for(CustomField.find_by_name('Searchable field')).value 320 assert_equal "52.6", issue.custom_value_for(CustomField.find_by_name('Float field')).value
306 end 321 end
307 322
308 def test_add_issue_note_should_send_email_notification 323 def test_add_issue_note_should_send_email_notification
309 ActionMailer::Base.deliveries.clear 324 ActionMailer::Base.deliveries.clear
310 journal = submit_email('ticket_reply.eml') 325 journal = submit_email('ticket_reply.eml')
311 assert journal.is_a?(Journal) 326 assert journal.is_a?(Journal)
312 assert_equal 1, ActionMailer::Base.deliveries.size 327 assert_equal 1, ActionMailer::Base.deliveries.size
328 end
329
330 def test_add_issue_note_should_not_set_defaults
331 journal = submit_email('ticket_reply.eml', :issue => {:tracker => 'Support request', :priority => 'High'})
332 assert journal.is_a?(Journal)
333 assert_match /This is reply/, journal.notes
334 assert_equal 'Feature request', journal.issue.tracker.name
335 assert_equal 'Normal', journal.issue.priority.name
313 end 336 end
314 337
315 def test_reply_to_a_message 338 def test_reply_to_a_message
316 m = submit_email('message_reply.eml') 339 m = submit_email('message_reply.eml')
317 assert m.is_a?(Message) 340 assert m.is_a?(Message)