Lucas Werkmeister (WMDE) has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/346978 )
Change subject: Store constraint statement GUID in check result
......................................................................
Store constraint statement GUID in check result
Change-Id: Iba5a8c8bd4eb02aebace8d1a3d35eae67913534a
---
M includes/ConstraintCheck/Checker/CommonsLinkChecker.php
M includes/ConstraintCheck/Checker/ConflictsWithChecker.php
M includes/ConstraintCheck/Checker/DiffWithinRangeChecker.php
M includes/ConstraintCheck/Checker/FormatChecker.php
M includes/ConstraintCheck/Checker/InverseChecker.php
M includes/ConstraintCheck/Checker/ItemChecker.php
M includes/ConstraintCheck/Checker/MandatoryQualifiersChecker.php
M includes/ConstraintCheck/Checker/MultiValueChecker.php
M includes/ConstraintCheck/Checker/OneOfChecker.php
M includes/ConstraintCheck/Checker/QualifierChecker.php
M includes/ConstraintCheck/Checker/QualifiersChecker.php
M includes/ConstraintCheck/Checker/RangeChecker.php
M includes/ConstraintCheck/Checker/SingleValueChecker.php
M includes/ConstraintCheck/Checker/SymmetricChecker.php
M includes/ConstraintCheck/Checker/TargetRequiredClaimChecker.php
M includes/ConstraintCheck/Checker/TypeChecker.php
M includes/ConstraintCheck/Checker/UniqueValueChecker.php
M includes/ConstraintCheck/Checker/ValueTypeChecker.php
M includes/ConstraintCheck/DelegatingConstraintChecker.php
M includes/ConstraintCheck/Result/CheckResult.php
M includes/ConstraintReportFactory.php
M tests/phpunit/DelegatingConstraintCheckerTest.php
M tests/phpunit/Fake/FakeChecker.php
M tests/phpunit/Result/CheckResultTest.php
24 files changed, 108 insertions(+), 64 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseQualityConstraints
refs/changes/78/346978/1
diff --git a/includes/ConstraintCheck/Checker/CommonsLinkChecker.php
b/includes/ConstraintCheck/Checker/CommonsLinkChecker.php
index 72920a8..a88462c 100644
--- a/includes/ConstraintCheck/Checker/CommonsLinkChecker.php
+++ b/includes/ConstraintCheck/Checker/CommonsLinkChecker.php
@@ -60,7 +60,7 @@
*/
if ( !$mainSnak instanceof PropertyValueSnak ) {
$message = wfMessage(
"wbqc-violation-message-value-needed" )->params(
$constraint->getConstraintTypeName() )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$dataValue = $mainSnak->getDataValue();
@@ -72,7 +72,7 @@
*/
if ( $dataValue->getType() !== 'string' ) {
$message = wfMessage(
"wbqc-violation-message-value-needed-of-type" )->params(
$constraint->getConstraintTypeName(), 'string' )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$commonsLink = $dataValue->getValue();
@@ -96,7 +96,7 @@
$status = CheckResult::STATUS_VIOLATION;
}
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters, $status, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, $status, $message );
}
/**
diff --git a/includes/ConstraintCheck/Checker/ConflictsWithChecker.php
b/includes/ConstraintCheck/Checker/ConflictsWithChecker.php
index e5aed82..341633f 100644
--- a/includes/ConstraintCheck/Checker/ConflictsWithChecker.php
+++ b/includes/ConstraintCheck/Checker/ConflictsWithChecker.php
@@ -64,7 +64,7 @@
*/
if ( !array_key_exists( 'property', $constraintParameters ) ) {
$message = wfMessage(
"wbqc-violation-message-parameter-needed" )->params(
$constraint->getConstraintTypeName(), 'property' )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$parameters['property'] =
$this->constraintParameterParser->parseSingleParameter(
$constraintParameters['property'] );
@@ -95,7 +95,7 @@
}
}
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters, $status, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, $status, $message );
}
}
diff --git a/includes/ConstraintCheck/Checker/DiffWithinRangeChecker.php
b/includes/ConstraintCheck/Checker/DiffWithinRangeChecker.php
index cde1347..481a7ca 100644
--- a/includes/ConstraintCheck/Checker/DiffWithinRangeChecker.php
+++ b/includes/ConstraintCheck/Checker/DiffWithinRangeChecker.php
@@ -68,7 +68,7 @@
*/
if ( !$mainSnak instanceof PropertyValueSnak ) {
$message = wfMessage(
"wbqc-violation-message-value-needed" )->params(
$constraint->getConstraintTypeName() )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$dataValue = $mainSnak->getDataValue();
@@ -91,7 +91,7 @@
$message = wfMessage(
"wbqc-violation-message-value-needed-of-type" )->params(
$constraint->getConstraintTypeName(), 'quantity" or "time' )->escaped();
}
if ( isset( $message ) ) {
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$thisValue = $this->rangeCheckerHelper->getComparativeValue(
$dataValue );
@@ -108,7 +108,7 @@
*/
if ( !$mainSnak instanceof PropertyValueSnak ) {
$message = wfMessage(
"wbqc-violation-message-diff-within-range-property-needs value" )->escaped();
- return new CheckResult( $entity,
$statement, $constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity,
$statement, $constraint->getConstraintTypeQid(),
$constraint->getConstraintStatementGuid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
}
if ( $mainSnak->getDataValue()->getType() ===
$dataValue->getType() && $mainSnak->getType() === 'value' ) {
@@ -129,13 +129,13 @@
$status = CheckResult::STATUS_VIOLATION;
}
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters, $status, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, $status, $message );
}
}
$message = wfMessage(
"wbqc-violation-message-diff-within-range-property-must-exist" )->escaped();
$status = CheckResult::STATUS_VIOLATION;
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters, $status, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, $status, $message );
}
}
diff --git a/includes/ConstraintCheck/Checker/FormatChecker.php
b/includes/ConstraintCheck/Checker/FormatChecker.php
index 438938d..27605c0 100644
--- a/includes/ConstraintCheck/Checker/FormatChecker.php
+++ b/includes/ConstraintCheck/Checker/FormatChecker.php
@@ -48,7 +48,7 @@
$parameters['pattern'] =
$this->helper->parseSingleParameter( $pattern, true );
} else {
$message = wfMessage(
"wbqc-violation-message-parameter-needed" )->params(
$constraint->getConstraintTypeName(), 'pattern' )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
if ( array_key_exists( 'constraint_status',
$constraintParameters ) ) {
@@ -63,7 +63,7 @@
*/
if ( !$mainSnak instanceof PropertyValueSnak ) {
$message = wfMessage(
"wbqc-violation-message-value-needed" )->params(
$constraint->getConstraintTypeName() )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$dataValue = $mainSnak->getDataValue();
@@ -75,11 +75,11 @@
*/
if ( $dataValue->getType() !== 'string' ) {
$message = wfMessage(
"wbqc-violation-message-value-needed-of-type" )->params(
$constraint->getConstraintTypeName(), 'string' )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$message = wfMessage( 'wbqc-violation-message-security-reason'
)->params( $constraint->getConstraintTypeName(), 'string' )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters, CheckResult::STATUS_TODO,
$message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_TODO, $message );
}
}
diff --git a/includes/ConstraintCheck/Checker/InverseChecker.php
b/includes/ConstraintCheck/Checker/InverseChecker.php
index f73164f..1dc82d6 100644
--- a/includes/ConstraintCheck/Checker/InverseChecker.php
+++ b/includes/ConstraintCheck/Checker/InverseChecker.php
@@ -76,7 +76,7 @@
*/
if ( !$mainSnak instanceof PropertyValueSnak ) {
$message = wfMessage(
"wbqc-violation-message-value-needed" )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$dataValue = $mainSnak->getDataValue();
@@ -88,20 +88,20 @@
*/
if ( $dataValue->getType() !== 'wikibase-entityid' ) {
$message = wfMessage(
"wbqc-violation-message-value-needed-of-type" )->params(
$constraint->getConstraintTypeName(), 'wikibase-entityid' )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
/** @var EntityIdValue $dataValue */
if ( !array_key_exists( 'property', $constraintParameters ) ) {
$message = wfMessage(
"wbqc-violation-message-property-needed" )->params(
$constraint->getConstraintTypeName(), 'property' )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$property = $constraintParameters['property'];
$targetItem = $this->entityLookup->getEntity(
$dataValue->getEntityId() );
if ( $targetItem === null ) {
$message = wfMessage(
"wbqc-violation-message-target-entity-must-exist" )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$targetItemStatementList = $targetItem->getStatements();
@@ -113,7 +113,7 @@
$status = CheckResult::STATUS_VIOLATION;
}
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters, $status, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, $status, $message );
}
}
diff --git a/includes/ConstraintCheck/Checker/ItemChecker.php
b/includes/ConstraintCheck/Checker/ItemChecker.php
index bc7f8f7..b1cfe18 100644
--- a/includes/ConstraintCheck/Checker/ItemChecker.php
+++ b/includes/ConstraintCheck/Checker/ItemChecker.php
@@ -76,7 +76,7 @@
*/
if ( !$property ) {
$message = wfMessage(
"wbqc-violation-message-property-needed" )->params(
$constraint->getConstraintTypeName(), 'property' )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
/*
@@ -102,7 +102,7 @@
}
}
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters, $status, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, $status, $message );
}
}
diff --git a/includes/ConstraintCheck/Checker/MandatoryQualifiersChecker.php
b/includes/ConstraintCheck/Checker/MandatoryQualifiersChecker.php
index 768dcf4..b021925 100644
--- a/includes/ConstraintCheck/Checker/MandatoryQualifiersChecker.php
+++ b/includes/ConstraintCheck/Checker/MandatoryQualifiersChecker.php
@@ -67,7 +67,7 @@
}
}
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters, $status, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, $status, $message );
}
}
diff --git a/includes/ConstraintCheck/Checker/MultiValueChecker.php
b/includes/ConstraintCheck/Checker/MultiValueChecker.php
index c855591..3143581 100644
--- a/includes/ConstraintCheck/Checker/MultiValueChecker.php
+++ b/includes/ConstraintCheck/Checker/MultiValueChecker.php
@@ -50,7 +50,7 @@
$status = CheckResult::STATUS_COMPLIANCE;
}
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters, $status, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, $status, $message );
}
}
diff --git a/includes/ConstraintCheck/Checker/OneOfChecker.php
b/includes/ConstraintCheck/Checker/OneOfChecker.php
index 58c4557..772ddf3 100644
--- a/includes/ConstraintCheck/Checker/OneOfChecker.php
+++ b/includes/ConstraintCheck/Checker/OneOfChecker.php
@@ -62,7 +62,7 @@
*/
if ( !$mainSnak instanceof PropertyValueSnak ) {
$message = wfMessage(
"wbqc-violation-message-value-needed" )->params(
$constraint->getConstraintTypeName() )->escaped();
- return new CheckResult( $entity, $statement, 'One of',
$parameters, CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement, 'One of',
$constraint->getConstraintStatementGuid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
}
$dataValue = $mainSnak->getDataValue();
@@ -74,13 +74,13 @@
*/
if ( $dataValue->getType() !== 'wikibase-entityid' ) {
$message = wfMessage(
"wbqc-violation-message-value-needed-of-type" )->params(
$constraint->getConstraintTypeName(), 'wikibase-entityid' )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
/** @var EntityIdValue $dataValue */
if ( !$items ) {
$message = wfMessage(
"wbqc-violation-message-property-needed" )->params(
$constraint->getConstraintTypeName(), 'property' )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
if ( in_array( $dataValue->getEntityId()->getSerialization(),
$items ) ) {
@@ -91,7 +91,7 @@
$status = CheckResult::STATUS_VIOLATION;
}
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters, $status, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, $status, $message );
}
}
diff --git a/includes/ConstraintCheck/Checker/QualifierChecker.php
b/includes/ConstraintCheck/Checker/QualifierChecker.php
index ca98bc0..249bb14 100644
--- a/includes/ConstraintCheck/Checker/QualifierChecker.php
+++ b/includes/ConstraintCheck/Checker/QualifierChecker.php
@@ -41,7 +41,7 @@
*/
public function checkConstraint( Statement $statement, Constraint
$constraint, EntityDocument $entity ) {
$message = wfMessage( "wbqc-violation-message-qualifier"
)->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), array (), CheckResult::STATUS_VIOLATION,
$message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
array (), CheckResult::STATUS_VIOLATION, $message );
}
}
diff --git a/includes/ConstraintCheck/Checker/QualifiersChecker.php
b/includes/ConstraintCheck/Checker/QualifiersChecker.php
index 1d07400..ea21f7a 100644
--- a/includes/ConstraintCheck/Checker/QualifiersChecker.php
+++ b/includes/ConstraintCheck/Checker/QualifiersChecker.php
@@ -65,7 +65,7 @@
}
}
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters, $status, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, $status, $message );
}
}
diff --git a/includes/ConstraintCheck/Checker/RangeChecker.php
b/includes/ConstraintCheck/Checker/RangeChecker.php
index 8812b59..fc00651 100644
--- a/includes/ConstraintCheck/Checker/RangeChecker.php
+++ b/includes/ConstraintCheck/Checker/RangeChecker.php
@@ -63,7 +63,7 @@
*/
if ( !$mainSnak instanceof PropertyValueSnak ) {
$message = wfMessage(
"wbqc-violation-message-value-needed" )->params(
$constraint->getConstraintTypeName() )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$dataValue = $mainSnak->getDataValue();
@@ -95,7 +95,7 @@
$message = wfMessage(
"wbqc-violation-message-value-needed-of-type" )->params(
$constraint->getConstraintTypeName(), 'quantity" or "time' )->escaped();
}
if ( isset( $message ) ) {
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$comparativeValue =
$this->rangeCheckerHelper->getComparativeValue( $dataValue );
@@ -108,7 +108,7 @@
$status = CheckResult::STATUS_COMPLIANCE;
}
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters, $status, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, $status, $message );
}
}
diff --git a/includes/ConstraintCheck/Checker/SingleValueChecker.php
b/includes/ConstraintCheck/Checker/SingleValueChecker.php
index 8b2a648..4dda1ed 100644
--- a/includes/ConstraintCheck/Checker/SingleValueChecker.php
+++ b/includes/ConstraintCheck/Checker/SingleValueChecker.php
@@ -50,7 +50,7 @@
$status = CheckResult::STATUS_COMPLIANCE;
}
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters, $status, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, $status, $message );
}
}
diff --git a/includes/ConstraintCheck/Checker/SymmetricChecker.php
b/includes/ConstraintCheck/Checker/SymmetricChecker.php
index d97f164..21b0570 100644
--- a/includes/ConstraintCheck/Checker/SymmetricChecker.php
+++ b/includes/ConstraintCheck/Checker/SymmetricChecker.php
@@ -73,7 +73,7 @@
*/
if ( !$mainSnak instanceof PropertyValueSnak ) {
$message = wfMessage(
"wbqc-violation-message-value-needed" )->params(
$constraint->getConstraintTypeName() )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$dataValue = $mainSnak->getDataValue();
@@ -84,14 +84,14 @@
*/
if ( $dataValue->getType() !== 'wikibase-entityid' ) {
$message = wfMessage(
"wbqc-violation-message-value-needed" )->params(
$constraint->getConstraintTypeName(), 'wikibase-entityid' )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
/** @var EntityIdValue $dataValue */
$targetItem = $this->entityLookup->getEntity(
$dataValue->getEntityId() );
if ( $targetItem === null ) {
$message = wfMessage(
"wbqc-violation-message-target-entity-must-exist" )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$targetItemStatementList = $targetItem->getStatements();
@@ -103,7 +103,7 @@
$status = CheckResult::STATUS_VIOLATION;
}
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters, $status, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, $status, $message );
}
}
diff --git a/includes/ConstraintCheck/Checker/TargetRequiredClaimChecker.php
b/includes/ConstraintCheck/Checker/TargetRequiredClaimChecker.php
index b8efe52..6753b8c 100644
--- a/includes/ConstraintCheck/Checker/TargetRequiredClaimChecker.php
+++ b/includes/ConstraintCheck/Checker/TargetRequiredClaimChecker.php
@@ -84,7 +84,7 @@
*/
if ( !$mainSnak instanceof PropertyValueSnak ) {
$message = wfMessage(
"wbqc-violation-message-value-needed" )->params(
$constraint->getConstraintTypeName() )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$dataValue = $mainSnak->getDataValue();
@@ -96,19 +96,19 @@
*/
if ( $dataValue->getType() !== 'wikibase-entityid' ) {
$message = wfMessage(
"wbqc-violation-message-value-needed-of-type" )->params(
$constraint->getConstraintTypeName(), 'wikibase-entityid' )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
/** @var EntityIdValue $dataValue */
if ( !$property ) {
$message = wfMessage(
"wbqc-violation-message-property-needed" )->params(
$constraint->getConstraintTypeName(), 'property' )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$targetEntity = $this->entityLookup->getEntity(
$dataValue->getEntityId() );
if ( $targetEntity === null ) {
$message = wfMessage(
"wbqc-violation-message-target-entity-must-exist" )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$targetEntityStatementList = $targetEntity->getStatements();
@@ -135,7 +135,7 @@
}
}
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters, $status, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, $status, $message );
}
}
diff --git a/includes/ConstraintCheck/Checker/TypeChecker.php
b/includes/ConstraintCheck/Checker/TypeChecker.php
index bd375c7..193070c 100644
--- a/includes/ConstraintCheck/Checker/TypeChecker.php
+++ b/includes/ConstraintCheck/Checker/TypeChecker.php
@@ -79,7 +79,7 @@
*/
if ( !$classes ) {
$message = wfMessage(
"wbqc-violation-message-parameter-needed" )->params(
$constraint->getConstraintTypeName(), 'class' )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
/*
@@ -92,7 +92,7 @@
$relationId = self::subclassId;
} else {
$message = wfMessage(
"wbqc-violation-message-type-relation-instance-or-subclass" )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
if ( $this->typeCheckerHelper->hasClassInRelation(
$entity->getStatements(), $relationId, $classes ) ) {
@@ -103,7 +103,7 @@
$status = CheckResult::STATUS_VIOLATION;
}
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters, $status, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, $status, $message );
}
}
diff --git a/includes/ConstraintCheck/Checker/UniqueValueChecker.php
b/includes/ConstraintCheck/Checker/UniqueValueChecker.php
index 396ddef..57b50f0 100644
--- a/includes/ConstraintCheck/Checker/UniqueValueChecker.php
+++ b/includes/ConstraintCheck/Checker/UniqueValueChecker.php
@@ -40,7 +40,7 @@
$parameters = array ();
$message = wfMessage(
"wbqc-violation-message-not-yet-implemented" )->params(
$constraint->getConstraintTypeName() )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters, CheckResult::STATUS_TODO,
$message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_TODO, $message );
}
}
diff --git a/includes/ConstraintCheck/Checker/ValueTypeChecker.php
b/includes/ConstraintCheck/Checker/ValueTypeChecker.php
index acec3b6..7037a78 100644
--- a/includes/ConstraintCheck/Checker/ValueTypeChecker.php
+++ b/includes/ConstraintCheck/Checker/ValueTypeChecker.php
@@ -87,7 +87,7 @@
*/
if ( !$mainSnak instanceof PropertyValueSnak ) {
$message = wfMessage(
"wbqc-violation-message-value-needed" )->params(
$constraint->getConstraintTypeQid() )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$dataValue = $mainSnak->getDataValue();
@@ -99,13 +99,13 @@
*/
if ( $dataValue->getType() !== 'wikibase-entityid' ) {
$message = wfMessage(
"wbqc-violation-message-value-needed-of-type" )->params(
$constraint->getConstraintTypeQid(), 'wikibase-entityid' )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
/** @var EntityIdValue $dataValue */
if ( !$classes ) {
$message = wfMessage(
"wbqc-violation-message-parameter-needed" )->params(
$constraint->getConstraintTypeQid(), 'class' )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
/*
@@ -118,14 +118,14 @@
$relationId = self::subclassId;
} else {
$message = wfMessage(
"wbqc-violation-message-type-relation-instance-or-subclass" )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$item = $this->entityLookup->getEntity(
$dataValue->getEntityId() );
if ( !( $item instanceof StatementListProvider ) ) {
$message = wfMessage(
"wbqc-violation-message-value-entity-must-exist" )->escaped();
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters,
CheckResult::STATUS_VIOLATION, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
}
$statements = $item->getStatements();
@@ -138,7 +138,7 @@
$status = CheckResult::STATUS_VIOLATION;
}
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $parameters, $status, $message );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
$parameters, $status, $message );
}
}
diff --git a/includes/ConstraintCheck/DelegatingConstraintChecker.php
b/includes/ConstraintCheck/DelegatingConstraintChecker.php
index 0735ede..472705d 100644
--- a/includes/ConstraintCheck/DelegatingConstraintChecker.php
+++ b/includes/ConstraintCheck/DelegatingConstraintChecker.php
@@ -12,6 +12,7 @@
use WikibaseQuality\ConstraintReport\ConstraintCheck\Result\CheckResult;
use WikibaseQuality\ConstraintReport\ConstraintLookup;
use WikibaseQuality\ConstraintReport\Constraint;
+use Wikibase\DataModel\Services\Statement\StatementGuidParser;
/**
* Used to start the constraint-check process and to delegate
@@ -43,6 +44,11 @@
private $statements;
/**
+ * @var StatementGuidParser
+ */
+ private $statementGuidParser;
+
+ /**
* @var ConstraintLookup
*/
private $constraintLookup;
@@ -50,12 +56,19 @@
/**
* @param EntityLookup $lookup
* @param ConstraintChecker[] $checkerMap
- * @param ConstraintLookup $constraintLookup
+ * @param StatementGuidParser $statementGuidParser
+ * @param ConstraintLookup $constraintRepository
*/
- public function __construct( EntityLookup $lookup, array $checkerMap,
ConstraintLookup $constraintLookup ) {
+ public function __construct(
+ EntityLookup $lookup,
+ array $checkerMap,
+ StatementGuidParser $statementGuidParser,
+ ConstraintLookup $constraintRepository
+ ) {
$this->entityLookup = $lookup;
$this->checkerMap = $checkerMap;
- $this->constraintLookup = $constraintLookup;
+ $this->constraintLookup = $constraintRepository;
+ $this->statementGuidParser = $statementGuidParser;
}
/**
@@ -117,7 +130,7 @@
$parameter = $constraint->getConstraintParameters();
if ( array_key_exists( 'known_exception', $parameter)
&& in_array( $entity->getId()->getSerialization(), explode( ',',
$parameter['known_exception'] ) ) ) {
$message = 'This entity is a known exception
for this constraint and has been marked as such.';
- $result[] = new CheckResult( $entity,
$statement, $constraint->getConstraintTypeQid(), array (),
CheckResult::STATUS_EXCEPTION, $message ); // todo: display parameters anyway
+ $result[] = new CheckResult( $entity,
$statement, $constraint->getConstraintTypeQid(),
$constraint->getConstraintStatementGuid(), array (),
CheckResult::STATUS_EXCEPTION, $message ); // todo: display parameters anyway
continue;
}
@@ -149,7 +162,8 @@
return $result;
} else {
- return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid() );
+ return new CheckResult( $entity, $statement,
$constraint->getConstraintTypeQid(),
+ $constraint->getConstraintStatementGuid(),
null, CheckResult::STATUS_TODO, null );
}
}
diff --git a/includes/ConstraintCheck/Result/CheckResult.php
b/includes/ConstraintCheck/Result/CheckResult.php
index c93accf..79b4d51 100644
--- a/includes/ConstraintCheck/Result/CheckResult.php
+++ b/includes/ConstraintCheck/Result/CheckResult.php
@@ -40,6 +40,11 @@
private $constraintName;
/**
+ * @var string
+ */
+ private $constraintStatementGuid;
+
+ /**
* @var array
* Includes arrays of ItemIds or PropertyIds or strings.
*/
@@ -59,14 +64,16 @@
* @param EntityDocument $entity
* @param Statement $statement
* @param string $constraintName
+ * @param string $constraintStatementGuid
* @param array $parameters (string => string[])
* @param string $status
* @param string $message (sanitized HTML)
*/
- public function __construct( EntityDocument $entity, Statement
$statement, $constraintName, $parameters = array (), $status =
self::STATUS_TODO, $message = '' ) {
+ public function __construct( EntityDocument $entity, Statement
$statement, $constraintName, $constraintStatementGuid, $parameters = array (),
$status = self::STATUS_TODO, $message = '' ) {
$this->entity = $entity;
$this->statement = $statement;
$this->constraintName = $constraintName;
+ $this->constraintStatementGuid = $constraintStatementGuid;
$this->parameters = $parameters;
$this->status = $status;
$this->message = $message;
@@ -122,6 +129,13 @@
}
/**
+ * @return string
+ */
+ public function getConstraintStatementGuid() {
+ return $this->constraintStatementGuid;
+ }
+
+ /**
* @return array
*/
public function getParameters() {
diff --git a/includes/ConstraintReportFactory.php
b/includes/ConstraintReportFactory.php
index a2b9c28..65c1a46 100644
--- a/includes/ConstraintReportFactory.php
+++ b/includes/ConstraintReportFactory.php
@@ -28,6 +28,7 @@
use
WikibaseQuality\ConstraintReport\ConstraintCheck\Helper\ConnectionCheckerHelper;
use WikibaseQuality\ConstraintReport\ConstraintCheck\Helper\RangeCheckerHelper;
use WikibaseQuality\ConstraintReport\ConstraintCheck\Helper\TypeCheckerHelper;
+use Wikibase\DataModel\Services\Statement\StatementGuidParser;
class ConstraintReportFactory {
@@ -57,6 +58,11 @@
private $constraintParameterMap;
/**
+ * @var StatementGuidParser
+ */
+ private $statementGuidParser;
+
+ /**
* Returns the default instance.
* IMPORTANT: Use only when it is not feasible to inject an instance
properly.
*
@@ -66,7 +72,7 @@
static $instance = null;
if ( $instance === null ) {
- $instance = new self(
WikibaseRepo::getDefaultInstance()->getEntityLookup() );
+ $instance = new self(
WikibaseRepo::getDefaultInstance()->getEntityLookup(),
WikibaseRepo::getDefaultInstance()->getStatementGuidParser());
}
return $instance;
@@ -74,9 +80,11 @@
/**
* @param EntityLookup $lookup
+ * @param StatementGuidParser $statementGuidParser
*/
- public function __construct( EntityLookup $lookup ) {
+ public function __construct( EntityLookup $lookup, StatementGuidParser
$statementGuidParser ) {
$this->lookup = $lookup;
+ $this->statementGuidParser = $statementGuidParser;
}
/**
@@ -87,6 +95,7 @@
$this->delegatingConstraintChecker = new
DelegatingConstraintChecker(
$this->lookup,
$this->getConstraintCheckerMap(),
+ $this->statementGuidParser,
new ConstraintRepository()
);
}
diff --git a/tests/phpunit/DelegatingConstraintCheckerTest.php
b/tests/phpunit/DelegatingConstraintCheckerTest.php
index baba758..15b37fe 100644
--- a/tests/phpunit/DelegatingConstraintCheckerTest.php
+++ b/tests/phpunit/DelegatingConstraintCheckerTest.php
@@ -3,6 +3,7 @@
namespace WikibaseQuality\ConstraintReport\Test\ConstraintChecker;
use Wikibase\DataModel\Entity\ItemId;
+use Wikibase\DataModel\Services\Statement\StatementGuidParser;
use
WikibaseQuality\ConstraintReport\ConstraintCheck\DelegatingConstraintChecker;
use WikibaseQuality\ConstraintReport\ConstraintReportFactory;
use WikibaseQuality\Tests\Helper\JsonFileEntityLookup;
@@ -52,7 +53,10 @@
protected function setUp() {
parent::setUp();
$this->lookup = new JsonFileEntityLookup( __DIR__ );
- $factory = new ConstraintReportFactory( $this->lookup );
+ $factory = new ConstraintReportFactory(
+ $this->lookup,
+ $this->prophesize( StatementGuidParser::class
)->reveal()
+ );
$this->constraintChecker = $factory->getConstraintChecker();
// specify database tables used by this test
diff --git a/tests/phpunit/Fake/FakeChecker.php
b/tests/phpunit/Fake/FakeChecker.php
index ab605d8..9a84f16 100644
--- a/tests/phpunit/Fake/FakeChecker.php
+++ b/tests/phpunit/Fake/FakeChecker.php
@@ -30,7 +30,7 @@
EntityDocument $entity
) {
return new CheckResult(
- $entity, $statement,
$constraint->getConstraintTypeQid(), [], $this->status
+ $entity, $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintStatementGuid(),
[], $this->status
);
}
}
diff --git a/tests/phpunit/Result/CheckResultTest.php
b/tests/phpunit/Result/CheckResultTest.php
index bbca65f..3ef8675 100644
--- a/tests/phpunit/Result/CheckResultTest.php
+++ b/tests/phpunit/Result/CheckResultTest.php
@@ -57,6 +57,7 @@
$this->entity = new Item( new ItemId( 'Q1' ) );
$this->statement = new Statement( new PropertyValueSnak( new
PropertyId( 'P1' ), new StringValue( 'Foo' ) ) );
$this->constraintName = 'Range';
+ $this->constraintStatementGuid = '1';
$this->parameters = array ();
$this->status = 'compliance';
$this->message = 'All right';
@@ -67,18 +68,20 @@
unset( $this->entity );
unset( $this->statement );
unset( $this->constraintName );
+ unset( $this->constraintStatementGuid );
unset( $this->parameters );
unset( $this->status );
unset( $this->message );
}
public function testConstructAndGetters() {
- $checkResult = new CheckResult( $this->entity,
$this->statement, $this->constraintName, $this->parameters, $this->status,
$this->message );
+ $checkResult = new CheckResult( $this->entity,
$this->statement, $this->constraintName, $this->constraintStatementGuid,
$this->parameters, $this->status, $this->message );
$this->assertEquals( $this->entity, $checkResult->getEntity() );
$this->assertEquals( $this->statement,
$checkResult->getStatement() );
$this->assertEquals( $this->statement->getPropertyId(),
$checkResult->getPropertyId() );
$this->assertEquals(
$this->statement->getMainSnak()->getDataValue(), $checkResult->getDataValue() );
$this->assertEquals( $this->constraintName,
$checkResult->getConstraintName() );
+ $this->assertEquals( $this->constraintStatementGuid,
$checkResult->getConstraintStatementGuid() );
$this->assertEquals( $this->parameters,
$checkResult->getParameters() );
$this->assertEquals( $this->status, $checkResult->getStatus() );
$this->assertEquals( $this->message, $checkResult->getMessage()
);
@@ -86,7 +89,7 @@
}
public function testWithWrongSnakType() {
- $checkResult = new CheckResult( $this->entity, new Statement(
new PropertyNoValueSnak( 1 ) ), $this->constraintName, $this->parameters,
$this->status, $this->message );
+ $checkResult = new CheckResult( $this->entity, new Statement(
new PropertyNoValueSnak( 1 ) ), $this->constraintName,
$this->constraintStatementGuid, $this->parameters, $this->status,
$this->message );
$this->setExpectedException( LogicException::class );
$checkResult->getDataValue();
}
--
To view, visit https://gerrit.wikimedia.org/r/346978
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Iba5a8c8bd4eb02aebace8d1a3d35eae67913534a
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikibaseQualityConstraints
Gerrit-Branch: master
Gerrit-Owner: Lucas Werkmeister (WMDE) <[email protected]>
Gerrit-Reviewer: Olga Bode <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits