jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/359192 )
Change subject: Update QualifiersCheckerTest to use statement parameters
......................................................................
Update QualifiersCheckerTest to use statement parameters
The ConstraintParameters trait gains a method to construct a
'properties' parameter from a list of property ID serializations. The
three “old” tests for QualifiersChecker are updated to use that method
for their parameter, and also refactored to follow the
Arrange-Act-Assert pattern. The separate test method
testQualifiersConstraintWithStatement is removed, since it is now
identical to testQualifiersConstraint.
Change-Id: I3f7cc80153e43bfd4635203cf56b11c7c0b8959e
---
M tests/phpunit/Checker/QualifierChecker/QualifiersCheckerTest.php
M tests/phpunit/ConstraintParameters.php
2 files changed, 59 insertions(+), 30 deletions(-)
Approvals:
Jonas Kress (WMDE): Looks good to me, approved
jenkins-bot: Verified
diff --git a/tests/phpunit/Checker/QualifierChecker/QualifiersCheckerTest.php
b/tests/phpunit/Checker/QualifierChecker/QualifiersCheckerTest.php
index 14505d4..53eb4a0 100644
--- a/tests/phpunit/Checker/QualifierChecker/QualifiersCheckerTest.php
+++ b/tests/phpunit/Checker/QualifierChecker/QualifiersCheckerTest.php
@@ -32,7 +32,7 @@
use ConstraintParameters, ResultAssertions;
/**
- * @var string
+ * @var string[]
*/
private $qualifiersList;
@@ -41,10 +41,16 @@
*/
private $lookup;
+ /**
+ * @var QualifiersChecker
+ */
+ private $checker;
+
protected function setUp() {
parent::setUp();
- $this->qualifiersList = 'P580,P582,P1365,P1366,P642,P805';
+ $this->qualifiersList = [ 'P580', 'P582', 'P1365', 'P1366',
'P642', 'P805' ];
$this->lookup = new JsonFileEntityLookup( __DIR__ );
+ $this->checker = new QualifiersChecker(
$this->getConstraintParameterParser(), $this->getConstraintParameterRenderer()
);
}
/**
@@ -60,47 +66,32 @@
public function testQualifiersConstraint() {
/** @var Item $entity */
$entity = $this->lookup->getEntity( new ItemId( 'Q2' ) );
- $qualifiersChecker = new QualifiersChecker(
$this->getConstraintParameterParser(), $this->getConstraintParameterRenderer()
);
- $checkResult = $qualifiersChecker->checkConstraint(
$this->getFirstStatement( $entity ), $this->getConstraintMock( [ 'property' =>
$this->qualifiersList ] ), $entity );
+ $statement = $this->getFirstStatement( $entity );
+ $constraint = $this->getConstraintMock(
$this->propertiesParameter( $this->qualifiersList ) );
+
+ $checkResult = $this->checker->checkConstraint( $statement,
$constraint, $entity );
+
$this->assertCompliance( $checkResult );
}
public function testQualifiersConstraintTooManyQualifiers() {
/** @var Item $entity */
$entity = $this->lookup->getEntity( new ItemId( 'Q3' ) );
- $qualifiersChecker = new QualifiersChecker(
$this->getConstraintParameterParser(), $this->getConstraintParameterRenderer()
);
- $checkResult = $qualifiersChecker->checkConstraint(
$this->getFirstStatement( $entity ), $this->getConstraintMock( [ 'property' =>
$this->qualifiersList ] ), $entity );
+ $statement = $this->getFirstStatement( $entity );
+ $constraint = $this->getConstraintMock(
$this->propertiesParameter( $this->qualifiersList ) );
+
+ $checkResult = $this->checker->checkConstraint( $statement,
$constraint, $entity );
+
$this->assertViolation( $checkResult,
'wbqc-violation-message-qualifiers' );
}
public function testQualifiersConstraintNoQualifiers() {
/** @var Item $entity */
$entity = $this->lookup->getEntity( new ItemId( 'Q4' ) );
- $qualifiersChecker = new QualifiersChecker(
$this->getConstraintParameterParser(), $this->getConstraintParameterRenderer()
);
- $checkResult = $qualifiersChecker->checkConstraint(
$this->getFirstStatement( $entity ), $this->getConstraintMock( [ 'property' =>
$this->qualifiersList ] ), $entity );
- $this->assertCompliance( $checkResult );
- }
+ $statement = $this->getFirstStatement( $entity );
+ $constraint = $this->getConstraintMock(
$this->propertiesParameter( $this->qualifiersList ) );
- /**
- * Logically identical to {@link testQualifiersConstraint},
- * but with statement parameters instead of template parameters.
- */
- public function testQualifiersConstraintWithStatement() {
- /** @var Item $entity */
- $entity = $this->lookup->getEntity( new ItemId( 'Q2' ) );
- $qualifiersChecker = new QualifiersChecker(
$this->getConstraintParameterParser(), $this->getConstraintParameterRenderer()
);
-
- $snakSerializer =
WikibaseRepo::getDefaultInstance()->getSerializerFactory()->newSnakSerializer();
- $config = $this->getDefaultConfig();
- $propertyId = $config->get( 'WBQualityConstraintsPropertyId' );
- $parameters = [ $propertyId => array_map(
- function( $id ) use ( $snakSerializer, $propertyId ) {
- return $snakSerializer->serialize( new
PropertyValueSnak( new PropertyId( $propertyId ), new EntityIdValue( new
PropertyId( $id ) ) ) );
- },
- explode( ',', $this->qualifiersList )
- ) ];
-
- $checkResult = $qualifiersChecker->checkConstraint(
$this->getFirstStatement( $entity ), $this->getConstraintMock( $parameters ),
$entity );
+ $checkResult = $this->checker->checkConstraint( $statement,
$constraint, $entity );
$this->assertCompliance( $checkResult );
}
diff --git a/tests/phpunit/ConstraintParameters.php
b/tests/phpunit/ConstraintParameters.php
index 868994d..4f6ce24 100644
--- a/tests/phpunit/ConstraintParameters.php
+++ b/tests/phpunit/ConstraintParameters.php
@@ -2,8 +2,12 @@
namespace WikibaseQuality\ConstraintReport\Tests;
+use Serializers\Serializer;
use ValueFormatters\ValueFormatter;
+use Wikibase\DataModel\Entity\EntityIdValue;
+use Wikibase\DataModel\Entity\PropertyId;
use Wikibase\DataModel\Services\EntityId\PlainEntityIdFormatter;
+use Wikibase\DataModel\Snak\PropertyValueSnak;
use
WikibaseQuality\ConstraintReport\ConstraintCheck\Helper\ConstraintStatementParameterParser;
use WikibaseQuality\ConstraintReport\ConstraintParameterRenderer;
use Wikibase\Repo\WikibaseRepo;
@@ -25,6 +29,11 @@
* @var ConstraintParameterRenderer
*/
private $renderer;
+
+ /**
+ * @var Serializer
+ */
+ private $snakSerializer;
/**
* @return ConstraintStatementParameterParser
@@ -55,4 +64,33 @@
return $this->renderer;
}
+ /**
+ * @return Serializer
+ */
+ private function getSnakSerializer() {
+ if ( $this->snakSerializer == null ) {
+ $this->snakSerializer =
WikibaseRepo::getDefaultInstance()->getSerializerFactory()->newSnakSerializer();
+ }
+
+ return $this->snakSerializer;
+ }
+
+ /**
+ * @param string[] $properties property ID serializations
+ * @return array
+ */
+ public function propertiesParameter( array $properties ) {
+ $propertyParameterId = $this->getDefaultConfig()->get(
'WBQualityConstraintsPropertyId' );
+ return [
+ $propertyParameterId => array_map(
+ function( $property ) use (
$propertyParameterId ) {
+ $value = new EntityIdValue( new
PropertyId( $property ) );
+ $snak = new PropertyValueSnak( new
PropertyId( $propertyParameterId ), $value );
+ return
$this->getSnakSerializer()->serialize( $snak );
+ },
+ $properties
+ )
+ ];
+ }
+
}
--
To view, visit https://gerrit.wikimedia.org/r/359192
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I3f7cc80153e43bfd4635203cf56b11c7c0b8959e
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/WikibaseQualityConstraints
Gerrit-Branch: master
Gerrit-Owner: Lucas Werkmeister (WMDE) <[email protected]>
Gerrit-Reviewer: Jonas Kress (WMDE) <[email protected]>
Gerrit-Reviewer: Lucas Werkmeister (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits