From: Anton Khorev Date: Tue, 11 Mar 2025 10:49:21 +0000 (+0300) Subject: Convert reportable_dates helper into heading helper X-Git-Tag: live~11^2 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/7714224de08af72afd43474ea27cc9ce99da7183?hp=-c Convert reportable_dates helper into heading helper --- 7714224de08af72afd43474ea27cc9ce99da7183 diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb index 64d6dcec5..e972c78ff 100644 --- a/app/helpers/issues_helper.rb +++ b/app/helpers/issues_helper.rb @@ -25,18 +25,20 @@ module IssuesHelper end end - def reportable_dates(reportable) + def reportable_heading(reportable) + heading_params = { :title => link_to(reportable_title(reportable), reportable_url(reportable)) } + heading_params[:datetime_created] = reportable_heading_time(reportable.created_at) + heading_params[:datetime_updated] = reportable_heading_time(reportable.updated_at) unless reportable.is_a? User + case reportable - when DiaryEntry, DiaryComment, Note - created_at_time = tag.time l(reportable.created_at.to_datetime, :format => :friendly), - :datetime => reportable.created_at.xmlschema - updated_at_time = tag.time l(reportable.updated_at.to_datetime, :format => :friendly), - :datetime => reportable.updated_at.xmlschema - t "issues.helper.reportable_dates.created_on_updated_on_html", :datetime_created => created_at_time, :datetime_updated => updated_at_time + when DiaryComment + t "issues.helper.reportable_heading.diary_comment_html", **heading_params + when DiaryEntry + t "issues.helper.reportable_heading.diary_entry_html", **heading_params + when Note + t "issues.helper.reportable_heading.note_html", **heading_params when User - created_at_time = tag.time l(reportable.created_at.to_datetime, :format => :friendly), - :datetime => reportable.created_at.xmlschema - t "issues.helper.reportable_dates.created_on_html", :datetime_created => created_at_time + t "issues.helper.reportable_heading.user_html", **heading_params end end @@ -48,4 +50,10 @@ module IssuesHelper tag.span(count, :class => "badge count-number") end end + + private + + def reportable_heading_time(datetime) + tag.time l(datetime.to_datetime, :format => :friendly), :datetime => datetime.xmlschema + end end diff --git a/app/views/issues/show.html.erb b/app/views/issues/show.html.erb index 27afb1a6f..111f5d0d6 100644 --- a/app/views/issues/show.html.erb +++ b/app/views/issues/show.html.erb @@ -1,10 +1,6 @@ <% content_for :heading do %>

<%= @title %>

-

- <%= @issue.reportable.model_name.human %> : - <%= link_to reportable_title(@issue.reportable), reportable_url(@issue.reportable) %> : - <%= reportable_dates(@issue.reportable) %> -

+

<%= reportable_heading @issue.reportable %>

<%= @issue.assigned_role %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 04968211d..09c2045ff 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1607,9 +1607,11 @@ en: reportable_title: diary_comment: "%{entry_title}, comment #%{comment_id}" note: "Note #%{note_id}" - reportable_dates: - created_on_html: "created on %{datetime_created}" - created_on_updated_on_html: "created on %{datetime_created}, updated on %{datetime_updated}" + reportable_heading: + diary_comment_html: "Diary Comment %{title} created on %{datetime_created}, updated on %{datetime_updated}" + diary_entry_html: "Diary Entry %{title} created on %{datetime_created}, updated on %{datetime_updated}" + note_html: "%{title} created on %{datetime_created}, updated on %{datetime_updated}" + user_html: "User %{title} created on %{datetime_created}" reporters: index: title: "Issue #%{issue_id} Reporters" diff --git a/test/helpers/issues_helper_test.rb b/test/helpers/issues_helper_test.rb index 4ef084f0d..d622c819b 100644 --- a/test/helpers/issues_helper_test.rb +++ b/test/helpers/issues_helper_test.rb @@ -3,22 +3,55 @@ require "test_helper" class IssuesHelperTest < ActionView::TestCase attr_accessor :current_user - def test_reportable_dates_note + def test_reportable_heading_diary_comment + create(:language, :code => "en") + diary_entry = create(:diary_entry, :title => "A Discussion") + diary_comment = create(:diary_comment, :diary_entry => diary_entry, :created_at => "2020-03-15", :updated_at => "2021-05-17") + + heading = reportable_heading diary_comment + + dom_heading = Rails::Dom::Testing.html_document_fragment.parse "

#{heading}

" + assert_dom dom_heading, ":root", "Diary Comment A Discussion, comment ##{diary_comment.id} created on 15 March 2020 at 00:00, updated on 17 May 2021 at 00:00" + assert_dom dom_heading, "a", 1 do + assert_dom "> @href", diary_entry_url(diary_entry.user, diary_entry, :anchor => "comment#{diary_comment.id}") + end + end + + def test_reportable_heading_diary_entry + create(:language, :code => "en") + diary_entry = create(:diary_entry, :title => "Important Subject", :created_at => "2020-03-24", :updated_at => "2021-05-26") + + heading = reportable_heading diary_entry + + dom_heading = Rails::Dom::Testing.html_document_fragment.parse "

#{heading}

" + assert_dom dom_heading, ":root", "Diary Entry Important Subject created on 24 March 2020 at 00:00, updated on 26 May 2021 at 00:00" + assert_dom dom_heading, "a", 1 do + assert_dom "> @href", diary_entry_url(diary_entry.user, diary_entry) + end + end + + def test_reportable_heading_note note = create(:note, :created_at => "2020-03-14", :updated_at => "2021-05-16") - dates = reportable_dates note + heading = reportable_heading note - dom_dates = Rails::Dom::Testing.html_document_fragment.parse "

#{dates}

" - assert_dom dom_dates, ":root", "created on 14 March 2020 at 00:00, updated on 16 May 2021 at 00:00" + dom_heading = Rails::Dom::Testing.html_document_fragment.parse "

#{heading}

" + assert_dom dom_heading, ":root", "Note ##{note.id} created on 14 March 2020 at 00:00, updated on 16 May 2021 at 00:00" + assert_dom dom_heading, "a", 1 do + assert_dom "> @href", note_url(note) + end end - def test_reportable_dates_user - user = create(:user, :created_at => "2020-07-18") + def test_reportable_heading_user + user = create(:user, :display_name => "Someone", :created_at => "2020-07-18") - dates = reportable_dates user + heading = reportable_heading user - dom_dates = Rails::Dom::Testing.html_document_fragment.parse "

#{dates}

" - assert_dom dom_dates, ":root", "created on 18 July 2020 at 00:00" + dom_heading = Rails::Dom::Testing.html_document_fragment.parse "

#{heading}

" + assert_dom dom_heading, ":root", "User Someone created on 18 July 2020 at 00:00" + assert_dom dom_heading, "a", 1 do + assert_dom "> @href", user_url(user) + end end def test_issues_count