Lucas Werkmeister (WMDE) has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/406037 )
Change subject: Add tests for maintenance script ...................................................................... Add tests for maintenance script Change-Id: I66b8b4642827134fc9e63e2bb0c3eba54135b3ad Depends-On: I61970403f9c371d3798f34fd48c70bc72f0c7eda --- A tests/phpunit/Maintenance/ImportConstraintStatementsTest.php 1 file changed, 89 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseQualityConstraints refs/changes/37/406037/1 diff --git a/tests/phpunit/Maintenance/ImportConstraintStatementsTest.php b/tests/phpunit/Maintenance/ImportConstraintStatementsTest.php new file mode 100644 index 0000000..e0936fd --- /dev/null +++ b/tests/phpunit/Maintenance/ImportConstraintStatementsTest.php @@ -0,0 +1,89 @@ +<?php + +namespace WikibaseQuality\ConstraintReport\Test\Maintenance; + +use HashConfig; +use MediaWiki\Tests\Maintenance\MaintenanceBaseTestCase; +use Wikibase\Lib\Tests\Store\MockPropertyInfoLookup; +use WikibaseQuality\ConstraintReport\Maintenance\ImportConstraintStatements; +use WikibaseQuality\ConstraintReport\UpdateConstraintsTableJob; + +/** + * @covers \WikibaseQuality\ConstraintReport\Maintenance\ImportConstraintStatements + * + * @author Lucas Werkmeister + * @license GNU GPL v2+ + */ +class ImportConstraintStatementsTest extends MaintenanceBaseTestCase { + + public function getMaintenanceClass() { + return ImportConstraintStatements::class; + } + + public function testConstraintStatementsDisabled() { + $this->maintenance->setConfig( new HashConfig( [ + 'WBQualityConstraintsEnableConstraintsImportFromStatements' => false, + ] ) ); + + $this->maintenance->execute(); + + $this->expectOutputString( 'Constraint statements are not enabled. Aborting.' ); + } + + public function testNoProperties() { + $this->maintenance->propertyInfoLookup = new MockPropertyInfoLookup( [] ); + $this->maintenance->newUpdateConstraintsTableJob = function () { + $this->fail( 'newUpdateConstraintsTableJob should not be called' ); + }; + + $this->maintenance->execute(); + + $this->expectOutputString( '' ); + } + + public function testTwoProperties() { + $this->maintenance->propertyInfoLookup = new MockPropertyInfoLookup( [ + 'P1' => [], + 'P3' => [], + ] ); + $call = 0; + $this->maintenance->newUpdateConstraintsTableJob = function ( $propertyIdSerialization ) use ( &$call ) { + $mock = $this->getMockBuilder( UpdateConstraintsTableJob::class ) + ->disableOriginalConstructor() + ->setMethods( [ 'run' ] ) + ->getMock(); + $mock->expects( $this->once() ) + ->method( 'run' ) + ->with(); + switch ( ++$call ) { + case 1: + $this->assertSame( 'P1', $propertyIdSerialization ); + return $mock; + case 2: + $this->assertSame( 'P3', $propertyIdSerialization ); + return $mock; + default: + $this->fail( 'newUpdateConstraintsTableJob should only be called twice' ); + return $mock; // unreachable but just in case + } + }; + + $this->maintenance->execute(); + + $this->expectOutputRegex( '/^' . + 'Importing constraint statements for +P1... done in +\d+\.\d+ ms.\n' . + 'Importing constraint statements for +P3... done in +\d+\.\d+ ms.\n' . + '$/' ); + $this->assertSame( 2, $call, 'newUpdateConstraintsTableJob should have been called twice' ); + } + + public function testDefaultNewUpdateConstraintsTableJob() { + $job = call_user_func( $this->maintenance->newUpdateConstraintsTableJob, 'P1234' ); + + $this->assertInstanceOf( UpdateConstraintsTableJob::class, $job ); + $params = $job->getParams(); + $this->assertArrayHasKey( 'propertyId', $params ); + $this->assertSame( 'P1234', $params['propertyId'] ); + } + +} -- To view, visit https://gerrit.wikimedia.org/r/406037 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I66b8b4642827134fc9e63e2bb0c3eba54135b3ad Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/WikibaseQualityConstraints Gerrit-Branch: master Gerrit-Owner: Lucas Werkmeister (WMDE) <lucas.werkmeis...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits