wiki.techinc.nl/tests/phpunit/includes/specials/ImageListPagerTest.php
James D. Forrester 4bae64d1c7 Namespace includes/context
Bug: T353458
Change-Id: I4dbef138fd0110c14c70214282519189d70c94fb
2024-02-08 11:07:01 -05:00

131 lines
4 KiB
PHP

<?php
use MediaWiki\Context\RequestContext;
use MediaWiki\Pager\ImageListPager;
/**
* Test class for ImageListPagerTest class.
*
* Copyright © 2013, Antoine Musso
* Copyright © 2013, Siebrand Mazeland
* Copyright © 2013, Wikimedia Foundation Inc.
*
* @group Database
*/
class ImageListPagerTest extends MediaWikiIntegrationTestCase {
/**
* @covers \MediaWiki\Pager\ImageListPager::formatValue
*/
public function testFormatValuesThrowException() {
$services = $this->getServiceContainer();
$page = new ImageListPager(
RequestContext::getMain(),
$services->getCommentStore(),
$services->getLinkRenderer(),
$services->getConnectionProvider(),
$services->getRepoGroup(),
$services->getUserCache(),
$services->getUserNameUtils(),
$services->getCommentFormatter(),
null,
'',
false,
false
);
$this->expectException( UnexpectedValueException::class );
$this->expectExceptionMessage( "invalid_field" );
$page->formatValue( 'invalid_field', 'invalid_value' );
}
/**
* @covers \MediaWiki\Pager\ImageListPager::formatValue
*/
public function testFormatValues_img_timestamp() {
$services = $this->getServiceContainer();
$this->setUserLang( 'en' );
$page = new ImageListPager(
RequestContext::getMain(),
$services->getCommentStore(),
$services->getLinkRenderer(),
$services->getConnectionProvider(),
$services->getRepoGroup(),
$services->getUserCache(),
$services->getUserNameUtils(),
$services->getCommentFormatter(),
null,
'',
false,
false
);
$this->assertEquals( '12:34, 15 January 2001', $page->formatValue( 'img_timestamp', '20010115123456' ) );
}
/**
* @covers \MediaWiki\Pager\ImageListPager::formatValue
*/
public function testFormatValues_img_size() {
$services = $this->getServiceContainer();
$this->setUserLang( 'en' );
$page = new ImageListPager(
RequestContext::getMain(),
$services->getCommentStore(),
$services->getLinkRenderer(),
$services->getConnectionProvider(),
$services->getRepoGroup(),
$services->getUserCache(),
$services->getUserNameUtils(),
$services->getCommentFormatter(),
null,
'',
false,
false
);
// For very small values we specify exactly
$this->assertEquals( '10 bytes', $page->formatValue( 'img_size', '10' ) );
$this->assertEquals( '16 bytes', $page->formatValue( 'img_size', '16' ) );
// Above 999 but below 1024 we report bytes with thousands separator
$this->assertEquals( '1,000 bytes', $page->formatValue( 'img_size', '1000' ) );
$this->assertEquals( '1,023 bytes', $page->formatValue( 'img_size', '1023' ) );
// For kilobytes we round to the nearest
$this->assertEquals( '1 KB', $page->formatValue( 'img_size', '1100' ) );
$this->assertEquals( '2 KB', $page->formatValue( 'img_size', '1600' ) );
// For megabytes and above we specify up to 2 decimal places if appropriate
$this->assertEquals( '1 MB', $page->formatValue( 'img_size', '1048576' ) );
$this->assertEquals( '1.05 MB', $page->formatValue( 'img_size', '1100000' ) );
$this->assertEquals( '1.53 MB', $page->formatValue( 'img_size', '1600000' ) );
$this->assertEquals( '1 GB', $page->formatValue( 'img_size', '1073741824' ) );
$this->assertEquals( '1.02 GB', $page->formatValue( 'img_size', '1100000000' ) );
$this->assertEquals( '1.49 GB', $page->formatValue( 'img_size', '1600000000' ) );
}
/**
* @covers \MediaWiki\Pager\ImageListPager::formatValue
*/
public function testFormatValues_count() {
$services = $this->getServiceContainer();
$page = new ImageListPager(
RequestContext::getMain(),
$services->getCommentStore(),
$services->getLinkRenderer(),
$services->getConnectionProvider(),
$services->getRepoGroup(),
$services->getUserCache(),
$services->getUserNameUtils(),
$services->getCommentFormatter(),
null,
'',
false,
false
);
// Values are 0-indexed but humans count from 1.
$this->assertSame( '1', $page->formatValue( 'count', '0' ) );
$this->assertSame( '2', $page->formatValue( 'count', '1' ) );
$this->assertSame( '3', $page->formatValue( 'count', '2' ) );
}
}