Mailing List Archive

[MediaWiki-commits] [Gerrit] mediawiki...WikibaseQualityConstraints[master]: Support qualifier and reference in value count checkers
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
[MediaWiki-commits] [Gerrit] mediawiki...WikibaseQualityConstraints[master]: Support qualifier and reference in value count checkers [ In reply to ]
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.werkmeister@wikimedia.de>
Gerrit-Reviewer: Lucas Werkmeister (WMDE) <lucas.werkmeister@wikimedia.de>
Gerrit-Reviewer: Thiemo Kreuz (WMDE) <thiemo.kreuz@wikimedia.de>
Gerrit-Reviewer: jenkins-bot <>

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