]> git.openstreetmap.org Git - rails.git/commitdiff
Format report text with kramdown
authorHarry Wood <github@harrywood.co.uk>
Thu, 28 Apr 2022 22:05:36 +0000 (23:05 +0100)
committerHarry Wood <github@harrywood.co.uk>
Fri, 29 Apr 2022 00:31:39 +0000 (01:31 +0100)
Pass the text of reports ('details' field) through the RichText formatter to give us kramdown formatting support.

app/models/report.rb
app/views/issues/_reports.html.erb
test/models/report_test.rb
test/system/issues_test.rb

index 77a96764125bbc8e839d73773a3fbfa50a5d9aa9..1475197fe34b8e87ab99c550f6d8efb3bdd7e245 100644 (file)
@@ -36,4 +36,8 @@ class Report < ApplicationRecord
     else %w[other]
     end
   end
+
+  def details
+    RichText.new("markdown", self[:details])
+  end
 end
index b1b690f8c965ec5d93c5113b03498181e3aba2dc..23b6d556e4023b49879e271b03d44aeb56500a83 100644 (file)
@@ -9,7 +9,7 @@
                                    :user => link_to(report.user.display_name, user_path(report.user)),
                                    :updated_at => l(report.updated_at.to_datetime, :format => :friendly) %>
       </p>
-      <p><%= report.details %></p>
+      <p class="richtext text-break"><%= report.details.to_html %></p>
     </div>
   </div>
   <hr>
index d172ff7db97ace0a81c10b953661ea105913903c..64ccf501d924f09f00f1e1a2c9d218e783e880ef 100644 (file)
@@ -32,4 +32,9 @@ class ReportTest < ActiveSupport::TestCase
     report.category = ""
     assert_not report.valid?
   end
+
+  def test_details
+    report = create(:report)
+    assert_instance_of(RichText::Markdown, report.details)
+  end
 end
index fd5f433fc32911427e5c9649b49b7c72fe052a7a..2a9862ed9625e40a3028804e9563ad56fe702ed0 100644 (file)
@@ -33,11 +33,12 @@ class IssuesTest < ApplicationSystemTestCase
   def test_view_issue_with_report
     sign_in_as(create(:moderator_user))
     issue = create(:issue, :assigned_role => "moderator")
-    issue.reports << create(:report, :details => "test report text")
+    issue.reports << create(:report, :details => "test report text **with kramdown**")
 
     visit issue_path(issue)
     assert_content I18n.t("issues.show.reports", :count => 1)
-    assert_content "test report text"
+    assert_content "test report text with kramdown"
+    assert_selector "strong", :text => "with kramdown"
   end
 
   def test_view_issues_with_no_reported_user