jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/405282 )

Change subject: Support qualifier and reference in value count checkers
......................................................................


Support qualifier and reference in value count checkers

On the part of the checkers, this just means declaring support for the
'qualifier' and 'reference' context types – all the actual work is done
by the getSnakGroup() implementations and the ValueCountCheckerHelper.
For the tests, I added just one test for qualifiers and one for
references (instead of having tests with one and two snaks for each
context), since I think it’s unlikely that extra tests would uncover any
more faults (both the getSnakGroup() implementations and
ValueCountCheckerHelper already have more tests elsewhere).

Bug: T175566
Change-Id: Id1ef2d371a479f9520c0b135abc0abc01169de09
---
M src/ConstraintCheck/Checker/MultiValueChecker.php
M src/ConstraintCheck/Checker/SingleValueChecker.php
M tests/phpunit/Checker/ValueCountChecker/MultiValueCheckerTest.php
M tests/phpunit/Checker/ValueCountChecker/SingleValueCheckerTest.php
4 files changed, 70 insertions(+), 6 deletions(-)

Approvals:
  jenkins-bot: Verified
  Thiemo Kreuz (WMDE): Looks good to me, approved



diff --git a/src/ConstraintCheck/Checker/MultiValueChecker.php 
b/src/ConstraintCheck/Checker/MultiValueChecker.php
index 33b6829..8253367 100644
--- a/src/ConstraintCheck/Checker/MultiValueChecker.php
+++ b/src/ConstraintCheck/Checker/MultiValueChecker.php
@@ -30,9 +30,8 @@
        public function getSupportedContextTypes() {
                return [
                        Context::TYPE_STATEMENT => 
CheckResult::STATUS_COMPLIANCE,
-                       // TODO T175566
-                       Context::TYPE_QUALIFIER => CheckResult::STATUS_TODO,
-                       Context::TYPE_REFERENCE => CheckResult::STATUS_TODO,
+                       Context::TYPE_QUALIFIER => 
CheckResult::STATUS_COMPLIANCE,
+                       Context::TYPE_REFERENCE => 
CheckResult::STATUS_COMPLIANCE,
                ];
        }
 
diff --git a/src/ConstraintCheck/Checker/SingleValueChecker.php 
b/src/ConstraintCheck/Checker/SingleValueChecker.php
index fe277ff..a94df1d 100644
--- a/src/ConstraintCheck/Checker/SingleValueChecker.php
+++ b/src/ConstraintCheck/Checker/SingleValueChecker.php
@@ -30,9 +30,8 @@
        public function getSupportedContextTypes() {
                return [
                        Context::TYPE_STATEMENT => 
CheckResult::STATUS_COMPLIANCE,
-                       // TODO T175566
-                       Context::TYPE_QUALIFIER => CheckResult::STATUS_TODO,
-                       Context::TYPE_REFERENCE => CheckResult::STATUS_TODO,
+                       Context::TYPE_QUALIFIER => 
CheckResult::STATUS_COMPLIANCE,
+                       Context::TYPE_REFERENCE => 
CheckResult::STATUS_COMPLIANCE,
                ];
        }
 
diff --git a/tests/phpunit/Checker/ValueCountChecker/MultiValueCheckerTest.php 
b/tests/phpunit/Checker/ValueCountChecker/MultiValueCheckerTest.php
index 962ddf7..cfdd52d 100644
--- a/tests/phpunit/Checker/ValueCountChecker/MultiValueCheckerTest.php
+++ b/tests/phpunit/Checker/ValueCountChecker/MultiValueCheckerTest.php
@@ -2,11 +2,14 @@
 
 namespace WikibaseQuality\ConstraintReport\Test\ValueCountChecker;
 
+use Wikibase\DataModel\Reference;
 use Wikibase\Repo\Tests\NewItem;
 use Wikibase\Repo\Tests\NewStatement;
 use WikibaseQuality\ConstraintReport\Constraint;
 use WikibaseQuality\ConstraintReport\ConstraintCheck\Checker\MultiValueChecker;
 use WikibaseQuality\ConstraintReport\ConstraintCheck\Context\MainSnakContext;
+use WikibaseQuality\ConstraintReport\ConstraintCheck\Context\QualifierContext;
+use WikibaseQuality\ConstraintReport\ConstraintCheck\Context\ReferenceContext;
 use WikibaseQuality\ConstraintReport\Tests\ResultAssertions;
 
 /**
@@ -74,6 +77,36 @@
                $this->assertViolation( $checkResult, 
'wbqc-violation-message-multi-value' );
        }
 
+       public function testMultiValueConstraint_One_Qualifier() {
+               $qualifier1 = NewStatement::noValueFor( 'P1' 
)->build()->getMainSnak();
+               $qualifier2 = NewStatement::noValueFor( 'P2' 
)->build()->getMainSnak();
+               $statement = NewStatement::someValueFor( 'P10' )->build();
+               $statement->getQualifiers()->addSnak( $qualifier1 );
+               $statement->getQualifiers()->addSnak( $qualifier2 );
+               $item = NewItem::withStatement( $statement )
+                       ->andStatement( NewStatement::someValueFor( 'P1' ) )
+                       ->build();
+               $context = new QualifierContext( $item, $statement, $qualifier1 
);
+
+               $checkResult = $this->checker->checkConstraint( $context, 
$this->constraint );
+
+               $this->assertViolation( $checkResult, 
'wbqc-violation-message-multi-value' );
+       }
+
+       public function testMultiValueConstraint_Two_Reference() {
+               $referenceSnak1 = NewStatement::noValueFor( 'P1' 
)->build()->getMainSnak();
+               $referenceSnak2 = NewStatement::someValueFor( 'P1' 
)->build()->getMainSnak();
+               $reference = new Reference( [ $referenceSnak1, $referenceSnak2 
] );
+               $statement = NewStatement::someValueFor( 'P10' )->build();
+               $statement->getReferences()->addReference( $reference );
+               $item = NewItem::withStatement( $statement )->build();
+               $context = new ReferenceContext( $item, $statement, $reference, 
$referenceSnak1 );
+
+               $checkResult = $this->checker->checkConstraint( $context, 
$this->constraint );
+
+               $this->assertCompliance( $checkResult );
+       }
+
        public function testSingleValueConstraintDeprecatedStatement() {
                $statement = NewStatement::noValueFor( 'P1' )
                        ->withDeprecatedRank()
diff --git a/tests/phpunit/Checker/ValueCountChecker/SingleValueCheckerTest.php 
b/tests/phpunit/Checker/ValueCountChecker/SingleValueCheckerTest.php
index 3e651f1..7d4404f 100644
--- a/tests/phpunit/Checker/ValueCountChecker/SingleValueCheckerTest.php
+++ b/tests/phpunit/Checker/ValueCountChecker/SingleValueCheckerTest.php
@@ -2,11 +2,14 @@
 
 namespace WikibaseQuality\ConstraintReport\Test\ValueCountChecker;
 
+use Wikibase\DataModel\Reference;
 use Wikibase\Repo\Tests\NewItem;
 use Wikibase\Repo\Tests\NewStatement;
 use WikibaseQuality\ConstraintReport\Constraint;
 use 
WikibaseQuality\ConstraintReport\ConstraintCheck\Checker\SingleValueChecker;
 use WikibaseQuality\ConstraintReport\ConstraintCheck\Context\MainSnakContext;
+use WikibaseQuality\ConstraintReport\ConstraintCheck\Context\QualifierContext;
+use WikibaseQuality\ConstraintReport\ConstraintCheck\Context\ReferenceContext;
 use WikibaseQuality\ConstraintReport\Tests\ResultAssertions;
 
 /**
@@ -74,6 +77,36 @@
                $this->assertCompliance( $checkResult );
        }
 
+       public function testSingleValueConstraint_One_Qualifier() {
+               $qualifier1 = NewStatement::noValueFor( 'P1' 
)->build()->getMainSnak();
+               $qualifier2 = NewStatement::noValueFor( 'P2' 
)->build()->getMainSnak();
+               $statement = NewStatement::someValueFor( 'P10' )->build();
+               $statement->getQualifiers()->addSnak( $qualifier1 );
+               $statement->getQualifiers()->addSnak( $qualifier2 );
+               $item = NewItem::withStatement( $statement )
+                       ->andStatement( NewStatement::someValueFor( 'P1' ) )
+                       ->build();
+               $context = new QualifierContext( $item, $statement, $qualifier1 
);
+
+               $checkResult = $this->checker->checkConstraint( $context, 
$this->constraint );
+
+               $this->assertCompliance( $checkResult );
+       }
+
+       public function testSingleValueConstraint_Two_Reference() {
+               $referenceSnak1 = NewStatement::noValueFor( 'P1' 
)->build()->getMainSnak();
+               $referenceSnak2 = NewStatement::someValueFor( 'P1' 
)->build()->getMainSnak();
+               $reference = new Reference( [ $referenceSnak1, $referenceSnak2 
] );
+               $statement = NewStatement::someValueFor( 'P10' )->build();
+               $statement->getReferences()->addReference( $reference );
+               $item = NewItem::withStatement( $statement )->build();
+               $context = new ReferenceContext( $item, $statement, $reference, 
$referenceSnak1 );
+
+               $checkResult = $this->checker->checkConstraint( $context, 
$this->constraint );
+
+               $this->assertViolation( $checkResult, 
'wbqc-violation-message-single-value' );
+       }
+
        public function testSingleValueConstraintDeprecatedStatement() {
                $statement = NewStatement::noValueFor( 'P1' )
                        ->withDeprecatedRank()

-- 
To view, visit https://gerrit.wikimedia.org/r/405282
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Id1ef2d371a479f9520c0b135abc0abc01169de09
Gerrit-PatchSet: 8
Gerrit-Project: mediawiki/extensions/WikibaseQualityConstraints
Gerrit-Branch: master
Gerrit-Owner: Lucas Werkmeister (WMDE) <lucas.werkmeis...@wikimedia.de>
Gerrit-Reviewer: Lucas Werkmeister (WMDE) <lucas.werkmeis...@wikimedia.de>
Gerrit-Reviewer: Thiemo Kreuz (WMDE) <thiemo.kr...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to