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.werkmeister@wikimedia.de>
_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
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.werkmeister@wikimedia.de>
_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits