From 3da565f3933682989eaaec5559bb219bca5828ac Mon Sep 17 00:00:00 2001
From: Rachit Agrawal <34854802+rachit3006@users.noreply.github.com>
Date: Fri, 28 Jan 2022 18:41:14 +0530
Subject: [PATCH] Line breaks not saved in descriptions fixed#2394 (#2803)
* Fix line breaks
* modified test to check for line break in description
* added a concern method for sanitize description
---
app/controllers/assignments_controller.rb | 7 ++-----
app/controllers/concerns/sanitize_description.rb | 13 +++++++++++++
app/controllers/projects_controller.rb | 7 ++-----
spec/controllers/assignments_controller_spec.rb | 6 +++---
4 files changed, 20 insertions(+), 13 deletions(-)
create mode 100644 app/controllers/concerns/sanitize_description.rb
diff --git a/app/controllers/assignments_controller.rb b/app/controllers/assignments_controller.rb
index b8d78adb7e..1484770d36 100644
--- a/app/controllers/assignments_controller.rb
+++ b/app/controllers/assignments_controller.rb
@@ -2,6 +2,7 @@
class AssignmentsController < ApplicationController
include ActionView::Helpers::SanitizeHelper
+ include SanitizeDescription
before_action :authenticate_user!
before_action :set_assignment, only: %i[show edit update destroy start reopen close]
@@ -182,10 +183,6 @@ def check_access
end
def sanitize_assignment_description
- @assignment.description = sanitize(
- @assignment.description,
- tags: %w[img p strong em a sup sub del u span h1 h2 h3 h4 hr li ol ul blockquot],
- attributes: %w[style src href alt title target]
- )
+ @assignment.description = sanitize_description(@assignment.description)
end
end
diff --git a/app/controllers/concerns/sanitize_description.rb b/app/controllers/concerns/sanitize_description.rb
new file mode 100644
index 0000000000..4bb06bb276
--- /dev/null
+++ b/app/controllers/concerns/sanitize_description.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module SanitizeDescription
+ extend ActiveSupport::Concern
+
+ def sanitize_description(description)
+ sanitize(
+ description,
+ tags: %w[img p strong em a sup sub del u span h1 h2 h3 h4 hr li ol ul blockquote br],
+ attributes: %w[style src href alt title target]
+ )
+ end
+end
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 4e7a05ae21..40ddfe46d7 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -2,6 +2,7 @@
class ProjectsController < ApplicationController
include ActionView::Helpers::SanitizeHelper
+ include SanitizeDescription
before_action :set_project, only: %i[show edit update destroy create_fork change_stars]
before_action :authenticate_user!, only: %i[edit update destroy create_fork change_stars]
@@ -139,10 +140,6 @@ def sanitize_name
# Sanitize description before passing to view
def sanitize_project_description
- @project.description = sanitize(
- @project.description,
- tags: %w[img p strong em a sup sub del u span h1 h2 h3 h4 hr li ol ul blockquote],
- attributes: %w[style src href alt title target]
- )
+ @project.description = sanitize_description(@project.description)
end
end
diff --git a/spec/controllers/assignments_controller_spec.rb b/spec/controllers/assignments_controller_spec.rb
index 3cdddecd4e..2a8ef5b01e 100644
--- a/spec/controllers/assignments_controller_spec.rb
+++ b/spec/controllers/assignments_controller_spec.rb
@@ -84,17 +84,17 @@
let(:update_params) do
{
assignment: {
- description: "updated description"
+ description: "updated description
with line break"
}
}
end
context "mentor is signed in" do
- it "updates the assignment" do
+ it "updates the assignment and description contains line breaks" do
sign_in @mentor
put group_assignment_path(@group, @assignment), params: update_params
@assignment.reload
- expect(@assignment.description).to eq("updated description")
+ expect(@assignment.description).to eq("updated description
with line break")
end
end