0byt3m1n1
Path:
/
data
/
applications
/
aps
/
tikiwiki
/
14.1-0
/
standard
/
htdocs
/
lib
/
test
/
[
Home
]
File: MultilingualLibTest.php
<?php /** * Created by JetBrains PhpStorm. * User: alaindesilets * Date: 2013-09-30 * Time: 2:05 PM * To change this template use File | Settings | File Templates. */ class MultilingualLibTest extends TikiTestCase { public $orig_user; protected function setUp() { global $user, $prefs; $tikilib = TikiLib::lib('tiki'); $multilinguallib = TikiLib::lib('multilingual'); $this->orig_user = $user; $prefs['site_language'] = 'en'; /* Need to set those global vars to be able to create and delete pages */ $_SERVER['HTTP_HOST'] = 'localhost'; $_SERVER['REQUEST_URI'] = 'phpunit'; $user = "user_that_can_edit"; $page_name = "SomePage"; $content = "This page is in English.\n" . "It contains links to ((A Page That Is Already Translated)) and ((A Page That Is NOT Already Translated))."; $lang = 'en'; $tikilib->create_page($page_name, 0, $content, null, '', null, $user, '', $lang); $page_name = "A Page That Is Already Translated"; $content = "This page is already translated."; $lang = 'en'; $tikilib->create_page($page_name, 0, $content, null, '', null, $user, '', $lang); $targ_page = "Une page déjà traduite"; $targ_content = "Cette page est déjà traduite"; $targ_lang = "fr"; $multilinguallib->createTranslationOfPage($page_name, $lang, $targ_page, $targ_lang, $targ_content); $page_name = "A Page That Is NOT Already Translated"; $content = "This page is NOT already translated."; $lang = 'en'; $tikilib->create_page($page_name, 0, $content, null, '', null, $user, '', $lang); } protected function tearDown() { global $tikilib, $user; $tikilib->remove_all_versions("SomePage"); $tikilib->remove_all_versions("A Page That Is Already Translated"); $tikilib->remove_all_versions("Une page déjà traduite"); $tikilib->remove_all_versions("A Page That Is NOT Already Translated"); unset($_SERVER['HTTP_HOST']); unset($_SERVER['REQUEST_URI']); $user = $this->orig_user; } /** * @group multilingual * @dataProvider dataProvider_translateLinksInPageContent */ public function test_translateLinksInPageContent($src_content, $targ_lang, $exp_translated_content, $message) { $multilinguallib = TikiLib::lib('multilingual'); $got_translated_content = $multilinguallib->translateLinksInPageContent($src_content, $targ_lang); $this->assertEquals($exp_translated_content, $got_translated_content, "$message\nLinks were not properly translated in source page content."); } function dataProvider_translateLinksInPageContent() { return array( array("((A Page That Is Already Translated))", "fr", "((Une page déjà traduite))", "Case Description: Link to a page that already has a translation. The link should be ". "be replaced by the link of the translation."), array("((A Page That Is NOT Already Translated))", "fr", "{TranslationOf(orig_page=\"A Page That Is NOT Already Translated\" translation_lang=\"fr\" translation_page=\"\") /}", "Case Description: Link to a page that is NOT already translated. The link should be ". "be replaced by a {TranslationOf} plugin."), array("((A Page That Is Already Translated|click here))", "fr", "((Une page déjà traduite|click here))", "Case Description: Link to a page that already has a translation, but with an anchor text override. ". "The link should be replaced by a link to the translation, but anchor text should remain the same."), ); } /** * @group multilingual * @dataProvider dataProvider_defaultTargetLanguageForNewTranslation */ function test_defaultTargetLanguageForNewTranslation($src_lang, $langs_already_translated, $user_langs, $exp_lang, $message) { $multilinguallib = TikiLib::lib('multilingual'); $got_lang = $multilinguallib->defaultTargetLanguageForNewTranslation($src_lang, $langs_already_translated, $user_langs); $this->assertEquals($got_lang, $exp_lang, $message."\nThe default target language was not as expected."); } function dataProvider_defaultTargetLanguageForNewTranslation() { return array( array('en', array('en', 'es'), array('en', 'fr'), 'fr', "Case Description: There is one language spoken by user, for which there is no translation. Choose that one."), array('en', array('en', 'fr', 'es'), array('en', 'fr'), '', "Case Description: Page has already been translated to all the languages that the user speaks. In that case, we don't know which default to pick.") ); } /** * @group multilingual * @dataProvider dataProvider_partiallyPretranslateContentOfPage */ function test_partiallyPretranslateContentOfPage($source_page, $targ_lang, $exp_pretranslation, $message) { $multilinguallib = TikiLib::lib('multilingual'); $got_pretranslation = $multilinguallib->partiallyPretranslateContentOfPage($source_page, $targ_lang); $this->assertEquals($got_pretranslation, $exp_pretranslation, "$message\nSource page was not properly pretranslated."); } function dataProvider_partiallyPretranslateContentOfPage() { return array( array("SomePage", "fr", "This page is in English.\n". "It contains links to ((Une page déjà traduite)) and {TranslationOf(orig_page=\"A Page That Is NOT Already Translated\" translation_lang=\"fr\" translation_page=\"\") /}.", "Case description: Happy path.") ); } }