]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - extensions/LocalisationUpdate/tests/phpunit/UpdaterTest.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / extensions / LocalisationUpdate / tests / phpunit / UpdaterTest.php
diff --git a/extensions/LocalisationUpdate/tests/phpunit/UpdaterTest.php b/extensions/LocalisationUpdate/tests/phpunit/UpdaterTest.php
new file mode 100644 (file)
index 0000000..d315403
--- /dev/null
@@ -0,0 +1,82 @@
+<?php
+/**
+ * @file
+ * @author Niklas Laxström
+ * @license GPL-2.0+
+ */
+
+namespace LocalisationUpdate;
+
+class UpdaterTest extends \PHPUnit_Framework_TestCase {
+       public function testIsDirectory() {
+               $updater = new Updater();
+
+               $this->assertTrue(
+                       $updater->isDirectory( '/IP/extensions/Translate/i18n/*.json' ),
+                       'Extension json files are a file pattern'
+               );
+
+               $this->assertFalse(
+                       $updater->isDirectory( '/IP/extensions/Translate/Translate.i18n.php' ),
+                       'Extension php file is not a pattern'
+               );
+       }
+
+       public function testExpandRemotePath() {
+               $updater = new Updater();
+               $repos = [ 'main' => 'file:///repos/%NAME%/%SOME-VAR%' ];
+
+               $info = [
+                       'repo' => 'main',
+                       'name' => 'product',
+                       'some-var' => 'file',
+               ];
+               $this->assertEquals(
+                       'file:///repos/product/file',
+                       $updater->expandRemotePath( $info, $repos ),
+                       'Variables are expanded correctly'
+               );
+       }
+
+       public function testReadMessages() {
+               $updater = $updater = new Updater();
+
+               $input = [ 'file' => 'Hello World!' ];
+               $output = [ 'en' => [ 'key' => $input['file'] ] ];
+
+               $reader = $this->getMock( 'LocalisationUpdate\Reader' );
+               $reader
+                       ->expects( $this->once() )
+                       ->method( 'parse' )
+                       ->will( $this->returnValue( $output ) );
+
+               $factory = $this->getMock( 'LocalisationUpdate\ReaderFactory' );
+               $factory
+                       ->expects( $this->once() )
+                       ->method( 'getReader' )
+                       ->will( $this->returnValue( $reader ) );
+
+               $observed = $updater->readMessages( $factory, $input );
+               $this->assertEquals( $output, $observed, 'Tries to parse given file' );
+       }
+
+       public function testFindChangedTranslations() {
+               $updater = $updater = new Updater();
+
+               $origin = [
+                       'A' => '1',
+                       'C' => '3',
+                       'D' => '4',
+               ];
+               $remote = [
+                       'A' => '1', // No change key
+                       'B' => '2', // New key
+                       'C' => '33', // Changed key
+                       'D' => '44', // Blacklisted key
+               ];
+               $blacklist = [ 'D' => 0 ];
+               $expected = [ 'B' => '2', 'C' => '33' ];
+               $observed = $updater->findChangedTranslations( $origin, $remote, $blacklist );
+               $this->assertEquals( $expected, $observed, 'Changed and new keys returned' );
+       }
+}