diff --git a/Gemfile b/Gemfile
index 8ab1358626..ebd8d70b6e 100644
--- a/Gemfile
+++ b/Gemfile
@@ -52,6 +52,7 @@ gem 'warden-basic_auth', '~> 0.2.1'
gem 'rails_autolink', '~> 1.1.6'
gem 'will_paginate', '~> 3.1.0'
gem 'acts_as_list', '~> 0.8.1'
+gem 'acts_as_tree', '~> 2.5.1'
gem 'friendly_id', github: 'norman/friendly_id', ref: 'aff05645' # '~> 5.1.0'
diff --git a/Gemfile.lock b/Gemfile.lock
index 10c6306c3c..9a7dc030b9 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -148,6 +148,8 @@ GEM
tzinfo (~> 1.1)
acts_as_list (0.8.1)
activerecord (>= 3.0)
+ acts_as_tree (2.5.1)
+ activerecord (>= 3.0.0)
addressable (2.4.0)
airbrake (5.1.0)
airbrake-ruby (~> 1.1)
@@ -593,6 +595,7 @@ DEPENDENCIES
activerecord-jdbcpostgresql-adapter
activerecord-session_store (~> 1.0.0)
acts_as_list (~> 0.8.1)
+ acts_as_tree (~> 2.5.1)
airbrake (~> 5.1.0)
autoprefixer-rails
awesome_nested_set (~> 3.1.1)
diff --git a/lib/plugins/acts_as_tree/README b/lib/plugins/acts_as_tree/README
deleted file mode 100644
index a6cc6a904a..0000000000
--- a/lib/plugins/acts_as_tree/README
+++ /dev/null
@@ -1,26 +0,0 @@
-acts_as_tree
-============
-
-Specify this +acts_as+ extension if you want to model a tree structure by providing a parent association and a children
-association. This requires that you have a foreign key column, which by default is called +parent_id+.
-
- class Category < ActiveRecord::Base
- acts_as_tree :order => "name"
- end
-
- Example:
- root
- \_ child1
- \_ subchild1
- \_ subchild2
-
- root = Category.create("name" => "root")
- child1 = root.children.create("name" => "child1")
- subchild1 = child1.children.create("name" => "subchild1")
-
- root.parent # => nil
- child1.parent # => root
- root.children # => [child1]
- root.children.first.children.first # => subchild1
-
-Copyright (c) 2007 David Heinemeier Hansson, released under the MIT license
\ No newline at end of file
diff --git a/lib/plugins/acts_as_tree/Rakefile b/lib/plugins/acts_as_tree/Rakefile
deleted file mode 100644
index c9a77843d6..0000000000
--- a/lib/plugins/acts_as_tree/Rakefile
+++ /dev/null
@@ -1,22 +0,0 @@
-require 'rake'
-require 'rake/testtask'
-require 'rake/rdoctask'
-
-desc 'Default: run unit tests.'
-task default: :test
-
-desc 'Test acts_as_tree plugin.'
-Rake::TestTask.new(:test) do |t|
- t.libs << 'lib'
- t.pattern = 'test/**/*_test.rb'
- t.verbose = true
-end
-
-desc 'Generate documentation for acts_as_tree plugin.'
-Rake::RDocTask.new(:rdoc) do |rdoc|
- rdoc.rdoc_dir = 'rdoc'
- rdoc.title = 'acts_as_tree'
- rdoc.options << '--line-numbers' << '--inline-source'
- rdoc.rdoc_files.include('README')
- rdoc.rdoc_files.include('lib/**/*.rb')
-end
diff --git a/lib/plugins/acts_as_tree/init.rb b/lib/plugins/acts_as_tree/init.rb
deleted file mode 100644
index 47a0363263..0000000000
--- a/lib/plugins/acts_as_tree/init.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-#-- encoding: UTF-8
-ActiveRecord::Base.send :include, ActiveRecord::Acts::Tree
diff --git a/lib/plugins/acts_as_tree/lib/active_record/acts/tree.rb b/lib/plugins/acts_as_tree/lib/active_record/acts/tree.rb
deleted file mode 100644
index fee94c56e8..0000000000
--- a/lib/plugins/acts_as_tree/lib/active_record/acts/tree.rb
+++ /dev/null
@@ -1,114 +0,0 @@
-#-- encoding: UTF-8
-module ActiveRecord
- module Acts
- module Tree
- def self.included(base)
- base.extend(ClassMethods)
- end
-
- # Specify this +acts_as+ extension if you want to model a tree structure by providing a parent association and a children
- # association. This requires that you have a foreign key column, which by default is called +parent_id+.
- #
- # class Category < ActiveRecord::Base
- # acts_as_tree order: "name"
- # end
- #
- # Example:
- # root
- # \_ child1
- # \_ subchild1
- # \_ subchild2
- #
- # root = Category.create("name" => "root")
- # child1 = root.children.create("name" => "child1")
- # subchild1 = child1.children.create("name" => "subchild1")
- #
- # root.parent # => nil
- # child1.parent # => root
- # root.children # => [child1]
- # root.children.first.children.first # => subchild1
- #
- # In addition to the parent and children associations, the following instance methods are added to the class
- # after calling acts_as_tree:
- # * siblings - Returns all the children of the parent, excluding the current node ([subchild2] when called on subchild1)
- # * self_and_siblings - Returns all the children of the parent, including the current node ([subchild1, subchild2] when called on subchild1)
- # * ancestors - Returns all the ancestors of the current node ([child1, root] when called on subchild2)
- # * root - Returns the root of the current node (root when called on subchild2)
- module ClassMethods
- # Configuration options are:
- #
- # * foreign_key - specifies the column name to use for tracking of the tree (default: +parent_id+)
- # * order - makes it possible to sort the children according to this SQL snippet.
- # * counter_cache - keeps a count in a +children_count+ column if set to +true+ (default: +false+).
- def acts_as_tree(options = {})
- configuration = { foreign_key: 'parent_id', dependent: :destroy, order: nil, counter_cache: nil }
- configuration.update(options) if options.is_a?(Hash)
-
- belongs_to :parent, class_name: name, foreign_key: configuration[:foreign_key], counter_cache: configuration[:counter_cache]
- has_many :children, -> {
- order(configuration[:order])
- }, class_name: name, foreign_key: configuration[:foreign_key], dependent: configuration[:dependent]
-
- class_eval <<-EOV
- include ActiveRecord::Acts::Tree::InstanceMethods
-
- def self.roots
- where("#{configuration[:foreign_key]} IS NULL").order(#{configuration[:order].nil? ? 'nil' : %{"#{configuration[:order]}"}})
- end
-
- def self.root
- where("#{configuration[:foreign_key]} IS NULL").order(#{configuration[:order].nil? ? 'nil' : %{"#{configuration[:order]}"}}).first
- end
- EOV
- end
- end
-
- module InstanceMethods
- # Returns list of ancestors, starting from parent until root.
- #
- # subchild1.ancestors # => [child1, root]
- def ancestors
- node = self
- nodes = []
- nodes << node = node.parent while node.parent
- nodes
- end
-
- # Returns list of descendants.
- #
- # root.descendants # => [child1, subchild1, subchild2]
- def descendants
- children + children.map(&:children).flatten
- end
-
- # Returns list of descendants and a reference to the current node.
- #
- # root.self_and_descendants # => [root, child1, subchild1, subchild2]
- def self_and_descendants
- [self] + descendants
- end
-
- # Returns the root node of the tree.
- def root
- node = self
- node = node.parent while node.parent
- node
- end
-
- # Returns all siblings of the current node.
- #
- # subchild1.siblings # => [subchild2]
- def siblings
- self_and_siblings - [self]
- end
-
- # Returns all siblings and a reference to the current node.
- #
- # subchild1.self_and_siblings # => [subchild1, subchild2]
- def self_and_siblings
- parent ? parent.children : self.class.roots
- end
- end
- end
- end
-end
diff --git a/lib/plugins/acts_as_tree/test/abstract_unit.rb b/lib/plugins/acts_as_tree/test/abstract_unit.rb
deleted file mode 100644
index 8aee440ffd..0000000000
--- a/lib/plugins/acts_as_tree/test/abstract_unit.rb
+++ /dev/null
@@ -1 +0,0 @@
-#-- encoding: UTF-8
diff --git a/lib/plugins/acts_as_tree/test/acts_as_tree_test.rb b/lib/plugins/acts_as_tree/test/acts_as_tree_test.rb
deleted file mode 100644
index 3ffb5cd506..0000000000
--- a/lib/plugins/acts_as_tree/test/acts_as_tree_test.rb
+++ /dev/null
@@ -1,217 +0,0 @@
-#-- encoding: UTF-8
-require 'test/unit'
-
-require 'rubygems'
-require 'active_record'
-
-$:.unshift File.dirname(__FILE__) + '/../lib'
-require File.dirname(__FILE__) + '/../init'
-
-class Test::Unit::TestCase
- def assert_queries(num = 1)
- $query_count = 0
- yield
- ensure
- assert_equal num, $query_count, "#{$query_count} instead of #{num} queries were executed."
- end
-
- def assert_no_queries(&block)
- assert_queries(0, &block)
- end
-end
-
-ActiveRecord::Base.establish_connection(adapter: 'sqlite3', dbfile: ':memory:')
-
-# AR keeps printing annoying schema statements
-$stdout = StringIO.new
-
-def setup_db
- ActiveRecord::Base.logger
- ActiveRecord::Schema.define(version: 1) do
- create_table :mixins do |t|
- t.column :type, :string
- t.column :parent_id, :integer
- end
- end
-end
-
-def teardown_db
- ActiveRecord::Base.connection.tables.each do |table|
- ActiveRecord::Base.connection.drop_table(table)
- end
-end
-
-class Mixin < ActiveRecord::Base
-end
-
-class TreeMixin < Mixin
- acts_as_tree foreign_key: 'parent_id', order: 'id'
-end
-
-class TreeMixinWithoutOrder < Mixin
- acts_as_tree foreign_key: 'parent_id'
-end
-
-class RecursivelyCascadedTreeMixin < Mixin
- acts_as_tree foreign_key: 'parent_id'
- has_one :first_child, class_name: 'RecursivelyCascadedTreeMixin', foreign_key: :parent_id
-end
-
-class TreeTest < Test::Unit::TestCase
- def setup
- setup_db
- @root1 = TreeMixin.create!
- @root_child1 = TreeMixin.create! parent_id: @root1.id
- @child1_child = TreeMixin.create! parent_id: @root_child1.id
- @root_child2 = TreeMixin.create! parent_id: @root1.id
- @root2 = TreeMixin.create!
- @root3 = TreeMixin.create!
- end
-
- def teardown
- teardown_db
- end
-
- def test_children
- assert_equal @root1.children, [@root_child1, @root_child2]
- assert_equal @root_child1.children, [@child1_child]
- assert_equal @child1_child.children, []
- assert_equal @root_child2.children, []
- end
-
- def test_parent
- assert_equal @root_child1.parent, @root1
- assert_equal @root_child1.parent, @root_child2.parent
- assert_nil @root1.parent
- end
-
- def test_delete
- assert_equal 6, TreeMixin.count
- @root1.destroy
- assert_equal 2, TreeMixin.count
- @root2.destroy
- @root3.destroy
- assert_equal 0, TreeMixin.count
- end
-
- def test_insert
- @extra = @root1.children.create
-
- assert @extra
-
- assert_equal @extra.parent, @root1
-
- assert_equal 3, @root1.children.size
- assert @root1.children.include?(@extra)
- assert @root1.children.include?(@root_child1)
- assert @root1.children.include?(@root_child2)
- end
-
- def test_ancestors
- assert_equal [], @root1.ancestors
- assert_equal [@root1], @root_child1.ancestors
- assert_equal [@root_child1, @root1], @child1_child.ancestors
- assert_equal [@root1], @root_child2.ancestors
- assert_equal [], @root2.ancestors
- assert_equal [], @root3.ancestors
- end
-
- def test_root
- assert_equal @root1, TreeMixin.root
- assert_equal @root1, @root1.root
- assert_equal @root1, @root_child1.root
- assert_equal @root1, @child1_child.root
- assert_equal @root1, @root_child2.root
- assert_equal @root2, @root2.root
- assert_equal @root3, @root3.root
- end
-
- def test_roots
- assert_equal [@root1, @root2, @root3], TreeMixin.roots
- end
-
- def test_siblings
- assert_equal [@root2, @root3], @root1.siblings
- assert_equal [@root_child2], @root_child1.siblings
- assert_equal [], @child1_child.siblings
- assert_equal [@root_child1], @root_child2.siblings
- assert_equal [@root1, @root3], @root2.siblings
- assert_equal [@root1, @root2], @root3.siblings
- end
-
- def test_self_and_siblings
- assert_equal [@root1, @root2, @root3], @root1.self_and_siblings
- assert_equal [@root_child1, @root_child2], @root_child1.self_and_siblings
- assert_equal [@child1_child], @child1_child.self_and_siblings
- assert_equal [@root_child1, @root_child2], @root_child2.self_and_siblings
- assert_equal [@root1, @root2, @root3], @root2.self_and_siblings
- assert_equal [@root1, @root2, @root3], @root3.self_and_siblings
- end
-end
-
-class TreeTestWithEagerLoading < Test::Unit::TestCase
- def setup
- teardown_db
- setup_db
- @root1 = TreeMixin.create!
- @root_child1 = TreeMixin.create! parent_id: @root1.id
- @child1_child = TreeMixin.create! parent_id: @root_child1.id
- @root_child2 = TreeMixin.create! parent_id: @root1.id
- @root2 = TreeMixin.create!
- @root3 = TreeMixin.create!
-
- @rc1 = RecursivelyCascadedTreeMixin.create!
- @rc2 = RecursivelyCascadedTreeMixin.create! parent_id: @rc1.id
- @rc3 = RecursivelyCascadedTreeMixin.create! parent_id: @rc2.id
- @rc4 = RecursivelyCascadedTreeMixin.create! parent_id: @rc3.id
- end
-
- def teardown
- teardown_db
- end
-
- def test_eager_association_loading
- roots = TreeMixin.includes(:children).where('mixins.parent_id IS NULL').order('mixins.id')
- assert_equal [@root1, @root2, @root3], roots
- assert_no_queries do
- assert_equal 2, roots[0].children.size
- assert_equal 0, roots[1].children.size
- assert_equal 0, roots[2].children.size
- end
- end
-
- def test_eager_association_loading_with_recursive_cascading_three_levels_has_many
- root_node = RecursivelyCascadedTreeMixin.includes({ children: { children: :children } }).order('mixins.id').first
- assert_equal @rc4, assert_no_queries { root_node.children.first.children.first.children.first }
- end
-
- def test_eager_association_loading_with_recursive_cascading_three_levels_has_one
- root_node = RecursivelyCascadedTreeMixin.includes({ first_child: { first_child: :first_child } }).order('mixins.id').first
- assert_equal @rc4, assert_no_queries { root_node.first_child.first_child.first_child }
- end
-
- def test_eager_association_loading_with_recursive_cascading_three_levels_belongs_to
- leaf_node = RecursivelyCascadedTreeMixin.includes({ parent: { parent: :parent } }).order('mixins.id DESC').first
- assert_equal @rc1, assert_no_queries { leaf_node.parent.parent.parent }
- end
-end
-
-class TreeTestWithoutOrder < Test::Unit::TestCase
- def setup
- setup_db
- @root1 = TreeMixinWithoutOrder.create!
- @root2 = TreeMixinWithoutOrder.create!
- end
-
- def teardown
- teardown_db
- end
-
- def test_root
- assert [@root1, @root2].include?(TreeMixinWithoutOrder.root)
- end
-
- def test_roots
- assert_equal [], [@root1, @root2] - TreeMixinWithoutOrder.roots
- end
-end
diff --git a/lib/plugins/acts_as_tree/test/database.yml b/lib/plugins/acts_as_tree/test/database.yml
deleted file mode 100644
index e6f2cacbac..0000000000
--- a/lib/plugins/acts_as_tree/test/database.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-#-- copyright
-# OpenProject is a project management system.
-# Copyright (C) 2012-2015 the OpenProject Foundation (OPF)
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version 3.
-#
-# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
-# Copyright (C) 2006-2013 Jean-Philippe Lang
-# Copyright (C) 2010-2013 the ChiliProject Team
-#
-# 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.
-#
-# See doc/COPYRIGHT.rdoc for more details.
-#++
-
---color
---exclude-pattern spec/legacy/**/*_spec.rb
diff --git a/lib/plugins/acts_as_tree/test/database_BACKUP_87632.yml b/lib/plugins/acts_as_tree/test/database_BACKUP_87632.yml
deleted file mode 100644
index e6f2cacbac..0000000000
--- a/lib/plugins/acts_as_tree/test/database_BACKUP_87632.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-#-- copyright
-# OpenProject is a project management system.
-# Copyright (C) 2012-2015 the OpenProject Foundation (OPF)
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version 3.
-#
-# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
-# Copyright (C) 2006-2013 Jean-Philippe Lang
-# Copyright (C) 2010-2013 the ChiliProject Team
-#
-# 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.
-#
-# See doc/COPYRIGHT.rdoc for more details.
-#++
-
---color
---exclude-pattern spec/legacy/**/*_spec.rb
diff --git a/lib/plugins/acts_as_tree/test/database_BACKUP_88828.yml b/lib/plugins/acts_as_tree/test/database_BACKUP_88828.yml
deleted file mode 100644
index e6f2cacbac..0000000000
--- a/lib/plugins/acts_as_tree/test/database_BACKUP_88828.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-#-- copyright
-# OpenProject is a project management system.
-# Copyright (C) 2012-2015 the OpenProject Foundation (OPF)
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version 3.
-#
-# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
-# Copyright (C) 2006-2013 Jean-Philippe Lang
-# Copyright (C) 2010-2013 the ChiliProject Team
-#
-# 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.
-#
-# See doc/COPYRIGHT.rdoc for more details.
-#++
-
---color
---exclude-pattern spec/legacy/**/*_spec.rb
diff --git a/lib/plugins/acts_as_tree/test/database_BASE_87632.yml b/lib/plugins/acts_as_tree/test/database_BASE_87632.yml
deleted file mode 100644
index e6f2cacbac..0000000000
--- a/lib/plugins/acts_as_tree/test/database_BASE_87632.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-#-- copyright
-# OpenProject is a project management system.
-# Copyright (C) 2012-2015 the OpenProject Foundation (OPF)
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version 3.
-#
-# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
-# Copyright (C) 2006-2013 Jean-Philippe Lang
-# Copyright (C) 2010-2013 the ChiliProject Team
-#
-# 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.
-#
-# See doc/COPYRIGHT.rdoc for more details.
-#++
-
---color
---exclude-pattern spec/legacy/**/*_spec.rb
diff --git a/lib/plugins/acts_as_tree/test/database_BASE_88828.yml b/lib/plugins/acts_as_tree/test/database_BASE_88828.yml
deleted file mode 100644
index e6f2cacbac..0000000000
--- a/lib/plugins/acts_as_tree/test/database_BASE_88828.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-#-- copyright
-# OpenProject is a project management system.
-# Copyright (C) 2012-2015 the OpenProject Foundation (OPF)
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version 3.
-#
-# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
-# Copyright (C) 2006-2013 Jean-Philippe Lang
-# Copyright (C) 2010-2013 the ChiliProject Team
-#
-# 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.
-#
-# See doc/COPYRIGHT.rdoc for more details.
-#++
-
---color
---exclude-pattern spec/legacy/**/*_spec.rb
diff --git a/lib/plugins/acts_as_tree/test/database_LOCAL_87632.yml b/lib/plugins/acts_as_tree/test/database_LOCAL_87632.yml
deleted file mode 100644
index 4b2ca5974d..0000000000
--- a/lib/plugins/acts_as_tree/test/database_LOCAL_87632.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-#-- copyright
-# OpenProject is a project management system.
-# Copyright (C) 2012-2015 the OpenProject Foundation (OPF)
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version 3.
-#
-# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
-# Copyright (C) 2006-2013 Jean-Philippe Lang
-# Copyright (C) 2010-2013 the ChiliProject Team
-#
-# 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.
-#
-# See doc/COPYRIGHT.rdoc for more details.
-#++
-
diff --git a/lib/plugins/acts_as_tree/test/database_LOCAL_88828.yml b/lib/plugins/acts_as_tree/test/database_LOCAL_88828.yml
deleted file mode 100644
index 4b2ca5974d..0000000000
--- a/lib/plugins/acts_as_tree/test/database_LOCAL_88828.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-#-- copyright
-# OpenProject is a project management system.
-# Copyright (C) 2012-2015 the OpenProject Foundation (OPF)
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version 3.
-#
-# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
-# Copyright (C) 2006-2013 Jean-Philippe Lang
-# Copyright (C) 2010-2013 the ChiliProject Team
-#
-# 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.
-#
-# See doc/COPYRIGHT.rdoc for more details.
-#++
-
diff --git a/lib/plugins/acts_as_tree/test/database_REMOTE_87632.yml b/lib/plugins/acts_as_tree/test/database_REMOTE_87632.yml
deleted file mode 100644
index e6f2cacbac..0000000000
--- a/lib/plugins/acts_as_tree/test/database_REMOTE_87632.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-#-- copyright
-# OpenProject is a project management system.
-# Copyright (C) 2012-2015 the OpenProject Foundation (OPF)
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version 3.
-#
-# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
-# Copyright (C) 2006-2013 Jean-Philippe Lang
-# Copyright (C) 2010-2013 the ChiliProject Team
-#
-# 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.
-#
-# See doc/COPYRIGHT.rdoc for more details.
-#++
-
---color
---exclude-pattern spec/legacy/**/*_spec.rb
diff --git a/lib/plugins/acts_as_tree/test/database_REMOTE_88828.yml b/lib/plugins/acts_as_tree/test/database_REMOTE_88828.yml
deleted file mode 100644
index e6f2cacbac..0000000000
--- a/lib/plugins/acts_as_tree/test/database_REMOTE_88828.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-#-- copyright
-# OpenProject is a project management system.
-# Copyright (C) 2012-2015 the OpenProject Foundation (OPF)
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version 3.
-#
-# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
-# Copyright (C) 2006-2013 Jean-Philippe Lang
-# Copyright (C) 2010-2013 the ChiliProject Team
-#
-# 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.
-#
-# See doc/COPYRIGHT.rdoc for more details.
-#++
-
---color
---exclude-pattern spec/legacy/**/*_spec.rb
diff --git a/lib/plugins/acts_as_tree/test/fixtures/mixin.rb b/lib/plugins/acts_as_tree/test/fixtures/mixin.rb
deleted file mode 100644
index 8aee440ffd..0000000000
--- a/lib/plugins/acts_as_tree/test/fixtures/mixin.rb
+++ /dev/null
@@ -1 +0,0 @@
-#-- encoding: UTF-8
diff --git a/lib/plugins/acts_as_tree/test/fixtures/mixins.yml b/lib/plugins/acts_as_tree/test/fixtures/mixins.yml
deleted file mode 100644
index 4b2ca5974d..0000000000
--- a/lib/plugins/acts_as_tree/test/fixtures/mixins.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-#-- copyright
-# OpenProject is a project management system.
-# Copyright (C) 2012-2015 the OpenProject Foundation (OPF)
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License version 3.
-#
-# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
-# Copyright (C) 2006-2013 Jean-Philippe Lang
-# Copyright (C) 2010-2013 the ChiliProject Team
-#
-# 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.
-#
-# See doc/COPYRIGHT.rdoc for more details.
-#++
-
diff --git a/lib/plugins/acts_as_tree/test/schema.rb b/lib/plugins/acts_as_tree/test/schema.rb
deleted file mode 100644
index 8aee440ffd..0000000000
--- a/lib/plugins/acts_as_tree/test/schema.rb
+++ /dev/null
@@ -1 +0,0 @@
-#-- encoding: UTF-8