From e137a8c45bc756ce788c7b0dbf9ff15b75684dfc Mon Sep 17 00:00:00 2001 From: echarp Date: Thu, 20 Jun 2019 21:59:04 +0200 Subject: [PATCH] Organisation and event description can be empty and won't generate an error --- app/controllers/digests_controller.rb | 4 ++-- app/helpers/events_helper.rb | 14 +++++++++----- test/controllers/orgas_controller_test.rb | 15 +++++++++++++++ test/helpers/events_helper_test.rb | 8 +++++--- 4 files changed, 31 insertions(+), 10 deletions(-) diff --git a/app/controllers/digests_controller.rb b/app/controllers/digests_controller.rb index ddc23551..ae0f0a29 100644 --- a/app/controllers/digests_controller.rb +++ b/app/controllers/digests_controller.rb @@ -10,7 +10,7 @@ class DigestsController < ApplicationController week: (Time.zone.today + 7.days).cweek } end) - before_action :set_week, if: -> { params[:period] } + before_action :set_week, if: -> { params[:period].present? } before_action :set_events, only: [:show] def show @@ -20,7 +20,7 @@ class DigestsController < ApplicationController private def set_week - return unless params[:period][:week].present? + return if params[:period][:week].blank? @week = Date.commercial params[:period][:year].to_i, params[:period][:week].to_i diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb index b4917130..3d7c04b9 100644 --- a/app/helpers/events_helper.rb +++ b/app/helpers/events_helper.rb @@ -57,14 +57,13 @@ module EventsHelper # Using kramdown, let's parse the html and render it as markdown text # No idea why, but also needs to remove extraneous quote encoding :( - def to_markdown(description, line_width = -1) - desc = sanitize description, - tags: %w[p br h1 h2 h3 h4 table tr th td ul ol li a strong - b em i sub sup], - attributes: %w[href] + def to_markdown(desc, line_width = -1) + return '' if desc.blank? + Kramdown::Document.new(spaces(desc), input: :html, line_width: line_width) .to_kramdown .gsub(/^#+\s+(.*)/, '**\1**') + .gsub(/\*\*\*\*/, '**') .gsub(/\\([\"'])/, '\1') # Remove slash before quotes .remove(/[[:blank:]]+$/) # Remove extraneous spaces .remove(/{::}/) # Markdown artefact @@ -74,6 +73,11 @@ module EventsHelper # Cleaner html elements, to correct things like test def spaces(desc) + desc = sanitize desc, + tags: %w[p br h1 h2 h3 h4 table tr th td ul ol li a strong + b em i sub sup], + attributes: %w[href] + desc.gsub(/<(strong|em|b|i)> /, ' <\1>') .gsub(%r{ }, ' ') .gsub(/[[:space:]]([,.])/, '\1') diff --git a/test/controllers/orgas_controller_test.rb b/test/controllers/orgas_controller_test.rb index 10fb154d..6e637769 100644 --- a/test/controllers/orgas_controller_test.rb +++ b/test/controllers/orgas_controller_test.rb @@ -56,6 +56,21 @@ class OrgasControllerTest < ActionDispatch::IntegrationTest assert_redirected_to assigns(:orga) end + test 'should create orga without content' do + assert_difference 'Orga.count' do + post orgas_url, params: { + orga: { + kind_id: @orga.kind_id, + name: @orga.name, + region_id: @orga.region.id, + url: @orga.url + } + } + end + + assert_redirected_to assigns(:orga) + end + test 'should not create orga' do assert_no_difference 'Orga.count' do post orgas_url, params: { diff --git a/test/helpers/events_helper_test.rb b/test/helpers/events_helper_test.rb index 853cf8b6..791ad1e1 100644 --- a/test/helpers/events_helper_test.rb +++ b/test/helpers/events_helper_test.rb @@ -20,13 +20,15 @@ class EventsHelperTest < ActionView::TestCase end test 'HTML titles too strong' do - assert_equal '### Big + assert_equal '**Big** ', to_markdown('

Big

') - assert_equal '### Big again + + assert_equal '**Big again** ', to_markdown('

Big again

') - assert_equal '### **Too** + + assert_equal '**Too** ', to_markdown('

Too

') end