summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Translate/tests/phpunit/TPParseTest.php
blob: d70689b8f373995b2c3927e24dfd832fe46be778 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
/**
 * @author Niklas Laxström
 * @license GPL-2.0-or-later
 * @file
 */

/**
 * @ingroup PageTranslation
 */
class TPParseTest extends MediaWikiTestCase {
	public function testGetTranslationPageText() {
		$title = Title::newFromText( __CLASS__ );
		$page = TranslatablePage::newFromText(
			$title,
			'<translate>Hello <tvar|abc>peter!</></translate>'
		);
		$prefix = $title->getPrefixedDBkey() . '/';
		$parse = $page->getParse();

		$collection = [];
		$expected = 'Hello peter!';

		$actual = $parse->getTranslationPageText( $collection );
		$this->assertEquals(
			$expected,
			$actual,
			'Variable declarations are substituted when no translation'
		);

		foreach ( $parse->sections as $section ) {
			$key = $prefix . $section->id;
			$message = new FatMessage( $key, $section->getText() );
			$message->setTranslation( $section->getText() );
			$collection[$key] = $message;
		}

		$actual = $parse->getTranslationPageText( $collection );
		$this->assertEquals(
			$expected,
			$actual,
			'Variable declarations are substituted in source language'
		);

		foreach ( $parse->sections as $section ) {
			$key = $prefix . $section->id;
			$message = new FatMessage( $key, $section->getText() );
			$message->setTranslation( $section->getTextForTrans() );
			$collection[$key] = $message;
		}
		$actual = $parse->getTranslationPageText( $collection );
		$this->assertEquals(
			$expected,
			$actual,
			'Variable declarations are substituted in translation'
		);
	}
}