jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/392187 )
Change subject: IntroducesIndexContentLookup
......................................................................
IntroducesIndexContentLookup
Change-Id: I8bd3a2494ad78168d4ed569c766eb642794972cb
---
M extension.json
M includes/Context.php
M includes/Pagination/PaginationFactory.php
M includes/Parser/PagesTagParser.php
A includes/index/DatabaseIndexContentLookup.php
A includes/index/IndexContentLookup.php
M includes/index/ProofreadIndexPage.php
M includes/page/PageContentBuilder.php
M includes/page/PageDisplayHandler.php
M tests/phpunit/ContextTest.php
M tests/phpunit/Pagination/PaginationFactoryTest.php
M tests/phpunit/ProofreadPageTestCase.php
A tests/phpunit/index/IndexContentLookupMock.php
M tests/phpunit/index/ProofreadIndexPageTest.php
M tests/phpunit/page/PageContentBuilderTest.php
M tests/phpunit/page/PageDisplayHandlerTest.php
16 files changed, 220 insertions(+), 132 deletions(-)
Approvals:
jenkins-bot: Verified
Tpt: Looks good to me, approved
diff --git a/extension.json b/extension.json
index 1a2eba4..8e2de1e 100644
--- a/extension.json
+++ b/extension.json
@@ -55,6 +55,8 @@
"ProofreadIndexPage": "includes/index/ProofreadIndexPage.php",
"ProofreadPage\\Index\\CustomIndexField":
"includes/index/CustomIndexField.php",
"ProofreadPage\\Index\\CustomIndexFieldsParser":
"includes/index/CustomIndexFieldsParser.php",
+ "ProofreadPage\\Index\\IndexContentLookup":
"includes/index/IndexContentLookup.php",
+ "ProofreadPage\\Index\\DatabaseIndexContentLookup":
"includes/index/DatabaseIndexContentLookup.php",
"ProofreadPage\\Index\\IndexContent":
"includes/index/IndexContent.php",
"ProofreadPage\\Index\\IndexRedirectContent":
"includes/index/IndexRedirectContent.php",
"ProofreadPage\\Index\\IndexContentHandler":
"includes/index/IndexContentHandler.php",
@@ -96,6 +98,7 @@
"ApiQueryProofreadInfo": "ApiQueryProofreadInfo.php",
"ProofreadPage\\FileProviderMock":
"tests/phpunit/FileProviderMock.php",
"ProofreadPage\\Page\\IndexForPageLookupMock":
"tests/phpunit/page/IndexForPageLookupMock.php",
+ "ProofreadPage\\Index\\IndexContentLookupMock":
"tests/phpunit/index/IndexContentLookupMock.php",
"ProofreadPageTestCase":
"tests/phpunit/ProofreadPageTestCase.php",
"FixProofreadPagePagesContentModel":
"maintenance/fixProofreadPagePagesContentModel.php",
"FixProofreadIndexPagesContentModel":
"maintenance/fixProofreadIndexPagesContentModel.php"
diff --git a/includes/Context.php b/includes/Context.php
index 4644bfb..00730f2 100644
--- a/includes/Context.php
+++ b/includes/Context.php
@@ -3,6 +3,8 @@
namespace ProofreadPage;
use ProofreadPage\Index\CustomIndexFieldsParser;
+use ProofreadPage\Index\DatabaseIndexContentLookup;
+use ProofreadPage\Index\IndexContentLookup;
use ProofreadPage\Page\DatabaseIndexForPageLookup;
use ProofreadPage\Page\IndexForPageLookup;
use ProofreadPage\Pagination\PaginationFactory;
@@ -45,21 +47,29 @@
private $indexForPageLookup;
/**
+ * @var IndexContentLookup
+ */
+ private $indexContentLookup;
+
+ /**
* @param int $pageNamespaceId
* @param int $indexNamespaceId
* @param FileProvider $fileProvider
* @param CustomIndexFieldsParser $customIndexFieldsParser
* @param IndexForPageLookup $indexForPageLookup
+ * @param IndexContentLookup $indexContentLookup
*/
public function __construct(
$pageNamespaceId, $indexNamespaceId, FileProvider $fileProvider,
- CustomIndexFieldsParser $customIndexFieldsParser,
IndexForPageLookup $indexForPageLookup
+ CustomIndexFieldsParser $customIndexFieldsParser,
IndexForPageLookup $indexForPageLookup,
+ IndexContentLookup $indexContentLookup
) {
$this->pageNamespaceId = $pageNamespaceId;
$this->indexNamespaceId = $indexNamespaceId;
$this->fileProvider = $fileProvider;
$this->customIndexFieldsParser = $customIndexFieldsParser;
$this->indexForPageLookup = $indexForPageLookup;
+ $this->indexContentLookup = $indexContentLookup;
}
/**
@@ -105,6 +115,13 @@
}
/**
+ * @return IndexContentLookup
+ */
+ public function getIndexContentLookup() {
+ return $this->indexContentLookup;
+ }
+
+ /**
* @param bool $purge
* @return Context
*/
@@ -118,7 +135,8 @@
$defaultContext = new self( $pageNamespaceId,
$indexNamespaceId,
new FileProvider( $repoGroup ),
new CustomIndexFieldsParser(),
- new DatabaseIndexForPageLookup(
$indexNamespaceId, $repoGroup )
+ new DatabaseIndexForPageLookup(
$indexNamespaceId, $repoGroup ),
+ new DatabaseIndexContentLookup()
);
}
diff --git a/includes/Pagination/PaginationFactory.php
b/includes/Pagination/PaginationFactory.php
index 0faee37..18802e4 100644
--- a/includes/Pagination/PaginationFactory.php
+++ b/includes/Pagination/PaginationFactory.php
@@ -52,7 +52,8 @@
}
// check if it is using pagelist
- $pagelist = $indexPage->getContent()->getPagelistTagContent();
+ $indexContent =
$this->context->getIndexContentLookup()->getIndexContent( $indexPage );
+ $pagelist = $indexContent->getPagelistTagContent();
if ( $pagelist !== null && $file && $file->isMultipage() ) {
return new FilePagination(
$indexPage,
@@ -61,7 +62,7 @@
$this->context
);
} else {
- $links = $indexPage->getContent()->getLinksToNamespace(
+ $links = $indexContent->getLinksToNamespace(
Context::getDefaultContext()->getPageNamespaceId()
);
$pages = [];
diff --git a/includes/Parser/PagesTagParser.php
b/includes/Parser/PagesTagParser.php
index e7f5053..cc09615 100644
--- a/includes/Parser/PagesTagParser.php
+++ b/includes/Parser/PagesTagParser.php
@@ -63,7 +63,7 @@
return $this->formatError( 'proofreadpage_nosuch_index'
);
}
$indexPage = ProofreadIndexPage::newFromTitle( $indexTitle );
- $indexContent = $indexPage->getContent();
+ $indexContent =
$this->context->getIndexContentLookup()->getIndexContent( $indexPage );
$pagination = $this->context->getPaginationFactory()
->getPaginationForIndexPage( $indexPage );
$language = $this->parser->getTargetLanguage();
diff --git a/includes/index/DatabaseIndexContentLookup.php
b/includes/index/DatabaseIndexContentLookup.php
new file mode 100644
index 0000000..8598ebf
--- /dev/null
+++ b/includes/index/DatabaseIndexContentLookup.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace ProofreadPage\Index;
+
+use ProofreadIndexPage;
+use Revision;
+
+/**
+ * @licence GNU GPL v2+
+ *
+ * Allows to retrieve the content of the Index: page
+ */
+class DatabaseIndexContentLookup implements IndexContentLookup {
+
+ private $cache = [];
+
+ /**
+ * @see IndexContentLookup::getIndexContent
+ */
+ public function getIndexContent( ProofreadIndexPage $index ) {
+ $cacheKey = $index->getTitle()->getDBkey();
+
+ if ( !array_key_exists( $cacheKey, $this->cache ) ) {
+ $rev = Revision::newFromTitle( $index->getTitle() );
+ if ( $rev === null ) {
+ $this->cache[$cacheKey] = new IndexContent( []
);
+ } else {
+ $content = $rev->getContent();
+ if ( $content instanceof IndexContent ) {
+ $this->cache[$cacheKey] = $content;
+ } else {
+ $this->cache[$cacheKey] = new
IndexContent( [] );
+ }
+ }
+ }
+
+ return $this->cache[$cacheKey];
+ }
+}
diff --git a/includes/index/IndexContentLookup.php
b/includes/index/IndexContentLookup.php
new file mode 100644
index 0000000..2eedca7
--- /dev/null
+++ b/includes/index/IndexContentLookup.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace ProofreadPage\Index;
+
+use ProofreadIndexPage;
+
+/**
+ * @licence GNU GPL v2+
+ *
+ * Allows to retrieve the content of the Index: page
+ */
+interface IndexContentLookup {
+
+ /**
+ * Returns content of the page
+ * @return IndexContent
+ */
+ public function getIndexContent( ProofreadIndexPage $index );
+}
diff --git a/includes/index/ProofreadIndexPage.php
b/includes/index/ProofreadIndexPage.php
index c403b26..aced236 100644
--- a/includes/index/ProofreadIndexPage.php
+++ b/includes/index/ProofreadIndexPage.php
@@ -19,8 +19,6 @@
* @ingroup ProofreadPage
*/
-use ProofreadPage\Index\IndexContent;
-
/**
* An index page
*/
@@ -32,18 +30,10 @@
protected $title;
/**
- * @var IndexContent|null content of the page
- */
- protected $content;
-
- /**
* @param Title $title Reference to a Title object.
- * @param IndexContent|null $content content of the page. Warning: only
done for
- * EditProofreadIndexPage use.
*/
- public function __construct( Title $title, IndexContent $content = null
) {
+ public function __construct( Title $title ) {
$this->title = $title;
- $this->content = $content;
}
/**
@@ -71,39 +61,5 @@
*/
public function equals( ProofreadIndexPage $that ) {
return $this->title->equals( $that->getTitle() );
- }
-
- /**
- * Return content of the page
- * @return IndexContent
- */
- public function getContent() {
- if ( $this->content === null ) {
- $rev = Revision::newFromTitle( $this->title );
- if ( $rev === null ) {
- $this->content = new IndexContent( [] );
- } else {
- $content = $rev->getContent();
- if ( $content instanceof IndexContent ) {
- $this->content = $content;
- } else {
- $this->content = new IndexContent( [] );
- }
- }
- }
- return $this->content;
- }
-
- /**
- * Return mime type of the file linked to the index page
- * @return string|null
- */
- public function getMimeType() {
- if ( preg_match( "/^.*\.(.{2,5})$/", $this->title->getText(),
$m ) ) {
- $mimeMagic = MimeMagic::singleton();
- return $mimeMagic->guessTypesForExtension( $m[1] );
- } else {
- return null;
- }
}
}
diff --git a/includes/page/PageContentBuilder.php
b/includes/page/PageContentBuilder.php
index add144d..21fa621 100644
--- a/includes/page/PageContentBuilder.php
+++ b/includes/page/PageContentBuilder.php
@@ -60,11 +60,12 @@
} // should not happen
$indexFieldsParser =
$this->context->getCustomIndexFieldsParser();
+ $indexContent =
$this->context->getIndexContentLookup()->getIndexContent( $index );
$header =
$indexFieldsParser->parseCustomIndexFieldWithVariablesReplacedWithIndexEntries(
- $index->getContent(), 'header', $params
- );
+ $indexContent, 'header', $params
+ );
$footer =
$indexFieldsParser->parseCustomIndexFieldWithVariablesReplacedWithIndexEntries(
- $index->getContent(), 'footer', $params
+ $indexContent, 'footer', $params
);
} else {
$header = $this->contextSource->msg(
'proofreadpage_default_header' )
diff --git a/includes/page/PageDisplayHandler.php
b/includes/page/PageDisplayHandler.php
index 98252b7..c6502ff 100644
--- a/includes/page/PageDisplayHandler.php
+++ b/includes/page/PageDisplayHandler.php
@@ -43,8 +43,9 @@
$index =
$this->context->getIndexForPageLookup()->getIndexForPage( $page );
if ( $index !== null ) {
try {
+ $indexContent =
$this->context->getIndexContentLookup()->getIndexContent( $index );
$width =
$this->context->getCustomIndexFieldsParser()->parseCustomIndexField(
- $index->getContent(), 'width'
+ $indexContent, 'width'
)->getStringValue();
if ( is_numeric( $width ) ) {
return $width;
@@ -68,8 +69,9 @@
return '';
}
try {
+ $indexContent =
$this->context->getIndexContentLookup()->getIndexContent( $index );
$css =
$this->context->getCustomIndexFieldsParser()->parseCustomIndexField(
- $index->getContent(), 'css'
+ $indexContent, 'css'
);
return Sanitizer::escapeHtmlAllowEntities(
Sanitizer::checkCss( $css->getStringValue() )
diff --git a/tests/phpunit/ContextTest.php b/tests/phpunit/ContextTest.php
index 76ba53d..e750026 100644
--- a/tests/phpunit/ContextTest.php
+++ b/tests/phpunit/ContextTest.php
@@ -3,6 +3,7 @@
namespace ProofreadPage;
use ProofreadPage\Index\CustomIndexFieldsParser;
+use ProofreadPage\Index\IndexContentLookupMock;
use ProofreadPage\Page\IndexForPageLookupMock;
use ProofreadPageTestCase;
@@ -50,7 +51,8 @@
private function buildDummyContext() {
return new Context( 42, 44,
- new FileProviderMock( [] ), new
CustomIndexFieldsParser(), new IndexForPageLookupMock( [] )
+ new FileProviderMock( [] ), new
CustomIndexFieldsParser(), new IndexForPageLookupMock( [] ),
+ new IndexContentLookupMock( [] )
);
}
}
diff --git a/tests/phpunit/Pagination/PaginationFactoryTest.php
b/tests/phpunit/Pagination/PaginationFactoryTest.php
index f3cb7bc..77ff105 100644
--- a/tests/phpunit/Pagination/PaginationFactoryTest.php
+++ b/tests/phpunit/Pagination/PaginationFactoryTest.php
@@ -3,8 +3,10 @@
namespace ProofreadPage\Pagination;
use MediaHandler;
+use ProofreadPage\Index\IndexContent;
use ProofreadPageTestCase;
use Title;
+use WikitextContent;
/**
* @group ProofreadPage
@@ -16,31 +18,31 @@
if ( MediaHandler::getHandler( 'image/vnd.djvu' ) === false ) {
$this->markTestSkipped( 'There is no support for DjVu
files, please enable it.' );
}
- $page = $this->newIndexPage(
- 'LoremIpsum.djvu',
- "{{\n|Pages=<pagelist 1to2=-/> <pagelist 3=1 4to5=roman
/>\n|Author=[[Author:Me]]\n}}"
- );
+ $context = $this->getContext( [], [
+ 'LoremIpsum.djvu' => new IndexContent( [
+ 'Pages' => new WikitextContent( '<pagelist
1to2=-/> <pagelist 3=1 4to5=roman />' ),
+ 'Author' => new WikitextContent(
'[[Author:Me]]' )
+ ] )
+ ] );
$pageList = new PageList( [ '1to2' => '-', '3' => '1', '4to5'
=> 'roman' ] );
$pagination = new FilePagination(
- $page,
+ $this->newIndexPage( 'LoremIpsum.djvu' ),
$pageList,
-
$this->getContext()->getFileProvider()->getFileFromTitle(
+ $context->getFileProvider()->getFileFromTitle(
Title::makeTitle( NS_MEDIA, 'LoremIpsum.djvu' )
),
- $this->getContext()
+ $context
);
$this->assertEquals(
$pagination,
-
$this->getContext()->getPaginationFactory()->getPaginationForIndexPage( $page )
+
$context->getPaginationFactory()->getPaginationForIndexPage(
+ $this->newIndexPage( 'LoremIpsum.djvu' )
+ )
);
}
public function testGetPaginationWithoutPagelist() {
- $index = $this->newIndexPage(
- 'Test',
- "{{\n|Pages=[[Page:Test 1.jpg|TOC]] [[Page:Test
2.tiff|1]] " .
- "[[Page:Test:3.png|2]]\n|Author=[[Author:Me]]\n}}"
- );
+ $index = $this->newIndexPage( 'Test' );
$pagination = new PagePagination(
$index,
[
@@ -56,10 +58,13 @@
);
$this->assertEquals(
$pagination,
- $this->getContext( [
- 'Page:Test_1.jpg' => $index,
- 'Page:Test_2.tiff' => $index,
- 'Page:Test:3.png' => $index,
+ $this->getContext( [], [
+ 'Test' => new IndexContent( [
+ 'Pages' => new WikitextContent(
+ '[[Page:Test 1.jpg|TOC]]
[[Page:Test 2.tiff|1]][[Page:Test:3.png|2]]'
+ ),
+ 'Author' => new WikitextContent(
'[[Author:Me]]' )
+ ] )
] )->getPaginationFactory()->getPaginationForIndexPage(
$index )
);
}
diff --git a/tests/phpunit/ProofreadPageTestCase.php
b/tests/phpunit/ProofreadPageTestCase.php
index 5a42dea..969720d 100644
--- a/tests/phpunit/ProofreadPageTestCase.php
+++ b/tests/phpunit/ProofreadPageTestCase.php
@@ -5,6 +5,7 @@
use ProofreadPage\FileProviderMock;
use ProofreadPage\Index\CustomIndexFieldsParser;
use ProofreadPage\Index\IndexContent;
+use ProofreadPage\Index\IndexContentLookupMock;
use ProofreadPage\Page\IndexForPageLookupMock;
use ProofreadPage\ProofreadPageInit;
@@ -101,15 +102,17 @@
/**
* @param ProofreadIndexPage[] $indexForPage
+ * @param IndexContent[] $indexContent
* @return Context
*/
- protected function getContext( array $indexForPage = [] ) {
+ protected function getContext( array $indexForPage = [], array
$indexContent = [] ) {
return new Context(
ProofreadPageInit::getNamespaceId( 'page' ),
ProofreadPageInit::getNamespaceId( 'index' ),
$this->getFileProvider(),
new CustomIndexFieldsParser(
self::$customIndexFieldsConfiguration ),
- new IndexForPageLookupMock( $indexForPage )
+ new IndexForPageLookupMock( $indexForPage ),
+ new IndexContentLookupMock( $indexContent )
);
}
@@ -128,18 +131,13 @@
/**
* Constructor of a new ProofreadIndexPage
* @param Title|string $title
- * @param string|IndexContent|null $content
* @return ProofreadIndexPage
*/
- protected function newIndexPage( $title = 'test.djvu', $content = null
) {
+ protected function newIndexPage( $title = 'test.djvu' ) {
if ( is_string( $title ) ) {
$title = Title::makeTitle(
$this->getIndexNamespaceId(), $title );
}
- if ( is_string( $content ) ) {
- $content = ContentHandler::getForModelID(
CONTENT_MODEL_PROOFREAD_INDEX )
- ->unserializeContent( $content );
- }
- return new ProofreadIndexPage( $title, $content );
+ return new ProofreadIndexPage( $title );
}
/**
diff --git a/tests/phpunit/index/IndexContentLookupMock.php
b/tests/phpunit/index/IndexContentLookupMock.php
new file mode 100644
index 0000000..23fc291
--- /dev/null
+++ b/tests/phpunit/index/IndexContentLookupMock.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace ProofreadPage\Index;
+
+use ProofreadIndexPage;
+
+/**
+ * @licence GNU GPL v2+
+ */
+class IndexContentLookupMock implements IndexContentLookup {
+
+ private $contentForIndex = [];
+
+ public function __construct( $contentForIndex ) {
+ $this->contentForIndex = $contentForIndex;
+ }
+
+ /**
+ * Returns content of the page
+ * @return IndexContent
+ */
+ public function getIndexContent( ProofreadIndexPage $index ) {
+ if ( !array_key_exists( $index->getTitle()->getDBkey(),
$this->contentForIndex ) ) {
+ return null;
+ }
+ return $this->contentForIndex[ $index->getTitle()->getDBkey() ];
+ }
+}
diff --git a/tests/phpunit/index/ProofreadIndexPageTest.php
b/tests/phpunit/index/ProofreadIndexPageTest.php
index 416170e..ac887c6 100644
--- a/tests/phpunit/index/ProofreadIndexPageTest.php
+++ b/tests/phpunit/index/ProofreadIndexPageTest.php
@@ -21,19 +21,4 @@
$page = ProofreadIndexPage::newFromTitle( $title );
$this->assertEquals( $title, $page->getTitle() );
}
-
- public function mimeTypesProvider() {
- return [
- [ 'image/vnd.djvu', 'Test.djvu' ],
- [ 'application/pdf', 'Test.pdf' ],
- [ null, 'Test' ]
- ];
- }
-
- /**
- * @dataProvider mimeTypesProvider
- */
- public function testGetMimeType( $mime, $name ) {
- $this->assertEquals( $mime, $this->newIndexPage( $name
)->getMimeType() );
- }
}
diff --git a/tests/phpunit/page/PageContentBuilderTest.php
b/tests/phpunit/page/PageContentBuilderTest.php
index a6aa5d1..f335951 100644
--- a/tests/phpunit/page/PageContentBuilderTest.php
+++ b/tests/phpunit/page/PageContentBuilderTest.php
@@ -6,6 +6,7 @@
use MediaHandler;
use ProofreadIndexPage;
use ProofreadPage\FileNotFoundException;
+use ProofreadPage\Index\IndexContent;
use ProofreadPagePage;
use ProofreadPageTestCase;
use RequestContext;
@@ -43,11 +44,16 @@
* @dataProvider buildDefaultContentForPageProvider
*/
public function testBuildDefaultContentForPage(
- ProofreadPagePage $page, ProofreadIndexPage $index = null,
PageContent $defaultContent
+ ProofreadPagePage $page, ProofreadIndexPage $index = null,
+ IndexContent $indexContent = null, PageContent $defaultContent
) {
+ $indexContents = [];
+ if ( $indexContent !== null ) {
+ $indexContents[$index->getTitle()->getDBkey()] =
$indexContent;
+ }
$context = $this->getContext( [
$page->getTitle()->getDBkey() => $index
- ] );
+ ], $indexContents );
try {
$image = $context->getFileProvider()->getForPagePage(
$page );
} catch ( FileNotFoundException $e ) {
@@ -67,28 +73,37 @@
return [
[
$this->newPagePage( 'Test.djvu/1' ),
- $this->newIndexPage( 'Test.djvu',
"{{\n|Title=Test book\n|Header={{{title}}}\n}}" ),
+ $this->newIndexPage( 'Test.djvu' ),
+ new IndexContent( [
+ 'Title' => new WikitextContent( 'Test
book' ),
+ 'Header' => new WikitextContent(
'{{{title}}}' )
+ ] ),
self::newContent( 'Test book', '', '<references
/>', 1 ),
],
[
$this->newPagePage( 'LoremIpsum.djvu/2' ),
null,
+ null,
self::newContent( '', "Lorem ipsum \n2 \n",
'<references/>', 1 ),
],
[
$this->newPagePage( 'LoremIpsum.djvu/2' ),
- $this->newIndexPage( 'LoremIpsum.djvu',
- "{{\n|Title=Test
book\n|Pages=<pagelist/>\n|Header={{{pagenum}}}\n}}"
- ),
+ $this->newIndexPage( 'LoremIpsum.djvu' ),
+ new IndexContent( [
+ 'Title' => new WikitextContent( 'Test
book' ),
+ 'Pages' => new WikitextContent(
'<pagelist/>' ),
+ 'Header' => new WikitextContent(
'{{{pagenum}}}' )
+ ] ),
self::newContent( '2', "Lorem ipsum \n2 \n",
'<references />', 1 ),
],
[
$this->newPagePage( 'LoremIpsum.djvu/2' ),
- $this->newIndexPage(
- 'LoremIpsum.djvu',
- "{{\n|Title=Test book\n|Pages=<pagelist
1to5=roman />\n" .
- "|Header={{{pagenum}}}\n}}"
- ),
+ $this->newIndexPage( 'LoremIpsum.djvu' ),
+ new IndexContent( [
+ 'Title' => new WikitextContent( 'Test
book' ),
+ 'Pages' => new WikitextContent(
'<pagelist 1to5=roman />' ),
+ 'Header' => new WikitextContent(
'{{{pagenum}}}' )
+ ] ),
self::newContent( 'ii', "Lorem ipsum \n2 \n",
'<references />', 1 ),
],
];
diff --git a/tests/phpunit/page/PageDisplayHandlerTest.php
b/tests/phpunit/page/PageDisplayHandlerTest.php
index 71f2804..04e4c20 100644
--- a/tests/phpunit/page/PageDisplayHandlerTest.php
+++ b/tests/phpunit/page/PageDisplayHandlerTest.php
@@ -2,7 +2,9 @@
namespace ProofreadPage\Page;
+use ProofreadPage\Index\IndexContent;
use ProofreadPageTestCase;
+use WikitextContent;
/**
* @group ProofreadPage
@@ -11,51 +13,65 @@
class PageDisplayHandlerTest extends ProofreadPageTestCase {
public function testGetImageWidth() {
- $index = $this->newIndexPage( 'Test', "{{\n|width= 500 \n}}" );
- $page = $this->newPagePage( 'Test.jpg' );
$handler = new PageDisplayHandler( $this->getContext( [
- $page->getTitle()->getDBkey() => $index
+ 'Test.jpg' => $this->newIndexPage( 'Test' )
+ ], [
+ 'Test' => new IndexContent( [ 'width' => new
WikitextContent( '500' ) ] )
] ) );
- $this->assertEquals( 500, $handler->getImageWidth( $page ) );
+ $this->assertEquals( 500, $handler->getImageWidth(
$this->newPagePage( 'Test.jpg' ) ) );
}
public function testGetImageWidthWithDefault() {
- $index = $this->newIndexPage( 'Test', "{{\n|title=500\n}}" );
- $page = $this->newPagePage( 'Test.jpg' );
$handler = new PageDisplayHandler( $this->getContext( [
- $page->getTitle()->getDBkey() => $index
+ 'Test.jpg' => $this->newIndexPage( 'Test' )
+ ], [
+ 'Test' => new IndexContent( [ 'title' => new
WikitextContent( '500' ) ] )
] ) );
- $this->assertEquals( PageDisplayHandler::DEFAULT_IMAGE_WIDTH,
$handler->getImageWidth( $page ) );
+ $this->assertEquals(
+ PageDisplayHandler::DEFAULT_IMAGE_WIDTH,
+ $handler->getImageWidth( $this->newPagePage( 'Test.jpg'
) )
+ );
}
public function testGetCustomCss() {
- $index = $this->newIndexPage( 'Test', "{{\n|CSS= width:300px;
\n}}" );
- $page = $this->newPagePage( 'Test.jpg' );
$handler = new PageDisplayHandler( $this->getContext( [
- $page->getTitle()->getDBkey() => $index
+ 'Test.jpg' => $this->newIndexPage( 'Test' )
+ ], [
+ 'Test' => new IndexContent( [
+ 'CSS' => new WikitextContent( 'width:300px;' )
+ ] )
] ) );
- $this->assertEquals( 'width:300px;', $handler->getCustomCss(
$page ) );
+ $this->assertEquals(
+ 'width:300px;',
+ $handler->getCustomCss( $this->newPagePage( 'Test.jpg'
) )
+ );
}
public function testGetCustomCssWithInsecureInput() {
- $index = $this->newIndexPage(
- 'Test', "{{\n|CSS= background:
url('/my-bad-url.jpg');\n}}"
- );
- $page = $this->newPagePage( 'Test.jpg' );
$handler = new PageDisplayHandler( $this->getContext( [
- $page->getTitle()->getDBkey() => $index
+ 'Test.jpg' => $this->newIndexPage( 'Test' )
+ ], [
+ 'Test' => new IndexContent( [
+ 'CSS' => new WikitextContent( 'background:
url(\'/my-bad-url.jpg\');' )
+ ] )
] ) );
- $this->assertEquals( '/* insecure input */',
$handler->getCustomCss( $page ) );
+ $this->assertEquals(
+ '/* insecure input */',
+ $handler->getCustomCss( $this->newPagePage( 'Test.jpg'
) )
+ );
}
public function testGetCustomCssWithEscaping() {
- $index = $this->newIndexPage(
- 'Test', "{{\n|CSS= width:300px;<style> \n}}"
- );
- $page = $this->newPagePage( 'Test.jpg' );
$handler = new PageDisplayHandler( $this->getContext( [
- $page->getTitle()->getDBkey() => $index
+ 'Test.jpg' => $this->newIndexPage( 'Test' )
+ ], [
+ 'Test' => new IndexContent( [
+ 'CSS' => new WikitextContent(
'width:300px;<style>' )
+ ] )
] ) );
- $this->assertEquals( 'width:300px;<style>',
$handler->getCustomCss( $page ) );
+ $this->assertEquals(
+ 'width:300px;<style>',
+ $handler->getCustomCss( $this->newPagePage( 'Test.jpg'
) )
+ );
}
}
--
To view, visit https://gerrit.wikimedia.org/r/392187
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I8bd3a2494ad78168d4ed569c766eb642794972cb
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/ProofreadPage
Gerrit-Branch: master
Gerrit-Owner: Tpt <[email protected]>
Gerrit-Reviewer: Samwilson <[email protected]>
Gerrit-Reviewer: Tpt <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits