summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Davis <edavis@littlestreamsoftware.com>2010-09-28 20:19:55 +0000
committerEric Davis <edavis@littlestreamsoftware.com>2010-09-28 20:19:55 +0000
commit244e94de80751091f3ef0208dfb6b8502a6c13eb (patch)
tree81985b3bd29f2649c265ef61ee6a3b39c55c4884
parent582ed86d828bb957a7844832c627b425884d0716 (diff)
downloadredmine-244e94de80751091f3ef0208dfb6b8502a6c13eb.tar.gz
redmine-244e94de80751091f3ef0208dfb6b8502a6c13eb.zip
Refactor the hardcoded event actions (notifiables) to use a class
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4220 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/controllers/settings_controller.rb2
-rw-r--r--lib/redmine.rb1
-rw-r--r--lib/redmine/notifiable.rb19
-rw-r--r--test/unit/lib/redmine/notifiable_test.rb38
4 files changed, 59 insertions, 1 deletions
diff --git a/app/controllers/settings_controller.rb b/app/controllers/settings_controller.rb
index 77e1da56b..2e904ec19 100644
--- a/app/controllers/settings_controller.rb
+++ b/app/controllers/settings_controller.rb
@@ -26,7 +26,7 @@ class SettingsController < ApplicationController
end
def edit
- @notifiables = %w(issue_added issue_updated news_added document_added file_added message_posted wiki_content_added wiki_content_updated)
+ @notifiables = Redmine::Notifiable.all
if request.post? && params[:settings] && params[:settings].is_a?(Hash)
settings = (params[:settings] || {}).dup.symbolize_keys
settings.each do |name, value|
diff --git a/lib/redmine.rb b/lib/redmine.rb
index eac459c2f..9d9b0e408 100644
--- a/lib/redmine.rb
+++ b/lib/redmine.rb
@@ -8,6 +8,7 @@ require 'redmine/core_ext'
require 'redmine/themes'
require 'redmine/hook'
require 'redmine/plugin'
+require 'redmine/notifiable'
require 'redmine/wiki_formatting'
require 'redmine/scm/base'
diff --git a/lib/redmine/notifiable.rb b/lib/redmine/notifiable.rb
new file mode 100644
index 000000000..fa192ab25
--- /dev/null
+++ b/lib/redmine/notifiable.rb
@@ -0,0 +1,19 @@
+module Redmine
+ class Notifiable
+ CoreNotifications = [
+ 'issue_added',
+ 'issue_updated',
+ 'news_added',
+ 'document_added',
+ 'file_added',
+ 'message_posted',
+ 'wiki_content_added',
+ 'wiki_content_updated'
+ ]
+
+ # TODO: Plugin API for adding a new notification?
+ def self.all
+ CoreNotifications
+ end
+ end
+end
diff --git a/test/unit/lib/redmine/notifiable_test.rb b/test/unit/lib/redmine/notifiable_test.rb
new file mode 100644
index 000000000..e0f16b462
--- /dev/null
+++ b/test/unit/lib/redmine/notifiable_test.rb
@@ -0,0 +1,38 @@
+# redMine - project management software
+# Copyright (C) 2006-2008 Jean-Philippe Lang
+#
+# 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.
+#
+# 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.
+#
+# 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.
+
+require File.dirname(__FILE__) + '/../../../test_helper'
+
+class Redmine::NotifiableTest < ActiveSupport::TestCase
+ def setup
+ end
+
+ def test_included_core_notifications
+ assert_equal 8, Redmine::Notifiable::CoreNotifications.length
+ Redmine::Notifiable::CoreNotifications.length
+
+ %w(issue_added issue_updated news_added document_added file_added message_posted wiki_content_added wiki_content_updated).each do |notifiable|
+ assert Redmine::Notifiable::CoreNotifications.include?(notifiable), "missing #{notifiable}"
+ end
+ end
+
+ def test_all_should_include_all_of_the_core_notifications
+ Redmine::Notifiable::CoreNotifications.each do |notifiable|
+ assert Redmine::Notifiable.all.include?(notifiable), "missing #{notifiable} in #all"
+ end
+ end
+end