]> source.dussan.org Git - redmine.git/commitdiff
Fix NoMethodError when generating a link to a locked user (#12795, #35823).
authorGo MAEDA <maeda@farend.jp>
Tue, 7 Sep 2021 14:59:40 +0000 (14:59 +0000)
committerGo MAEDA <maeda@farend.jp>
Tue, 7 Sep 2021 14:59:40 +0000 (14:59 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@21217 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/helpers/application_helper.rb
app/models/group.rb
test/helpers/application_helper_test.rb

index e3c858db4cfc4280663332fe1ae402396dbcaff7..03fb26d4ca50c28b696ddd93ecf50734ad5c710a 100644 (file)
@@ -60,19 +60,20 @@ module ApplicationHelper
     case principal
     when User
       name = h(principal.name(options[:format]))
+      css_classes = ''
       if principal.active? || (User.current.admin? && principal.logged?)
         url = user_url(principal, :only_path => only_path)
-        css_classes = principal.css_classes
+        css_classes += principal.css_classes
       end
     when Group
       name = h(principal.to_s)
       url = group_url(principal, :only_path => only_path)
-      css_classes = 'group'
+      css_classes = principal.css_classes
     else
       name = h(principal.to_s)
     end
 
-    css_classes += " #{options[:class]}" if options[:class].present?
+    css_classes += " #{options[:class]}" if css_classes && options[:class].present?
     url ? link_to(name, url, :class => css_classes) : name
   end
 
index a1fd356021d4c914f758034b83f62ecf5750a174..a676816ecf61501474a9d2885df4b19345bb7a82 100644 (file)
@@ -73,6 +73,10 @@ class Group < Principal
     !builtin?
   end
 
+  def css_classes
+    'group'
+  end
+
   def user_added(user)
     members.each do |member|
       next if member.project.nil?
index 6caafcb89c1f51b941f81a8e68d826f024b6a61c..108b0dfae5ba5dc5fc1cd77f051178eacb9e0796 100644 (file)
@@ -1701,12 +1701,18 @@ class ApplicationHelperTest < Redmine::HelperTest
     end
   end
 
-  def test_link_to_user_should_link_to_locked_user_if_current_user_is_admin
+  def test_link_to_user_should_link_to_locked_user_only_if_current_user_is_admin
+    user = User.find(5)
+    assert user.locked?
+
     with_current_user User.find(1) do
-      user = User.find(5)
-      assert user.locked?
-      result = link_to("Dave2 Lopper2", "/users/5", :class => "user locked")
-      assert_equal result, link_to_user(user)
+      result = link_to('Dave2 Lopper2', '/users/5', :class => 'user locked assigned_to')
+      assert_equal result, link_to_user(user, :class => 'assigned_to')
+    end
+
+    with_current_user User.find(2) do
+      result = 'Dave2 Lopper2'
+      assert_equal result, link_to_user(user, :class => 'assigned_to')
     end
   end
 
@@ -1722,6 +1728,12 @@ class ApplicationHelperTest < Redmine::HelperTest
     assert_equal result, link_to_principal(group)
   end
 
+  def test_link_to_principal_should_return_string_representation_for_unknown_type_principal
+    unknown_principal = 'foo'
+    result = unknown_principal.to_s
+    assert_equal result, link_to_principal(unknown_principal, :class => 'bar')
+  end
+
   def test_link_to_group_should_return_only_group_name_for_non_admin_users
     User.current = nil
     group = Group.find(10)