summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/journal.rb3
-rw-r--r--config/locales/en.yml1
-rw-r--r--lib/redmine/notifiable.rb1
-rw-r--r--test/unit/journal_observer_test.rb32
-rw-r--r--test/unit/lib/redmine/notifiable_test.rb2
5 files changed, 36 insertions, 3 deletions
diff --git a/app/models/journal.rb b/app/models/journal.rb
index 5468c8629..24c54544b 100644
--- a/app/models/journal.rb
+++ b/app/models/journal.rb
@@ -354,7 +354,8 @@ class Journal < ApplicationRecord
(Setting.notified_events.include?('issue_status_updated') && new_status.present?) ||
(Setting.notified_events.include?('issue_assigned_to_updated') && detail_for_attribute('assigned_to_id').present?) ||
(Setting.notified_events.include?('issue_priority_updated') && new_value_for('priority_id').present?) ||
- (Setting.notified_events.include?('issue_fixed_version_updated') && detail_for_attribute('fixed_version_id').present?)
+ (Setting.notified_events.include?('issue_fixed_version_updated') && detail_for_attribute('fixed_version_id').present?) ||
+ (Setting.notified_events.include?('issue_attachment_added') && details.any? {|d| d.property == 'attachment' && d.value })
)
Mailer.deliver_issue_edit(self)
end
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 0fa3b0234..ecda509ec 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -629,6 +629,7 @@ en:
label_issue_assigned_to_updated: Assignee updated
label_issue_priority_updated: Priority updated
label_issue_fixed_version_updated: Target version updated
+ label_issue_attachment_added: Attachment added
label_document: Document
label_document_new: New document
label_document_plural: Documents
diff --git a/lib/redmine/notifiable.rb b/lib/redmine/notifiable.rb
index 6fce9122d..05400b7ad 100644
--- a/lib/redmine/notifiable.rb
+++ b/lib/redmine/notifiable.rb
@@ -34,6 +34,7 @@ module Redmine
notifications << Notifiable.new('issue_assigned_to_updated', 'issue_updated')
notifications << Notifiable.new('issue_priority_updated', 'issue_updated')
notifications << Notifiable.new('issue_fixed_version_updated', 'issue_updated')
+ notifications << Notifiable.new('issue_attachment_added', 'issue_updated')
notifications << Notifiable.new('news_added')
notifications << Notifiable.new('news_comment_added')
notifications << Notifiable.new('document_added')
diff --git a/test/unit/journal_observer_test.rb b/test/unit/journal_observer_test.rb
index 0452d66c3..ed6931893 100644
--- a/test/unit/journal_observer_test.rb
+++ b/test/unit/journal_observer_test.rb
@@ -23,7 +23,7 @@ class JournalObserverTest < ActiveSupport::TestCase
fixtures :issues, :issue_statuses, :journals, :journal_details, :projects,
:projects_trackers, :trackers, :enabled_modules, :enumerations,
:users, :user_preferences, :email_addresses, :roles, :members, :member_roles,
- :versions, :issue_categories
+ :versions, :issue_categories, :attachments
def setup
User.current = nil
@@ -198,4 +198,34 @@ class JournalObserverTest < ActiveSupport::TestCase
assert_equal 0, ActionMailer::Base.deliveries.size
end
end
+
+ def test_create_should_send_email_notification_with_issue_attachment_added
+ set_tmp_attachments_directory
+ with_settings :notified_events => %w(issue_attachment_added) do
+ user = User.find_by_login('jsmith')
+ issue = issues(:issues_001)
+ issue.init_journal(user)
+ issue.save_attachments(
+ { 'p0' => {'file' => mock_file_with_options(:original_filename => 'upload')} }
+ )
+
+ assert issue.save
+ assert_equal 2, ActionMailer::Base.deliveries.size
+ end
+ end
+
+ def test_create_should_not_send_email_notification_without_issue_attachment_added
+ set_tmp_attachments_directory
+ with_settings :notified_events => [] do
+ user = User.find_by_login('jsmith')
+ issue = issues(:issues_001)
+ issue.init_journal(user)
+ issue.save_attachments(
+ { 'p0' => {'file' => mock_file_with_options(:original_filename => 'upload')} }
+ )
+
+ assert issue.save
+ assert_equal 0, ActionMailer::Base.deliveries.size
+ end
+ end
end
diff --git a/test/unit/lib/redmine/notifiable_test.rb b/test/unit/lib/redmine/notifiable_test.rb
index 69acbe596..ee424663e 100644
--- a/test/unit/lib/redmine/notifiable_test.rb
+++ b/test/unit/lib/redmine/notifiable_test.rb
@@ -25,7 +25,7 @@ class Redmine::NotifiableTest < ActiveSupport::TestCase
def test_all
%w(issue_added issue_updated issue_note_added issue_status_updated
- issue_assigned_to_updated issue_priority_updated news_added
+ issue_assigned_to_updated issue_priority_updated issue_fixed_version_updated issue_attachment_added news_added
news_comment_added document_added file_added
message_posted
wiki_content_added wiki_content_updated).each do |notifiable|