diff --git a/app/services/wordpress.rb b/app/services/wordpress.rb index 019d7a9623712b16936a31844a71a329553b32a3..b30fa53f7992d44f6b35b4d39bdb16ba737f5a98 100644 --- a/app/services/wordpress.rb +++ b/app/services/wordpress.rb @@ -1,15 +1,16 @@ class Wordpress attr_reader :domain - # Test in console with: - # reload! && Communication::Website::Imported::Post.first.save && Communication::Website::Imported::Post.first.post.text - # R&D: - # https://github.com/rails/rails-html-sanitizer - # https://github.com/gjtorikian/html-pipeline - # https://github.com/rgrove/sanitize def self.clean(html) - Sanitize.fragment html, Sanitize::Config::RELAXED - # html + fragment = Sanitize.fragment(html, Sanitize::Config::RELAXED) + fragment = Nokogiri::HTML5.fragment(fragment) + if fragment.css('h1').any? + # h1 => h2 ; h2 => h3 ; ... + (1..5).to_a.reverse.each do |i| + fragment.css("h#{i}").each { |element| element.name = "h#{i+1}" } + end + end + fragment.to_html(preserve_newline: true) end def initialize(domain) diff --git a/db/latest.dump b/db/latest.dump new file mode 100644 index 0000000000000000000000000000000000000000..4ec34907f6068691a93a623085329558046d55d2 Binary files /dev/null and b/db/latest.dump differ diff --git a/lib/tasks/app.rake b/lib/tasks/app.rake index 926c21252b71f25e0e569d79bb84308e57777613..a2c0aebc9801c2bd6552a2fafb3fe21e0b1d4ef9 100644 --- a/lib/tasks/app.rake +++ b/lib/tasks/app.rake @@ -21,6 +21,7 @@ namespace :app do desc 'Get database from Scalingo' task :staging do Bundler.with_unbundled_env do + Figaro.load # Load ENV variables # Get a new backup archive from Scalingo # PG Addon ID from `scalingo addons` CLI command. sh "scalingo --app #{ENV['OSUNY_STAGING_APP_NAME']} backups-create --addon #{ENV['OSUNY_STAGING_PG_ADDON_ID']}" diff --git a/test/models/wordpress_test.rb b/test/models/wordpress_test.rb index d134c97f4f69668db4a516f5e7068a4e3b26709a..bf96dd20a1beab121391d2da7c22a8ec31fe8b70 100644 --- a/test/models/wordpress_test.rb +++ b/test/models/wordpress_test.rb @@ -2,18 +2,37 @@ require "test_helper" class WordpressTest < ActiveSupport::TestCase test "convert apostroph" do - assert_equal Wordpress.clean('Ouverture du CRM pendant les vacances d’Avril'), 'Ouverture du CRM pendant les vacances d’Avril' + assert_equal Wordpress.clean('Ouverture du CRM pendant les vacances d’Avril'), + 'Ouverture du CRM pendant les vacances d’Avril' end test "convert 3 dots" do - assert_equal Wordpress.clean('Le CRM fait le tri dans ses collections … et vous propose une vente de livres'), 'Le CRM fait le tri dans ses collections … et vous propose une vente de livres' + assert_equal Wordpress.clean('Le CRM fait le tri dans ses collections … et vous propose une vente de livres'), + 'Le CRM fait le tri dans ses collections … et vous propose une vente de livres' end test "convert double quotation marks" do - assert_equal Wordpress.clean('Conférence Joëlle Zask : “Ecologie de la participation”'), 'Conférence Joëlle Zask : “Ecologie de la participationâ€' + assert_equal Wordpress.clean('Conférence Joëlle Zask : “Ecologie de la participation”'), + 'Conférence Joëlle Zask : “Ecologie de la participationâ€' + end + + test "convert h1" do + assert_equal Wordpress.clean('<h1>B.U.T. Métiers du multimédia et de l’internet</h1>'), + '<h2>B.U.T. Métiers du multimédia et de l’internet</h2>' + end + + test "convert h2 without h1" do + assert_equal Wordpress.clean('<h2>B.U.T. Métiers du multimédia et de l’internet</h2>'), + '<h2>B.U.T. Métiers du multimédia et de l’internet</h2>' + end + + test "convert h2 with h1" do + assert_equal Wordpress.clean('<h1>Bachelor Universitaire de Technologie</h1><h2>B.U.T. Métiers du multimédia et de l’internet</h2>'), + '<h2>Bachelor Universitaire de Technologie</h2><h3>B.U.T. Métiers du multimédia et de l’internet</h3>' end test "convert " do - assert_equal Wordpress.clean('TRAVAILLER DEMAIN, Débat – le 10 mai à 18h30'), 'TRAVAILLER DEMAIN, Débat – le 10 mai à 18h30' + assert_equal Wordpress.clean('TRAVAILLER DEMAIN, Débat – le 10 mai à 18h30'), + 'TRAVAILLER DEMAIN, Débat – le 10 mai à 18h30' end end