Merge "Only try to show character difference if it isn't empty"
[lhc/web/wiklou.git] / tests / phpunit / includes / resourceloader / MessageBlobStoreTest.php
index bf80845..c00432e 100644 (file)
@@ -1,16 +1,20 @@
 <?php
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * @group Cache
  * @covers MessageBlobStore
  */
 class MessageBlobStoreTest extends PHPUnit_Framework_TestCase {
 
+       use MediaWikiCoversValidator;
+
        protected function setUp() {
                parent::setUp();
                // MediaWiki tests defaults $wgMainWANCache to CACHE_NONE.
                // Use hash instead so that caching is observed
-               $this->wanCache = $this->getMockBuilder( 'WANObjectCache' )
+               $this->wanCache = $this->getMockBuilder( WANObjectCache::class )
                        ->setConstructorArgs( [ [
                                'cache' => new HashBagOStuff(),
                                'pool' => 'test',
@@ -28,7 +32,7 @@ class MessageBlobStoreTest extends PHPUnit_Framework_TestCase {
        }
 
        protected function makeBlobStore( $methods = null, $rl = null ) {
-               $blobStore = $this->getMockBuilder( 'MessageBlobStore' )
+               $blobStore = $this->getMockBuilder( MessageBlobStore::class )
                        ->setConstructorArgs( [ $rl ] )
                        ->setMethods( $methods )
                        ->getMock();
@@ -44,6 +48,46 @@ class MessageBlobStoreTest extends PHPUnit_Framework_TestCase {
                return $module;
        }
 
+       /** @covers MessageBlobStore::setLogger */
+       public function testSetLogger() {
+               $blobStore = $this->makeBlobStore();
+               $this->assertSame( null, $blobStore->setLogger( new Psr\Log\NullLogger() ) );
+       }
+
+       /** @covers MessageBlobStore::getResourceLoader */
+       public function testGetResourceLoader() {
+               // Call protected method
+               $blobStore = TestingAccessWrapper::newFromObject( $this->makeBlobStore() );
+               $this->assertInstanceOf(
+                       ResourceLoader::class,
+                       $blobStore->getResourceLoader()
+               );
+       }
+
+       /** @covers MessageBlobStore::fetchMessage */
+       public function testFetchMessage() {
+               $module = $this->makeModule( [ 'mainpage' ] );
+               $rl = new ResourceLoader();
+               $rl->register( $module->getName(), $module );
+
+               $blobStore = $this->makeBlobStore( null, $rl );
+               $blob = $blobStore->getBlob( $module, 'en' );
+
+               $this->assertEquals( '{"mainpage":"Main Page"}', $blob, 'Generated blob' );
+       }
+
+       /** @covers MessageBlobStore::fetchMessage */
+       public function testFetchMessageFail() {
+               $module = $this->makeModule( [ 'i-dont-exist' ] );
+               $rl = new ResourceLoader();
+               $rl->register( $module->getName(), $module );
+
+               $blobStore = $this->makeBlobStore( null, $rl );
+               $blob = $blobStore->getBlob( $module, 'en' );
+
+               $this->assertEquals( '{"i-dont-exist":"\u29fci-dont-exist\u29fd"}', $blob, 'Generated blob' );
+       }
+
        public function testGetBlob() {
                $module = $this->makeModule( [ 'foo' ] );
                $rl = new ResourceLoader();