annotate test/unit/lib/redmine/plugin_test.rb @ 1628:9c5f8e24dadc live tip

Quieten this cron script
author Chris Cannam
date Tue, 25 Aug 2020 11:38:49 +0100
parents e248c7af89ec
children
rev   line source
Chris@0 1 # Redmine - project management software
Chris@1494 2 # Copyright (C) 2006-2014 Jean-Philippe Lang
Chris@0 3 #
Chris@0 4 # This program is free software; you can redistribute it and/or
Chris@0 5 # modify it under the terms of the GNU General Public License
Chris@0 6 # as published by the Free Software Foundation; either version 2
Chris@0 7 # of the License, or (at your option) any later version.
Chris@909 8 #
Chris@0 9 # This program is distributed in the hope that it will be useful,
Chris@0 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@0 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@0 12 # GNU General Public License for more details.
Chris@909 13 #
Chris@0 14 # You should have received a copy of the GNU General Public License
Chris@0 15 # along with this program; if not, write to the Free Software
Chris@0 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Chris@0 17
Chris@119 18 require File.expand_path('../../../../test_helper', __FILE__)
Chris@0 19
Chris@0 20 class Redmine::PluginTest < ActiveSupport::TestCase
Chris@0 21 def setup
Chris@0 22 @klass = Redmine::Plugin
Chris@0 23 # In case some real plugins are installed
Chris@0 24 @klass.clear
Chris@0 25 end
Chris@909 26
Chris@0 27 def teardown
Chris@0 28 @klass.clear
Chris@0 29 end
Chris@909 30
Chris@0 31 def test_register
Chris@0 32 @klass.register :foo do
Chris@0 33 name 'Foo plugin'
Chris@0 34 url 'http://example.net/plugins/foo'
Chris@0 35 author 'John Smith'
Chris@0 36 author_url 'http://example.net/jsmith'
Chris@0 37 description 'This is a test plugin'
Chris@0 38 version '0.0.1'
Chris@0 39 settings :default => {'sample_setting' => 'value', 'foo'=>'bar'}, :partial => 'foo/settings'
Chris@0 40 end
Chris@909 41
Chris@0 42 assert_equal 1, @klass.all.size
Chris@909 43
Chris@0 44 plugin = @klass.find('foo')
Chris@0 45 assert plugin.is_a?(Redmine::Plugin)
Chris@0 46 assert_equal :foo, plugin.id
Chris@0 47 assert_equal 'Foo plugin', plugin.name
Chris@0 48 assert_equal 'http://example.net/plugins/foo', plugin.url
Chris@0 49 assert_equal 'John Smith', plugin.author
Chris@0 50 assert_equal 'http://example.net/jsmith', plugin.author_url
Chris@0 51 assert_equal 'This is a test plugin', plugin.description
Chris@0 52 assert_equal '0.0.1', plugin.version
Chris@0 53 end
Chris@909 54
Chris@1115 55 def test_installed
Chris@1115 56 @klass.register(:foo) {}
Chris@1115 57 assert_equal true, @klass.installed?(:foo)
Chris@1115 58 assert_equal false, @klass.installed?(:bar)
Chris@1115 59 end
Chris@1115 60
Chris@1115 61 def test_menu
Chris@1115 62 assert_difference 'Redmine::MenuManager.items(:project_menu).size' do
Chris@1115 63 @klass.register :foo do
Chris@1115 64 menu :project_menu, :foo_menu_item, '/foo', :caption => 'Foo'
Chris@1115 65 end
Chris@1115 66 end
Chris@1115 67 menu_item = Redmine::MenuManager.items(:project_menu).detect {|i| i.name == :foo_menu_item}
Chris@1115 68 assert_not_nil menu_item
Chris@1115 69 assert_equal 'Foo', menu_item.caption
Chris@1115 70 assert_equal '/foo', menu_item.url
Chris@1115 71 end
Chris@1115 72
Chris@1115 73 def test_delete_menu_item
Chris@1115 74 Redmine::MenuManager.map(:project_menu).push(:foo_menu_item, '/foo', :caption => 'Foo')
Chris@1115 75 assert_difference 'Redmine::MenuManager.items(:project_menu).size', -1 do
Chris@1115 76 @klass.register :foo do
Chris@1115 77 delete_menu_item :project_menu, :foo_menu_item
Chris@1115 78 end
Chris@1115 79 end
Chris@1115 80 assert_nil Redmine::MenuManager.items(:project_menu).detect {|i| i.name == :foo_menu_item}
Chris@1115 81 end
Chris@1115 82
Chris@1464 83 def test_directory_with_override
Chris@1464 84 @klass.register(:foo) do
Chris@1464 85 directory '/path/to/foo'
Chris@1464 86 end
Chris@1464 87 assert_equal '/path/to/foo', @klass.find('foo').directory
Chris@1464 88 end
Chris@1464 89
Chris@1464 90 def test_directory_without_override
Chris@1464 91 @klass.register(:foo) {}
Chris@1464 92 assert_equal File.join(@klass.directory, 'foo'), @klass.find('foo').directory
Chris@1464 93 end
Chris@1464 94
Chris@0 95 def test_requires_redmine
Chris@1115 96 plugin = Redmine::Plugin.register(:foo) {}
Chris@1115 97 Redmine::VERSION.stubs(:to_a).returns([2, 1, 3, "stable", 10817])
Chris@1115 98 # Specific version without hash
Chris@1115 99 assert plugin.requires_redmine('2.1.3')
Chris@1115 100 assert plugin.requires_redmine('2.1')
Chris@1115 101 assert_raise Redmine::PluginRequirementError do
Chris@1115 102 plugin.requires_redmine('2.1.4')
Chris@1115 103 end
Chris@1115 104 assert_raise Redmine::PluginRequirementError do
Chris@1115 105 plugin.requires_redmine('2.2')
Chris@1115 106 end
Chris@1115 107 # Specific version
Chris@1115 108 assert plugin.requires_redmine(:version => '2.1.3')
Chris@1115 109 assert plugin.requires_redmine(:version => ['2.1.3', '2.2.0'])
Chris@1115 110 assert plugin.requires_redmine(:version => '2.1')
Chris@1115 111 assert_raise Redmine::PluginRequirementError do
Chris@1115 112 plugin.requires_redmine(:version => '2.2.0')
Chris@1115 113 end
Chris@1115 114 assert_raise Redmine::PluginRequirementError do
Chris@1115 115 plugin.requires_redmine(:version => ['2.1.4', '2.2.0'])
Chris@1115 116 end
Chris@1115 117 assert_raise Redmine::PluginRequirementError do
Chris@1115 118 plugin.requires_redmine(:version => '2.2')
Chris@1115 119 end
Chris@1115 120 # Version range
Chris@1115 121 assert plugin.requires_redmine(:version => '2.0.0'..'2.2.4')
Chris@1115 122 assert plugin.requires_redmine(:version => '2.1.3'..'2.2.4')
Chris@1115 123 assert plugin.requires_redmine(:version => '2.0.0'..'2.1.3')
Chris@1115 124 assert plugin.requires_redmine(:version => '2.0'..'2.2')
Chris@1115 125 assert plugin.requires_redmine(:version => '2.1'..'2.2')
Chris@1115 126 assert plugin.requires_redmine(:version => '2.0'..'2.1')
Chris@1115 127 assert_raise Redmine::PluginRequirementError do
Chris@1115 128 plugin.requires_redmine(:version => '2.1.4'..'2.2.4')
Chris@1115 129 end
Chris@1115 130 # Version or higher
Chris@1115 131 assert plugin.requires_redmine(:version_or_higher => '0.1.0')
Chris@1115 132 assert plugin.requires_redmine(:version_or_higher => '2.1.3')
Chris@1115 133 assert plugin.requires_redmine(:version_or_higher => '2.1')
Chris@1115 134 assert_raise Redmine::PluginRequirementError do
Chris@1115 135 plugin.requires_redmine(:version_or_higher => '2.2.0')
Chris@1115 136 end
Chris@1115 137 assert_raise Redmine::PluginRequirementError do
Chris@1115 138 plugin.requires_redmine(:version_or_higher => '2.2')
Chris@0 139 end
Chris@0 140 end
Chris@0 141
Chris@0 142 def test_requires_redmine_plugin
Chris@0 143 test = self
Chris@0 144 other_version = '0.5.0'
Chris@0 145 @klass.register :other do
Chris@0 146 name 'Other'
Chris@0 147 version other_version
Chris@0 148 end
Chris@0 149 @klass.register :foo do
Chris@0 150 test.assert requires_redmine_plugin(:other, :version_or_higher => '0.1.0')
Chris@0 151 test.assert requires_redmine_plugin(:other, :version_or_higher => other_version)
Chris@0 152 test.assert requires_redmine_plugin(:other, other_version)
Chris@0 153 test.assert_raise Redmine::PluginRequirementError do
Chris@0 154 requires_redmine_plugin(:other, :version_or_higher => '99.0.0')
Chris@0 155 end
Chris@0 156 test.assert requires_redmine_plugin(:other, :version => other_version)
Chris@0 157 test.assert requires_redmine_plugin(:other, :version => [other_version, '99.0.0'])
Chris@0 158 test.assert_raise Redmine::PluginRequirementError do
Chris@0 159 requires_redmine_plugin(:other, :version => '99.0.0')
Chris@0 160 end
Chris@0 161 test.assert_raise Redmine::PluginRequirementError do
Chris@0 162 requires_redmine_plugin(:other, :version => ['98.0.0', '99.0.0'])
Chris@0 163 end
Chris@0 164 # Missing plugin
Chris@0 165 test.assert_raise Redmine::PluginNotFound do
Chris@0 166 requires_redmine_plugin(:missing, :version_or_higher => '0.1.0')
Chris@0 167 end
Chris@0 168 test.assert_raise Redmine::PluginNotFound do
Chris@0 169 requires_redmine_plugin(:missing, '0.1.0')
Chris@0 170 end
Chris@0 171 test.assert_raise Redmine::PluginNotFound do
Chris@0 172 requires_redmine_plugin(:missing, :version => '0.1.0')
Chris@0 173 end
Chris@0 174 end
Chris@0 175 end
Chris@0 176 end