From 92125fa4672fc555561579be9b364e913bb768af Mon Sep 17 00:00:00 2001 From: Marius Balteanu Date: Mon, 11 Dec 2023 10:56:02 +0000 Subject: [PATCH] Refactor integration test for plugins routing (added in r22328) in order to use the new plugins directory path for test environment (#36320). git-svn-id: https://svn.redmine.org/redmine/trunk@22513 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- .../bar_plugin_articles_controller.rb | 5 ++ .../redmine_test_plugin_bar/config/routes.rb | 2 + .../plugins/redmine_test_plugin_bar/init.rb | 10 +++ .../controllers/plugin_articles_controller.rb | 5 ++ .../redmine_test_plugin_foo/config/routes.rb | 1 + .../plugins/redmine_test_plugin_foo/init.rb | 10 +++ test/integration/routing/plugins_test.rb | 73 ------------------- 7 files changed, 33 insertions(+), 73 deletions(-) create mode 100644 test/fixtures/plugins/redmine_test_plugin_bar/app/controllers/bar_plugin_articles_controller.rb create mode 100644 test/fixtures/plugins/redmine_test_plugin_bar/config/routes.rb create mode 100644 test/fixtures/plugins/redmine_test_plugin_bar/init.rb create mode 100644 test/fixtures/plugins/redmine_test_plugin_foo/app/controllers/plugin_articles_controller.rb create mode 100644 test/fixtures/plugins/redmine_test_plugin_foo/config/routes.rb create mode 100644 test/fixtures/plugins/redmine_test_plugin_foo/init.rb diff --git a/test/fixtures/plugins/redmine_test_plugin_bar/app/controllers/bar_plugin_articles_controller.rb b/test/fixtures/plugins/redmine_test_plugin_bar/app/controllers/bar_plugin_articles_controller.rb new file mode 100644 index 000000000..04c72a996 --- /dev/null +++ b/test/fixtures/plugins/redmine_test_plugin_bar/app/controllers/bar_plugin_articles_controller.rb @@ -0,0 +1,5 @@ +class BarPluginArticlesController < ApplicationController + def index + render plain: "bar BarPluginArticlesController#index" + end +end diff --git a/test/fixtures/plugins/redmine_test_plugin_bar/config/routes.rb b/test/fixtures/plugins/redmine_test_plugin_bar/config/routes.rb new file mode 100644 index 000000000..a9200d136 --- /dev/null +++ b/test/fixtures/plugins/redmine_test_plugin_bar/config/routes.rb @@ -0,0 +1,2 @@ +# same path helper name with foo's +get '/bar_plugin_articles', as: :plugin_articles, to: 'bar_plugin_articles#index' diff --git a/test/fixtures/plugins/redmine_test_plugin_bar/init.rb b/test/fixtures/plugins/redmine_test_plugin_bar/init.rb new file mode 100644 index 000000000..5b1293ee4 --- /dev/null +++ b/test/fixtures/plugins/redmine_test_plugin_bar/init.rb @@ -0,0 +1,10 @@ +Redmine::Plugin.register :redmine_test_plugin_bar do + name 'Test plugin redmine_test_plugin_bar' + author 'Author name' + description 'This is a plugin for Redmine test' + version '0.0.1' +end + +Pathname(__dir__).glob("app/**/*.rb").sort.each do |path| + require path +end diff --git a/test/fixtures/plugins/redmine_test_plugin_foo/app/controllers/plugin_articles_controller.rb b/test/fixtures/plugins/redmine_test_plugin_foo/app/controllers/plugin_articles_controller.rb new file mode 100644 index 000000000..1ecdcb837 --- /dev/null +++ b/test/fixtures/plugins/redmine_test_plugin_foo/app/controllers/plugin_articles_controller.rb @@ -0,0 +1,5 @@ +class PluginArticlesController < ApplicationController + def index + render plain: "foo PluginArticlesController#index" + end +end diff --git a/test/fixtures/plugins/redmine_test_plugin_foo/config/routes.rb b/test/fixtures/plugins/redmine_test_plugin_foo/config/routes.rb new file mode 100644 index 000000000..ac7259a24 --- /dev/null +++ b/test/fixtures/plugins/redmine_test_plugin_foo/config/routes.rb @@ -0,0 +1 @@ +resources :plugin_articles, only: %i[index] diff --git a/test/fixtures/plugins/redmine_test_plugin_foo/init.rb b/test/fixtures/plugins/redmine_test_plugin_foo/init.rb new file mode 100644 index 000000000..bdbff5d95 --- /dev/null +++ b/test/fixtures/plugins/redmine_test_plugin_foo/init.rb @@ -0,0 +1,10 @@ +Redmine::Plugin.register :redmine_test_plugin_foo do + name 'Test plugin redmine_test_plugin_foo' + author 'Author name' + description 'This is a plugin for Redmine test' + version '0.0.1' +end + +Pathname(__dir__).glob("app/**/*.rb").sort.each do |path| + require path +end diff --git a/test/integration/routing/plugins_test.rb b/test/integration/routing/plugins_test.rb index 155dd7af4..53b10cd0a 100644 --- a/test/integration/routing/plugins_test.rb +++ b/test/integration/routing/plugins_test.rb @@ -20,82 +20,9 @@ require File.expand_path('../../test_helper', __dir__) class RoutingPluginsTest < Redmine::RoutingTest - setup do - @tmp_plugins_path = Rails.root.join('tmp/test/plugins') - - @setup_plugin_paths = [] - @setup_plugin_paths << setup_plugin( - :redmine_test_plugin_foo, - "config/routes.rb" => <<~ROUTES_CONTENT, - resources :plugin_articles, only: %i[index] - ROUTES_CONTENT - "app/controllers/plugin_articles_controller.rb" => <<~CONTROLLER_CONTENT - class PluginArticlesController < ApplicationController - def index - render plain: "foo PluginArticlesController#index" - end - end - CONTROLLER_CONTENT - ) - @setup_plugin_paths << setup_plugin( - :redmine_test_plugin_bar, - "config/routes.rb" => <<~ROUTES_CONTENT, - # same path helper name with foo's - get '/bar_plugin_articles', as: :plugin_articles, to: 'bar_plugin_articles#index' - ROUTES_CONTENT - "app/controllers/bar_plugin_articles_controller.rb" => <<~CONTROLLER_CONTENT - class BarPluginArticlesController < ApplicationController - def index - render plain: "bar BarPluginArticlesController#index" - end - end - CONTROLLER_CONTENT - ) - - # Change plugin loader's directory for testing - Redmine::PluginLoader.directory = @tmp_plugins_path - Redmine::PluginLoader.load - Redmine::PluginLoader.directories.each(&:run_initializer) # to define relative controllers - RedmineApp::Application.instance.routes_reloader.reload! - end - - teardown do - FileUtils.rm_rf @tmp_plugins_path - Redmine::PluginLoader.load - RedmineApp::Application.instance.routes_reloader.reload! - end - def test_plugins should_route 'GET /plugin_articles' => 'plugin_articles#index' should_route 'GET /bar_plugin_articles' => 'bar_plugin_articles#index' assert_equal("/bar_plugin_articles", plugin_articles_path) end - - private - - def setup_plugin(plugin_name, **relative_path_to_content) - Redmine::Plugin.directory = @tmp_plugins_path - plugin_path = Redmine::Plugin.directory / plugin_name.to_s - plugin_path.mkpath - (plugin_path / "init.rb").write(<<~INITRB) - Redmine::Plugin.register :#{plugin_name} do - name 'Test plugin #{plugin_name}' - author 'Author name' - description 'This is a plugin for Redmine test' - version '0.0.1' - end - - Pathname(__dir__).glob("app/**/*.rb").sort.each do |path| - require path - end - INITRB - - relative_path_to_content.each do |relative_path, content| - path = plugin_path / relative_path - path.parent.mkpath - path.write(content) - end - - return plugin_path - end end