summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/SemanticResultFormats/tests/phpunit/Unit/BibTex/BibTexFileExportPrinterTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/SemanticResultFormats/tests/phpunit/Unit/BibTex/BibTexFileExportPrinterTest.php')
-rw-r--r--www/wiki/extensions/SemanticResultFormats/tests/phpunit/Unit/BibTex/BibTexFileExportPrinterTest.php149
1 files changed, 149 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticResultFormats/tests/phpunit/Unit/BibTex/BibTexFileExportPrinterTest.php b/www/wiki/extensions/SemanticResultFormats/tests/phpunit/Unit/BibTex/BibTexFileExportPrinterTest.php
new file mode 100644
index 00000000..86432d11
--- /dev/null
+++ b/www/wiki/extensions/SemanticResultFormats/tests/phpunit/Unit/BibTex/BibTexFileExportPrinterTest.php
@@ -0,0 +1,149 @@
+<?php
+
+namespace SRF\Tests\BibTex;
+
+use PHPUnit\Framework\MockObject\MockObject;
+use SMWInfolink;
+use SMWQueryResult;
+use SRF\BibTex\BibTexFileExportPrinter;
+use SRF\Tests\ResultPrinterReflector;
+
+/**
+ * @covers \SRF\BibTex\BibTexFileExportPrinter
+ * @group semantic-result-formats
+ *
+ * @license GNU GPL v2+
+ * @since 3.1
+ *
+ * @author mwjames
+ */
+class BibTexFileExportPrinterTest extends \PHPUnit_Framework_TestCase {
+
+ public function testCanConstruct() {
+
+ $this->assertInstanceOf(
+ BibTexFileExportPrinter::class,
+ new BibTexFileExportPrinter( 'bibtex' )
+ );
+ }
+
+ /**
+ * @dataProvider filenameProvider
+ */
+ public function testGetFileName( $filename, $searchlabel, $expected ) {
+
+ $parameters = [
+ 'filename' => $filename,
+ 'searchlabel' => $searchlabel
+ ];
+
+ $bibTexPrinter = new BibTexFileExportPrinter( 'bibtex' );
+
+ ( new ResultPrinterReflector() )->addParameters( $bibTexPrinter, $parameters );
+
+ $this->assertEquals(
+ $expected,
+ $bibTexPrinter->getFileName( $this->newQueryResultDummy() )
+ );
+ }
+
+ public function filenameProvider() {
+
+ yield[
+ '',
+ '',
+ 'BibTeX.bib'
+ ];
+
+ yield[
+ '',
+ 'foo bar',
+ 'foo_bar.bib'
+ ];
+
+ yield[
+ 'foo',
+ '',
+ 'foo.bib'
+ ];
+
+ yield[
+ 'foo.bib',
+ '',
+ 'foo.bib'
+ ];
+
+ yield[
+ 'foo bar.bib',
+ '',
+ 'foo_bar.bib'
+ ];
+ }
+
+ /**
+ * @return MockObject|SMWQueryResult
+ */
+ private function newQueryResultDummy() {
+ return $this->getMockBuilder( SMWQueryResult::class )
+ ->disableOriginalConstructor()
+ ->getMock();
+ }
+
+ public function testGetMimeType() {
+
+ $instance = new BibTexFileExportPrinter(
+ 'bibtex'
+ );
+
+ $this->assertEquals(
+ 'text/bibtex',
+ $instance->getMimeType( $this->newQueryResultDummy() )
+ );
+ }
+
+ public function testGetResult_LinkOnNonFileOutput() {
+ $bibTexPrinter = new BibTexFileExportPrinter(
+ 'bibtex'
+ );
+
+ $this->assertEquals(
+ 'foo_link',
+ $bibTexPrinter->getResult(
+ $this->newMockQueryResultWithLink(),
+ [],
+ SMW_OUTPUT_HTML
+ )
+ );
+ }
+
+ private function newMockQueryResultWithLink() {
+ $queryResult = $this->newQueryResultDummy();
+
+ $queryResult->expects( $this->any() )
+ ->method( 'getErrors' )
+ ->will( $this->returnValue( [] ) );
+
+ $queryResult->expects( $this->any() )
+ ->method( 'getCount' )
+ ->will( $this->returnValue( 1 ) );
+
+ $queryResult->expects( $this->once() )
+ ->method( 'getQueryLink' )
+ ->will( $this->returnValue( $this->newInfoLinkStub() ) );
+
+ return $queryResult;
+ }
+
+ private function newInfoLinkStub() {
+ $link = $this->getMockBuilder( SMWInfolink::class )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $link->expects( $this->any() )
+ ->method( 'getText' )
+ ->will( $this->returnValue( 'foo_link' ) );
+
+ return $link;
+ }
+
+}