jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/383412 )
Change subject: Deal with extreme of an empty book ...................................................................... Deal with extreme of an empty book This edge case currently throws an exception. Let's not do that. Bug: T175856 Change-Id: I768a89d213611799a227270c6cb2b512c083e7ef --- M includes/BookRenderer.php M tests/phpunit/includes/BookRendererTest.php 2 files changed, 29 insertions(+), 8 deletions(-) Approvals: Bmansurov: Looks good to me, approved jenkins-bot: Verified diff --git a/includes/BookRenderer.php b/includes/BookRenderer.php index 231868e..2dbb07d 100644 --- a/includes/BookRenderer.php +++ b/includes/BookRenderer.php @@ -41,6 +41,7 @@ $articleCount = count( array_filter( $collection['items'], function ( $item ) { return $item['type'] === 'article'; } ) ); + $hasArticles = $articleCount > 0; $headingCounter = new HeadingCounter(); $bookBodyHtml = ''; @@ -119,19 +120,26 @@ $hasImages = isset( $metadata['images'] ) && $metadata['images']; $hasLicense = isset( $metadata['license'] ) && $metadata['license']; - $outline = array_merge( $outline, - $this->getAdditionalBookChapters( $tocHeadingCounter, $metadataLevel, - $hasImages, $hasLicense ) - ); + if ( $hasArticles ) { + $outline = array_merge( $outline, + $this->getAdditionalBookChapters( $tocHeadingCounter, $metadataLevel, + $hasImages, $hasLicense ) + ); + } $templateData = [ - 'contributors' => [ - 'data' => $metadata['contributors'], - 'level' => $headingCounter->incrementAndGetTopLevel(), - ], 'outline' => $outline, 'html' => $bookBodyHtml, ]; + + if ( $hasArticles ) { + $templateData['contributors'] = [ + 'data' => $metadata['contributors'], + 'level' => $headingCounter->incrementAndGetTopLevel(), + ]; + } else { + $templateData['contributors'] = false; + } if ( $hasImages ) { $templateData['images'] = [ 'data' => $metadata['images'], diff --git a/tests/phpunit/includes/BookRendererTest.php b/tests/phpunit/includes/BookRendererTest.php index c3d9ccc..f2d31f8 100644 --- a/tests/phpunit/includes/BookRendererTest.php +++ b/tests/phpunit/includes/BookRendererTest.php @@ -21,6 +21,19 @@ 'Check table of contents generation' ); } + public function testGetBookTemplateDataImagesGeneration() { + $templateParser = new TemplateParser( __DIR__ . '/../../../templates' ); + $renderer = new BookRenderer( $templateParser ); + $collection = [ 'items' => [], 'title' => 'Empty book' ]; + $data = $renderer->getBookTemplateData( $collection, [], [] ); + $this->assertSame( $data['license'], false, 'Template data for empty book has no license' ); + $this->assertSame( $data['images'], false, 'Template data for empty book has no images' ); + $this->assertSame( $data['contributors'], false, + 'Template data for empty book has no contributors' ); + $this->assertArraySame( $data['outline'], [], + 'Template data for empty book has empty outline' ); + } + /** * @dataProvider provideRenderBook * @param array[] $collection Collection, as returned by CollectionSession::getCollection(). -- To view, visit https://gerrit.wikimedia.org/r/383412 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I768a89d213611799a227270c6cb2b512c083e7ef Gerrit-PatchSet: 4 Gerrit-Project: mediawiki/extensions/Collection Gerrit-Branch: master Gerrit-Owner: Jdlrobson <jrob...@wikimedia.org> Gerrit-Reviewer: Bmansurov <bmansu...@wikimedia.org> Gerrit-Reviewer: C. Scott Ananian <canan...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits