Mailing List Archive

[MediaWiki-commits] [Gerrit] mediawiki...WikibaseQualityConstraints[master]: Add tests for maintenance script
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.werkmeister@wikimedia.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits