]> source.dussan.org Git - redmine.git/commitdiff
Adds a few Plugin tests.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 16 Nov 2008 16:08:25 +0000 (16:08 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 16 Nov 2008 16:08:25 +0000 (16:08 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2040 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/plugin.rb
test/functional/admin_controller_test.rb
test/unit/lib/redmine/plugin_test.rb [new file with mode: 0644]

index 80c638b282b315120448a150caad9c25e92af3e4..ad8ed7bbbc5d7463e2bdbd1496dac0765fab2ad3 100644 (file)
@@ -64,6 +64,8 @@ module Redmine #:nodoc:
     def self.register(id, &block)
       p = new(id)
       p.instance_eval(&block)
+      # Set a default name if it was not provided during registration
+      p.name(id.to_s.humanize) if p.name.nil?
       registered_plugins[id] = p
     end
     
@@ -73,10 +75,17 @@ module Redmine #:nodoc:
     end
     
     # Finds a plugin by its id
+    # Returns a PluginNotFound exception if the plugin doesn't exist
     def self.find(id)
       registered_plugins[id.to_sym] || raise(PluginNotFound)
     end
     
+    # Clears the registered plugins hash
+    # It doesn't unload installed plugins
+    def self.clear
+      @registered_plugins = {}
+    end
+    
     def initialize(id)
       @id = id.to_sym
     end
index 9cb2d07f0d710f52de20842737f6374817686d19..2bbd8fe9746fef1abe14ef9b1757517a502e48eb 100644 (file)
@@ -79,10 +79,32 @@ class AdminControllerTest < Test::Unit::TestCase
     assert_equal [user.mail], mail.bcc
   end
   
+  def test_no_plugins
+    Redmine::Plugin.clear
+    
+    get :plugins
+    assert_response :success
+    assert_template 'plugins'
+  end
+  
   def test_plugins
+    # Register a few plugins
+    Redmine::Plugin.register :foo do
+      name 'Foo plugin'
+      author 'John Smith'
+      description 'This is a test plugin'
+      version '0.0.1'
+      settings :default => {'sample_setting' => 'value', 'foo'=>'bar'}, :partial => 'foo/settings'
+    end
+    Redmine::Plugin.register :bar do
+    end
+  
     get :plugins
     assert_response :success
     assert_template 'plugins'
+    
+    assert_tag :td, :content => 'Foo plugin'
+    assert_tag :td, :content => 'Bar'
   end
 
   def test_info
diff --git a/test/unit/lib/redmine/plugin_test.rb b/test/unit/lib/redmine/plugin_test.rb
new file mode 100644 (file)
index 0000000..432fe0b
--- /dev/null
@@ -0,0 +1,51 @@
+# 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::PluginTest < Test::Unit::TestCase
+
+  def setup
+    @klass = Redmine::Plugin
+    # In case some real plugins are installed
+    @klass.clear
+  end
+  
+  def teardown
+    @klass.clear
+  end
+  
+  def test_register
+    @klass.register :foo do
+      name 'Foo plugin'
+      author 'John Smith'
+      description 'This is a test plugin'
+      version '0.0.1'
+      settings :default => {'sample_setting' => 'value', 'foo'=>'bar'}, :partial => 'foo/settings'
+    end
+    
+    assert_equal 1, @klass.all.size
+    
+    plugin = @klass.find('foo')
+    assert plugin.is_a?(Redmine::Plugin)
+    assert_equal :foo, plugin.id
+    assert_equal 'Foo plugin', plugin.name
+    assert_equal 'John Smith', plugin.author
+    assert_equal 'This is a test plugin', plugin.description
+    assert_equal '0.0.1', plugin.version
+  end
+end