summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarius Balteanu <marius.balteanu@zitec.com>2022-02-28 21:16:08 +0000
committerMarius Balteanu <marius.balteanu@zitec.com>2022-02-28 21:16:08 +0000
commit4cb518049f1e15919bab916a0f101808ec549ea9 (patch)
tree413e9076c5239681e5e4ad43547ed2c90420db4e
parentcf016c54171455832e08257631f373aa4fb9e29b (diff)
downloadredmine-4cb518049f1e15919bab916a0f101808ec549ea9.tar.gz
redmine-4cb518049f1e15919bab916a0f101808ec549ea9.zip
Add habtm relation between roles and queries_roles (#36416).
git-svn-id: http://svn.redmine.org/redmine/trunk@21444 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/models/role.rb2
-rw-r--r--test/unit/role_test.rb13
2 files changed, 15 insertions, 0 deletions
diff --git a/app/models/role.rb b/app/models/role.rb
index 8a984bbba..790d09f27 100644
--- a/app/models/role.rb
+++ b/app/models/role.rb
@@ -68,6 +68,8 @@ class Role < ActiveRecord::Base
:join_table => "#{table_name_prefix}roles_managed_roles#{table_name_suffix}",
:association_foreign_key => "managed_role_id"
+ has_and_belongs_to_many :queries, :join_table => "#{table_name_prefix}queries_roles#{table_name_suffix}", :foreign_key => "role_id"
+
has_many :member_roles, :dependent => :destroy
has_many :members, :through => :member_roles
acts_as_positioned :scope => :builtin
diff --git a/test/unit/role_test.rb b/test/unit/role_test.rb
index 78d957821..8a1eb76d3 100644
--- a/test/unit/role_test.rb
+++ b/test/unit/role_test.rb
@@ -152,4 +152,17 @@ class RoleTest < ActiveSupport::TestCase
assert_equal Role::BUILTIN_NON_MEMBER, role.builtin
end
end
+
+ def test_destroy
+ role = Role.generate!
+
+ # generate some dependent objects
+ query = IssueQuery.generate!(:project => @ecookbook, :visibility => Query::VISIBILITY_ROLES, :roles => Role.where(:id => [1, 3, role.id]).to_a)
+
+ role.destroy
+
+ # make sure some related data was removed
+ assert_nil ActiveRecord::Base.connection.select_value("SELECT 1 FROM queries_roles WHERE role_id = #{role.id}")
+ assert [1, 3], query.roles
+ end
end