Jdlrobson has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/383476 )
Change subject: WIP: Add tests for the fixTemplateData method ...................................................................... WIP: Add tests for the fixTemplateData method The previous patch surfaced an issue in that code. Let's ensure we've captured all possible edge cases here. Change-Id: Ifaf12815f56706a7393544564400803b99bc72eb --- M includes/BookRenderer.php M tests/phpunit/includes/BookRendererTest.php 2 files changed, 46 insertions(+), 5 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Collection refs/changes/76/383476/1 diff --git a/includes/BookRenderer.php b/includes/BookRenderer.php index e5d0d50..ad36066 100644 --- a/includes/BookRenderer.php +++ b/includes/BookRenderer.php @@ -333,14 +333,18 @@ * @param array $data * @return array */ - private function fixTemplateData( $data ) { + public function fixTemplateData( $data ) { $fixedData = []; if ( !is_array( $data ) ) { return $data; } foreach ( $data as $field => $value ) { // treat 0/'0' as truthy - $fixedData[$field . '?'] = !in_array( $value, [ false, [], '' ], true ); + if ( is_array( $value ) ) { + $fixedData[$field . '?'] = !in_array( $value, [ false, [], '' ], true ); + } else if ( is_string( $value ) ) { + $fixedData[$field . '?'] = (bool)$value; + } if ( is_array( $value ) ) { if ( array_keys( $value ) === array_keys( array_values( $value ) ) ) { // consecutive numeric keys - treat as an array diff --git a/tests/phpunit/includes/BookRendererTest.php b/tests/phpunit/includes/BookRendererTest.php index e7d2ad3..a9eb961 100644 --- a/tests/phpunit/includes/BookRendererTest.php +++ b/tests/phpunit/includes/BookRendererTest.php @@ -8,21 +8,58 @@ use Title; class BookRendererTest extends MediaWikiTestCase { + const TEMPLATE_DIR = '/../../../templates'; + /** * @dataProvider provideGetBookTemplateDataOutlineGeneration */ public function testGetBookTemplateDataOutlineGeneration( $collection, $pages, $metadata, $expectedOutline ) { - $templateParser = new TemplateParser( __DIR__ . '/../../../templates' ); + $templateParser = new TemplateParser( __DIR__ . self::TEMPLATE_DIR ); $renderer = new BookRenderer( $templateParser ); $data = $renderer->getBookTemplateData( $collection, $pages, $metadata ); $this->assertArraySame( $renderer->getNestedOutline( $expectedOutline ), $data['toc']['tocitems'], 'Check table of contents generation' ); } + public function testfixTemplateData() { + $templateParser = new TemplateParser( __DIR__ . self::TEMPLATE_DIR ); + $renderer = new BookRenderer( $templateParser ); + $fixedData = $renderer->fixTemplateData( [ + 'a' => false, + 'b' => [], + 'c' => [ + 'd' => [ 'a', 'b', 'c' ], + 'e' => false, + 'f' => [ + 'g' => [ 'a', 'b', 'c' ], + ], + ], + 'd' => 'hello world' + ] ); + $this->assertArraySame( $fixedData, [ + 'a' => false, + 'b?' => false, + 'b' => [], + 'c?' => true, + 'c' => [ + 'd?' => true, + 'd' => [ 'a', 'b', 'c' ], + 'e' => false, + 'f?' => true, + 'f' => [ + 'g?' => true, + 'g' => [ 'a', 'b', 'c' ], + ], + ], + 'd?' => true, + 'd' => 'hello world', + ] ); + } + public function testGetBookTemplateDataImagesGeneration() { - $templateParser = new TemplateParser( __DIR__ . '/../../../templates' ); + $templateParser = new TemplateParser( __DIR__ . self::TEMPLATE_DIR ); $renderer = new BookRenderer( $templateParser ); $collection = [ 'items' => [], 'title' => 'Empty book' ]; $data = $renderer->getBookTemplateData( $collection, [], [] ); @@ -44,7 +81,7 @@ public function testRenderBook( $collection, $pages, $metadata, $expectedHtml ) { - $templateParser = new TemplateParser( __DIR__ . '/../../../templates' ); + $templateParser = new TemplateParser( __DIR__ . self::TEMPLATE_DIR ); $templateParser->enableRecursivePartials( true ); $renderer = new BookRenderer( $templateParser ); $html = $renderer->renderBook( $collection, $pages, $metadata ); -- To view, visit https://gerrit.wikimedia.org/r/383476 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ifaf12815f56706a7393544564400803b99bc72eb Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Collection Gerrit-Branch: master Gerrit-Owner: Jdlrobson <jrob...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits