import os import pytest from nikola.plugins.command.import_wordpress import ( modernize_qtranslate_tags, separate_qtranslate_tagged_langs, ) def legacy_qtranslate_separate(text): """This method helps keeping the legacy tests covering various corner cases, but plugged on the newer methods.""" text_bytes = text.encode("utf-8") modern_bytes = modernize_qtranslate_tags(text_bytes) modern_text = modern_bytes.decode("utf-8") return separate_qtranslate_tagged_langs(modern_text) @pytest.mark.parametrize( "content, french_translation, english_translation", [ pytest.param("[:fr]Voila voila[:en]BLA[:]", "Voila voila", "BLA", id="simple"), pytest.param( "[:fr]Voila voila[:]COMMON[:en]BLA[:]", "Voila voila COMMON", "COMMON BLA", id="pre modern with intermission", ), pytest.param( "Voila voilaCOMMONBLA", "Voila voila COMMON", "COMMON BLA", id="withintermission", ), pytest.param( "Voila voilaCOMMONMOUFBLA", "Voila voila COMMON MOUF", "COMMON BLA", id="with uneven repartition", ), pytest.param( "Voila voilaBLACOMMONMOUF", "Voila voila COMMON MOUF", "BLA COMMON", id="with uneven repartition bis", ), ], ) def test_legacy_split_a_two_language_post( content, french_translation, english_translation ): content_translations = legacy_qtranslate_separate(content) assert french_translation == content_translations["fr"] assert english_translation == content_translations["en"] def test_conserves_qtranslate_less_post(): content = """Si vous préférez savoir à qui vous parlez commencez par visiter l'À propos. Quoiqu'il en soit, commentaires, questions et suggestions sont les bienvenues !""" content_translations = legacy_qtranslate_separate(content) assert 1 == len(content_translations) assert content == content_translations[""] def test_modernize_a_wordpress_export_xml_chunk(test_dir): raw_export_path = os.path.join( test_dir, "data", "wordpress_import", "wordpress_qtranslate_item_raw_export.xml" ) with open(raw_export_path, "rb") as raw_xml_chunk_file: content = raw_xml_chunk_file.read() output = modernize_qtranslate_tags(content) modernized_xml_path = os.path.join( test_dir, "data", "wordpress_import", "wordpress_qtranslate_item_modernized.xml" ) with open(modernized_xml_path, "rb") as modernized_chunk_file: expected = modernized_chunk_file.read() assert expected == output def test_modernize_qtranslate_tags(): content = b"Voila voilaCOMMONMOUFBLA" output = modernize_qtranslate_tags(content) assert b"[:fr]Voila voila[:]COMMON[:fr]MOUF[:][:en]BLA[:]" == output def test_split_a_two_language_post(): content = """Si vous préférez savoir à qui vous parlez commencez par visiter l'À propos. Quoiqu'il en soit, commentaires, questions et suggestions sont les bienvenues ! If you'd like to know who you're talking to, please visit the about page. Comments, questions and suggestions are welcome ! """ content_translations = legacy_qtranslate_separate(content) assert ( content_translations["fr"] == """Si vous préférez savoir à qui vous parlez commencez par visiter l'À propos. Quoiqu'il en soit, commentaires, questions et suggestions sont les bienvenues ! """ ) assert ( content_translations["en"] == """If you'd like to know who you're talking to, please visit the about page. Comments, questions and suggestions are welcome ! """ ) def test_split_a_two_language_post_with_teaser(): content = """Si vous préférez savoir à qui vous parlez commencez par visiter l'À propos. Quoiqu'il en soit, commentaires, questions et suggestions sont les bienvenues ! If you'd like to know who you're talking to, please visit the about page. Comments, questions and suggestions are welcome ! Plus de détails ici ! More details here ! """ content_translations = legacy_qtranslate_separate(content) assert ( content_translations["fr"] == """Si vous préférez savoir à qui vous parlez commencez par visiter l'À propos. Quoiqu'il en soit, commentaires, questions et suggestions sont les bienvenues ! \n\ Plus de détails ici ! """ ) assert ( content_translations["en"] == """If you'd like to know who you're talking to, please visit the about page. Comments, questions and suggestions are welcome ! \n\ More details here ! """ )