diff --git a/app/services/summernote_cleaner.rb b/app/services/summernote_cleaner.rb new file mode 100644 index 0000000000000000000000000000000000000000..7485edc02c25b494364c099e041501a9df472551 --- /dev/null +++ b/app/services/summernote_cleaner.rb @@ -0,0 +1,11 @@ +class SummernoteCleaner + def self.clean(text) + clean_text = text + unless text.start_with? '<p>' + chunks = clean_text.split '<p>' + chunks[0] = "<p>#{chunks[0]}</p>" + clean_text = chunks.join '<p>' + end + clean_text + end +end diff --git a/test/services/summernote_cleaner_test.rb b/test/services/summernote_cleaner_test.rb index 37fe2bc4af4c533be4c0ac742e80948ffc39ca6a..25b1091d6dac7b5c7251cdf13406d990519666c1 100644 --- a/test/services/summernote_cleaner_test.rb +++ b/test/services/summernote_cleaner_test.rb @@ -2,8 +2,17 @@ require "test_helper" class SummernoteCleanerTest < ActiveSupport::TestCase test "add p around text if missing" do - text = 'Les étudiants doivent s\'acquitter des droits universitaires annuels (170€ pour 2021/2022) ainsi que de la Contribution de la Vie Étudiante et de Campus (92€ pour 2021/2022). Ils doivent également justifier d\'une assurance responsabilité civile.<br>Plus d\'informations dans la rubrique → <a href="https://bordeauxmontaigne-iut.netlify.app/vie-etudiante/scolarite/frais-dinscription">Scolarité</a>' - assert_equal '<p>Les étudiants doivent s\'acquitter des droits universitaires annuels (170€ pour 2021/2022) ainsi que de la Contribution de la Vie Étudiante et de Campus (92€ pour 2021/2022). Ils doivent également justifier d\'une assurance responsabilité civile.<br>Plus d\'informations dans la rubrique → <a href="https://bordeauxmontaigne-iut.netlify.app/vie-etudiante/scolarite/frais-dinscription">Scolarité</a></p>', SummernoteCleaner.clean(text) + text = 'Text<br><a href="#">link</a>' + assert_equal '<p>Text<br><a href="#">link</a></p>', SummernoteCleaner.clean(text) end + test "do nothing if p is there" do + text = '<p>Text</p>' + assert_equal '<p>Text</p>', SummernoteCleaner.clean(text) + end + + test "add p before an existing p" do + text = 'Text<p>Second text</p>' + assert_equal '<p>Text</p><p>Second text</p>', SummernoteCleaner.clean(text) + end end