]> git.openstreetmap.org Git - rails.git/commitdiff
Truncate if necessary and set dir=auto for changeset usernames
authorAnton Khorev <tony29@yandex.ru>
Tue, 3 Dec 2024 07:24:56 +0000 (10:24 +0300)
committerAnton Khorev <tony29@yandex.ru>
Tue, 3 Dec 2024 07:24:56 +0000 (10:24 +0300)
app/helpers/changesets_helper.rb
test/helpers/changesets_helper_test.rb

index 9705221607cddd6a9180b1533d59d61579fcec7f..ae953c5833c59c59e2b135d342f0d2c7aa2f21e5 100644 (file)
@@ -3,7 +3,7 @@ module ChangesetsHelper
     if changeset.user.status == "deleted"
       t("users.no_such_user.deleted")
     elsif changeset.user.data_public?
-      link_to changeset.user.display_name, changeset.user
+      link_to changeset.user.display_name, changeset.user, :class => "mw-100 d-inline-block align-bottom text-truncate text-wrap", :dir => "auto"
     else
       t("browse.anonymous")
     end
index 067c2b071e41711004ba62551a65debf73e12fc0..9f6c112b4bef8c9871a7600a95349116e4832035 100644 (file)
@@ -3,7 +3,10 @@ require "test_helper"
 class ChangesetsHelperTest < ActionView::TestCase
   def test_changeset_user_link
     changeset = create(:changeset)
-    assert_equal %(<a href="/user/#{ERB::Util.u(changeset.user.display_name)}">#{changeset.user.display_name}</a>), changeset_user_link(changeset)
+    changeset_user_link_dom = Rails::Dom::Testing.html_document_fragment.parse changeset_user_link(changeset)
+    assert_dom changeset_user_link_dom, "a:root", :text => changeset.user.display_name do
+      assert_dom "> @href", "/user/#{ERB::Util.u(changeset.user.display_name)}"
+    end
 
     changeset = create(:changeset, :user => create(:user, :data_public => false))
     assert_equal "anonymous", changeset_user_link(changeset)
@@ -16,12 +19,25 @@ class ChangesetsHelperTest < ActionView::TestCase
     changeset = create(:changeset, :created_at => Time.utc(2007, 1, 1, 0, 0, 0), :user => create(:user, :data_public => false))
     # We need to explicitly reset the closed_at to some point in the future, and avoid the before_save callback
     changeset.update_column(:closed_at, Time.now.utc + 1.day) # rubocop:disable Rails/SkipsModelValidations
-
-    assert_match %r{^Created <time title="Mon, 01 Jan 2007 00:00:00 \+0000" datetime="2007-01-01T00:00:00Z">.*</time> by anonymous$}, changeset_details(changeset)
+    changeset_details_dom = Rails::Dom::Testing.html_document_fragment.parse "<div>#{changeset_details(changeset)}</div>"
+    assert_dom changeset_details_dom, ":root", :text => /^Created .* by anonymous$/ do
+      assert_dom "> time", :count => 1 do
+        assert_dom "> @title", "Mon, 01 Jan 2007 00:00:00 +0000"
+        assert_dom "> @datetime", "2007-01-01T00:00:00Z"
+      end
+      assert_dom "> a", :count => 0
+    end
 
     changeset = create(:changeset, :created_at => Time.utc(2007, 1, 1, 0, 0, 0), :closed_at => Time.utc(2007, 1, 2, 0, 0, 0))
-    user_link = %(<a href="/user/#{ERB::Util.u(changeset.user.display_name)}">#{changeset.user.display_name}</a>)
-
-    assert_match %r{^Closed <time title="Created: Mon, 01 Jan 2007 00:00:00 \+0000&#10;Closed: Tue, 02 Jan 2007 00:00:00 \+0000" datetime="2007-01-02T00:00:00Z">.*</time> by #{user_link}$}, changeset_details(changeset)
+    changeset_details_dom = Rails::Dom::Testing.html_document_fragment.parse "<div>#{changeset_details(changeset)}</div>"
+    assert_dom changeset_details_dom, ":root", :text => /^Closed .* by #{changeset.user.display_name}$/ do
+      assert_dom "> time", :count => 1 do
+        assert_dom "> @title", "Created: Mon, 01 Jan 2007 00:00:00 +0000\nClosed: Tue, 02 Jan 2007 00:00:00 +0000"
+        assert_dom "> @datetime", "2007-01-02T00:00:00Z"
+      end
+      assert_dom "> a", :count => 1, :text => changeset.user.display_name do
+        assert_dom "> @href", "/user/#{ERB::Util.u(changeset.user.display_name)}"
+      end
+    end
   end
 end