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

Reply via email to