Merged r8863 from trunk.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.3-stable@9112 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2012-03-05 12:45:51 +00:00
parent 488926276d
commit 92dde0d75f
3 changed files with 31 additions and 2 deletions

View File

@ -50,7 +50,17 @@ class Member < ActiveRecord::Base
def <=>(member)
a, b = roles.sort.first, member.roles.sort.first
a == b ? (principal <=> member.principal) : (a <=> b)
if a == b
if principal
principal <=> member.principal
else
1
end
elsif a
a <=> b
else
1
end
end
def deletable?

View File

@ -40,7 +40,9 @@ class Principal < ActiveRecord::Base
end
def <=>(principal)
if self.class.name == principal.class.name
if principal.nil?
-1
elsif self.class.name == principal.class.name
self.to_s.downcase <=> principal.to_s.downcase
else
# groups after users

View File

@ -82,6 +82,23 @@ class MemberTest < ActiveSupport::TestCase
assert_raise(ActiveRecord::RecordNotFound) { Member.find(@jsmith.id) }
end
def test_sort_without_roles
a = Member.new(:roles => [Role.first])
b = Member.new
assert_equal -1, a <=> b
assert_equal 1, b <=> a
end
def test_sort_without_principal
role = Role.first
a = Member.new(:roles => [role], :principal => User.first)
b = Member.new(:roles => [role])
assert_equal -1, a <=> b
assert_equal 1, b <=> a
end
context "removing permissions" do
setup do
Watcher.delete_all("user_id = 9")