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