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

Reply via email to