Lucas Werkmeister (WMDE) has uploaded a new change for review. ( 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 getSiblingSnaks() 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 getSiblingSnaks() implementations and ValueCountCheckerHelper already have more tests elsewhere). 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(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseQualityConstraints refs/changes/82/405282/1 diff --git a/src/ConstraintCheck/Checker/MultiValueChecker.php b/src/ConstraintCheck/Checker/MultiValueChecker.php index 7014060..c76301d 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 dcf26fc..0ad2661 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: newchange Gerrit-Change-Id: Id1ef2d371a479f9520c0b135abc0abc01169de09 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/WikibaseQualityConstraints Gerrit-Branch: master Gerrit-Owner: Lucas Werkmeister (WMDE) <lucas.werkmeis...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits