jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/360322 )
Change subject: Import Diff within range constraints from statements
......................................................................
Import Diff within range constraints from statements
DiffWithinRangeChecker gets a ConstraintStatementParameterParser
injected, which it uses to parse the range and property parameters. A
config variable for the constraint type item is added, and
ConstraintReportFactory aliases it to the “Diff within range” constraint
type.
RangeCheckerHelper::getDifference() returns a quantity instead of a raw
number, and DiffWithinRangeChecker uses
RangeCheckerHelper::getComparison() to compare that quantity with the
quantities from the range. Units are still ignored, but once T164371 is
fixed, getDifference() can be changed to return the difference in days,
which will allow more fine-grained constraints.
As in Ide78cc0e79, the violation message gets −∞ and ∞ as arguments for
half-open ranges until T168268 adds dedicated messages for those cases.
Some tests for RangeCheckerHelper are removed, since tests for
constraint parameters are now handled by the
ConstraintStatementParameterParser tests. Two new tests for a half-open
difference range (one compliant, one in violation) are added.
Bug: T167414
Change-Id: I36772732a5239cb26dc92fdde479dd2ff73f3331
---
M extension.json
M includes/ConstraintCheck/Checker/DiffWithinRangeChecker.php
M includes/ConstraintCheck/Helper/RangeCheckerHelper.php
M includes/ConstraintReportFactory.php
M tests/phpunit/Checker/RangeChecker/DiffWithinRangeCheckerTest.php
M tests/phpunit/Checker/RangeChecker/RangeCheckerHelperTest.php
M tests/phpunit/Checker/RangeChecker/RangeCheckerTest.php
M tests/phpunit/ConstraintParameters.php
8 files changed, 113 insertions(+), 97 deletions(-)
Approvals:
WMDE-leszek: Checked; Looks good to me, approved
jenkins-bot: Verified
diff --git a/extension.json b/extension.json
index ba4f4ff..16369fe 100644
--- a/extension.json
+++ b/extension.json
@@ -179,6 +179,11 @@
"description": "The item ID of the 'range constraint'
item, which, when used in a 'property constraint' statement on a property,
indicates that the value of a given statement should be within a given range.",
"public": true
},
+ "WBQualityConstraintsDifferenceWithinRangeConstraintId": {
+ "value": "Q21510854",
+ "description": "The item ID of the 'difference within
range constraint' item, which, when used in a 'property constraint' statement
on a property, indicates that the difference value of a given statement and of
another given statement should be within a given range.",
+ "public": true
+ },
"WBQualityConstraintsClassId": {
"value": "P2308",
"description": "The property ID of the 'relation'
property (data type: item), which specifies the class/type of a 'type' or
'value type' constraint.",
@@ -228,6 +233,11 @@
"value": "P2311",
"description": "The property ID of the 'maximum date'
property (data type: point in time), which specifies the maximum date parameter
of a 'range' or 'diff within range' constraint.",
"public": true
+ },
+ "WBQualityConstraintsYearUnit": {
+ "value": "http://www.wikidata.org/entity/Q577",
+ "description": "The unit used for a quantity that
represents a difference between two dates, in years.",
+ "public": true
}
},
"manifest_version": 2
diff --git a/includes/ConstraintCheck/Checker/DiffWithinRangeChecker.php
b/includes/ConstraintCheck/Checker/DiffWithinRangeChecker.php
index b53a9cb..edd2cfc 100644
--- a/includes/ConstraintCheck/Checker/DiffWithinRangeChecker.php
+++ b/includes/ConstraintCheck/Checker/DiffWithinRangeChecker.php
@@ -7,7 +7,7 @@
use Wikibase\DataModel\Statement\StatementListProvider;
use WikibaseQuality\ConstraintReport\Constraint;
use WikibaseQuality\ConstraintReport\ConstraintCheck\ConstraintChecker;
-use
WikibaseQuality\ConstraintReport\ConstraintCheck\Helper\ConstraintParameterParser;
+use
WikibaseQuality\ConstraintReport\ConstraintCheck\Helper\ConstraintStatementParameterParser;
use WikibaseQuality\ConstraintReport\ConstraintCheck\Result\CheckResult;
use WikibaseQuality\ConstraintReport\ConstraintCheck\Helper\RangeCheckerHelper;
use WikibaseQuality\ConstraintReport\ConstraintParameterRenderer;
@@ -21,7 +21,7 @@
class DiffWithinRangeChecker implements ConstraintChecker {
/**
- * @var ConstraintParameterParser
+ * @var ConstraintStatementParameterParser
*/
private $constraintParameterParser;
@@ -36,16 +36,16 @@
private $constraintParameterRenderer;
/**
- * @param ConstraintParameterParser $helper
+ * @param ConstraintStatementParameterParser $constraintParameterParser
* @param RangeCheckerHelper $rangeCheckerHelper
* @param ConstraintParameterRenderer $constraintParameterRenderer
*/
public function __construct(
- ConstraintParameterParser $helper,
+ ConstraintStatementParameterParser $constraintParameterParser,
RangeCheckerHelper $rangeCheckerHelper,
ConstraintParameterRenderer $constraintParameterRenderer
) {
- $this->constraintParameterParser = $helper;
+ $this->constraintParameterParser = $constraintParameterParser;
$this->rangeCheckerHelper = $rangeCheckerHelper;
$this->constraintParameterRenderer =
$constraintParameterRenderer;
}
@@ -62,11 +62,6 @@
public function checkConstraint( Statement $statement, Constraint
$constraint, EntityDocument $entity ) {
$parameters = [];
$constraintParameters = $constraint->getConstraintParameters();
- $property = false;
- if ( array_key_exists( 'property', $constraintParameters ) ) {
- $property = strtoupper(
$constraintParameters['property'] ); // FIXME strtoupper should not be
necessary, remove once constraints are imported from statements
- $parameters['property'] =
$this->constraintParameterParser->parseSingleParameter( $property );
- }
if ( array_key_exists( 'constraint_status',
$constraintParameters ) ) {
$parameters['constraint_status'] =
$this->constraintParameterParser->parseSingleParameter(
$constraintParameters['constraint_status'], true );
@@ -85,33 +80,26 @@
$dataValue = $mainSnak->getDataValue();
- /*
- * error handling:
- * type of $dataValue for properties with 'Diff within range'
constraint has to be 'quantity' or 'time' (also 'number' and 'decimal' could
work)
- * parameters $property, $minimum_quantity and
$maximum_quantity must not be null
- */
- if ( $dataValue->getType() === 'quantity' ||
$dataValue->getType() === 'time' ) {
- if ( $property && array_key_exists( 'minimum_quantity',
$constraintParameters ) && array_key_exists( 'maximum_quantity',
$constraintParameters ) ) {
- $min =
$constraintParameters['minimum_quantity'];
- $max =
$constraintParameters['maximum_quantity'];
- $parameters['minimum_quantity'] =
$this->constraintParameterParser->parseSingleParameter(
$constraintParameters['minimum_quantity'], true );
- $parameters['maximum_quantity'] =
$this->constraintParameterParser->parseSingleParameter(
$constraintParameters['maximum_quantity'], true );
- } else {
- $message = wfMessage(
'wbqc-violation-message-parameters-needed-3' )
- ->params(
$constraint->getConstraintTypeName(), 'property', 'minimum_quantity',
'maximum_quantity' )
- ->escaped();
- }
- } else {
- $message = wfMessage(
"wbqc-violation-message-value-needed-of-types-2" )->params(
$constraint->getConstraintTypeName(), 'quantity', 'time' )->escaped();
+ list( $min, $max ) =
$this->constraintParameterParser->parseRangeParameter(
+ $constraintParameters,
+ $constraint->getConstraintTypeName(),
+ 'quantity'
+ );
+ $property =
$this->constraintParameterParser->parsePropertyParameter(
$constraintParameters, $constraint->getConstraintTypeName() );
+
+ $parameterKey = $dataValue->getType() === 'quantity' ?
'quantity' : 'date';
+ if ( $min !== null ) {
+ $parameters['minimum_' . $parameterKey] = [ $min ];
}
- if ( isset( $message ) ) {
- return new CheckResult( $entity->getId(), $statement,
$constraint->getConstraintTypeQid(), $constraint->getConstraintId(),
$parameters, CheckResult::STATUS_VIOLATION, $message );
+ if ( $max !== null ) {
+ $parameters['maximum_' . $parameterKey] = [ $max ];
}
+ $parameter['property'] = [ $property ];
// checks only the first occurrence of the referenced property
(this constraint implies a single value constraint on that property)
/** @var Statement $otherStatement */
foreach ( $entity->getStatements() as $otherStatement ) {
- if ( $property ===
$otherStatement->getPropertyId()->getSerialization() ) {
+ if ( $property->equals(
$otherStatement->getPropertyId() ) ) {
$otherMainSnak = $otherStatement->getMainSnak();
/*
@@ -134,17 +122,18 @@
if ( $otherMainSnak->getDataValue()->getType()
=== $dataValue->getType() && $otherMainSnak->getType() === 'value' ) {
$diff =
$this->rangeCheckerHelper->getDifference( $dataValue,
$otherMainSnak->getDataValue() );
- if ( $diff < $min || $diff > $max ) {
- $message = wfMessage(
'wbqc-violation-message-diff-within-range' );
- $message->rawParams(
-
$this->constraintParameterRenderer->formatEntityId( $statement->getPropertyId()
),
-
$this->constraintParameterRenderer->formatDataValue( $mainSnak->getDataValue()
),
-
$this->constraintParameterRenderer->formatEntityId(
$otherStatement->getPropertyId() ),
-
$this->constraintParameterRenderer->formatDataValue(
$otherMainSnak->getDataValue() )
- );
- // TODO once we import
constraints from statements, $min and $max here will also be DataValues
- $message->numParams( $min, $max
);
- $message = $message->escaped();
+ if (
$this->rangeCheckerHelper->getComparison( $min, $diff ) > 0 ||
+
$this->rangeCheckerHelper->getComparison( $diff, $max ) > 0 ) {
+ $message = wfMessage(
'wbqc-violation-message-diff-within-range' )
+ ->rawParams(
+
$this->constraintParameterRenderer->formatEntityId( $statement->getPropertyId()
),
+
$this->constraintParameterRenderer->formatDataValue( $mainSnak->getDataValue()
),
+
$this->constraintParameterRenderer->formatEntityId(
$otherStatement->getPropertyId() ),
+
$this->constraintParameterRenderer->formatDataValue(
$otherMainSnak->getDataValue() ),
+ $min !== null ?
$this->constraintParameterRenderer->formatDataValue( $min ) : '−∞',
+ $max !== null ?
$this->constraintParameterRenderer->formatDataValue( $max ) : '∞'
+ )
+ ->escaped();
$status =
CheckResult::STATUS_VIOLATION;
} else {
$message = '';
diff --git a/includes/ConstraintCheck/Helper/RangeCheckerHelper.php
b/includes/ConstraintCheck/Helper/RangeCheckerHelper.php
index f76f8a7..0de593a 100644
--- a/includes/ConstraintCheck/Helper/RangeCheckerHelper.php
+++ b/includes/ConstraintCheck/Helper/RangeCheckerHelper.php
@@ -2,6 +2,7 @@
namespace WikibaseQuality\ConstraintReport\ConstraintCheck\Helper;
+use Config;
use DataValues\DataValue;
use DataValues\QuantityValue;
use DataValues\TimeValue;
@@ -21,6 +22,11 @@
class RangeCheckerHelper {
/**
+ * @var Config
+ */
+ private $config;
+
+ /**
* @var ValueParser
*/
private $timeParser;
@@ -30,7 +36,8 @@
*/
private $timeCalculator;
- public function __construct() {
+ public function __construct( Config $config ) {
+ $this->config = $config;
$this->timeParser = ( new TimeParserFactory()
)->getTimeParser();
$this->timeCalculator = new TimeValueCalculator();
}
@@ -95,11 +102,13 @@
* @param TimeValue|QuantityValue|UnboundedQuantityValue $subtrahend
*
* @throws InvalidArgumentException if the values do not both have the
same, supported data value type
- * @return float
+ * @return UnboundedQuantityValue
*/
public function getDifference( DataValue $minuend, DataValue
$subtrahend ) {
if ( $minuend->getType() === 'time' && $subtrahend->getType()
=== 'time' ) {
// difference in years
+ // TODO calculate difference in days once we no longer
import constraints from statements
+ // (then the range for the endpoints will also have
units and we can convert as needed)
if ( !preg_match( '/^([-+]\d{1,16})-/',
$minuend->getTime(), $minuendMatches ) ||
!preg_match( '/^([-+]\d{1,16})-/',
$subtrahend->getTime(), $subtrahendMatches ) ) {
throw new InvalidArgumentException(
'TimeValue::getTime() did not match expected format' );
@@ -112,11 +121,13 @@
} elseif ( $minuendYear < 0.0 && $subtrahendYear > 0.0
) {
$diff += 1.0; // there is no year 0, remove it
from negative difference
}
- return $diff;
+ $unit = $this->config->get(
'WBQualityConstraintsYearUnit' ); // TODO unit for days
+ return UnboundedQuantityValue::newFromNumber( $diff,
$unit );
}
if ( $minuend->getType() === 'quantity' &&
$subtrahend->getType() === 'quantity' ) {
// TODO normalize values: T164371
- return (float)$minuend->getAmount()->getValue() -
(float)$subtrahend->getAmount()->getValue();
+ $diff = (float)$minuend->getAmount()->getValue() -
(float)$subtrahend->getAmount()->getValue();
+ return UnboundedQuantityValue::newFromNumber( $diff,
$minuend->getUnit() );
}
throw new InvalidArgumentException( 'Unsupported or different
data value types' );
diff --git a/includes/ConstraintReportFactory.php
b/includes/ConstraintReportFactory.php
index 559d24e..9537b96 100644
--- a/includes/ConstraintReportFactory.php
+++ b/includes/ConstraintReportFactory.php
@@ -179,7 +179,7 @@
if ( $this->constraintCheckerMap === null ) {
$constraintParameterParser = new
ConstraintParameterParser();
$connectionCheckerHelper = new
ConnectionCheckerHelper();
- $rangeCheckerHelper = new RangeCheckerHelper();
+ $rangeCheckerHelper = new RangeCheckerHelper(
$this->config );
if ( $this->config->get(
'WBQualityConstraintsSparqlEndpoint' ) !== '' ) {
$sparqlHelper = new SparqlHelper(
$this->config,
@@ -208,7 +208,7 @@
'Qualifiers' => new QualifiersChecker(
$this->constraintStatementParameterParser, $this->constraintParameterRenderer ),
'Mandatory qualifiers' => new
MandatoryQualifiersChecker( $this->constraintStatementParameterParser,
$this->constraintParameterRenderer ),
'Range' => new RangeChecker(
$this->constraintStatementParameterParser, $rangeCheckerHelper,
$this->constraintParameterRenderer ),
- 'Diff within range' => new
DiffWithinRangeChecker( $constraintParameterParser, $rangeCheckerHelper,
$this->constraintParameterRenderer ),
+ 'Diff within range' => new
DiffWithinRangeChecker( $this->constraintStatementParameterParser,
$rangeCheckerHelper, $this->constraintParameterRenderer ),
'Type' => new TypeChecker( $this->lookup,
$this->constraintStatementParameterParser, $typeCheckerHelper, $this->config ),
'Value type' => new ValueTypeChecker(
$this->lookup, $this->constraintStatementParameterParser, $typeCheckerHelper,
$this->config ),
'Single value' => new SingleValueChecker(),
@@ -236,6 +236,7 @@
$this->config->get(
'WBQualityConstraintsMandatoryQualifierConstraintId' ) =>
$this->constraintCheckerMap['Mandatory qualifiers'],
$this->config->get(
'WBQualityConstraintsAllowedQualifiersConstraintId' ) =>
$this->constraintCheckerMap['Qualifiers'],
$this->config->get(
'WBQualityConstraintsRangeConstraintId' ) =>
$this->constraintCheckerMap['Range'],
+ $this->config->get(
'WBQualityConstraintsDifferenceWithinRangeConstraintId' ) =>
$this->constraintCheckerMap['Diff within range'],
];
}
diff --git a/tests/phpunit/Checker/RangeChecker/DiffWithinRangeCheckerTest.php
b/tests/phpunit/Checker/RangeChecker/DiffWithinRangeCheckerTest.php
index 75ef87a..6d97b7e 100644
--- a/tests/phpunit/Checker/RangeChecker/DiffWithinRangeCheckerTest.php
+++ b/tests/phpunit/Checker/RangeChecker/DiffWithinRangeCheckerTest.php
@@ -7,6 +7,7 @@
use Wikibase\DataModel\Snak\PropertyValueSnak;
use DataValues\StringValue;
use DataValues\TimeValue;
+use DataValues\UnboundedQuantityValue;
use Wikibase\DataModel\Entity\ItemId;
use Wikibase\DataModel\Entity\PropertyId;
use WikibaseQuality\ConstraintReport\Constraint;
@@ -33,11 +34,6 @@
use ConstraintParameters, ResultAssertions;
/**
- * @var ConstraintParameterParser
- */
- private $helper;
-
- /**
* @var JsonFileEntityLookup
*/
private $lookup;
@@ -54,12 +50,11 @@
protected function setUp() {
parent::setUp();
- $this->helper = new ConstraintParameterParser();
$this->lookup = new JsonFileEntityLookup( __DIR__ );
$this->timeValue = new TimeValue(
'+00000001970-01-01T00:00:00Z', 0, 0, 0, 11,
'http://www.wikidata.org/entity/Q1985727' );
$this->checker = new DiffWithinRangeChecker(
- $this->helper,
- new RangeCheckerHelper(),
+ $this->getConstraintParameterParser(),
+ new RangeCheckerHelper( $this->getDefaultConfig() ),
$this->getConstraintParameterRenderer()
);
}
@@ -103,26 +98,6 @@
$this->assertViolation( $checkResult,
'wbqc-violation-message-diff-within-range' );
}
- public function testDiffWithinRangeConstraintWithoutProperty() {
- $entity = $this->lookup->getEntity( new ItemId( 'Q1' ) );
- $constraintParameters = [];
- $statement = new Statement( new PropertyValueSnak( new
PropertyId( 'P1457' ), $this->timeValue ) );
-
- $checkResult = $this->checker->checkConstraint( $statement,
$this->getConstraintMock( $constraintParameters ), $entity );
- $this->assertViolation( $checkResult,
'wbqc-violation-message-parameters-needed-3' );
- }
-
- public function testDiffWithinRangeConstraintWrongType() {
- $entity = $this->lookup->getEntity( new ItemId( 'Q1' ) );
- $constraintParameters = [
- 'property' => 'P1'
- ];
- $statement = new Statement( new PropertyValueSnak( new
PropertyId( 'P1457' ), new StringValue( '1.1.1970' ) ) );
-
- $checkResult = $this->checker->checkConstraint( $statement,
$this->getConstraintMock( $constraintParameters ), $entity );
- $this->assertViolation( $checkResult,
'wbqc-violation-message-value-needed-of-type' );
- }
-
public function testDiffWithinRangeConstraintWrongTypeOfProperty() {
$entity = $this->lookup->getEntity( new ItemId( 'Q7' ) );
$constraintParameters = [
@@ -136,19 +111,6 @@
$this->assertViolation( $checkResult,
'wbqc-violation-message-diff-within-range-must-have-equal-types' );
}
- public function testDiffWithinRangeConstraintWithoutBaseProperty() {
- $entity = $this->lookup->getEntity( new ItemId( 'Q4' ) );
- $constraintParameters = [
- 'property' => 'P1000',
- 'minimum_quantity' => 0,
- 'maximum_quantity' => 150
- ];
- $statement = new Statement( new PropertyValueSnak( new
PropertyId( 'P570' ), $this->timeValue ) );
-
- $checkResult = $this->checker->checkConstraint( $statement,
$this->getConstraintMock( $constraintParameters ), $entity );
- $this->assertViolation( $checkResult,
'wbqc-violation-message-diff-within-range-property-must-exist' );
- }
-
public function testDiffWithinRangeConstraintNoValueSnak() {
$entity = $this->lookup->getEntity( new ItemId( 'Q4' ) );
$statement = new Statement( new PropertyNoValueSnak( 1 ) );
@@ -161,6 +123,30 @@
$this->assertViolation( $checkResult,
'wbqc-violation-message-value-needed' );
}
+ public function testDiffWithinRangeConstraintHalfOpenWithinRange() {
+ $entity = $this->lookup->getEntity( new ItemId( 'Q4' ) );
+ $constraintParameters = array_merge(
+ $this->propertyParameter( 'P569' ),
+ $this->rangeParameter( 'quantity',
UnboundedQuantityValue::newFromNumber( 0 ), null )
+ );
+ $statement = new Statement( new PropertyValueSnak( new
PropertyId( 'P570' ), $this->timeValue ) );
+
+ $checkResult = $this->checker->checkConstraint( $statement,
$this->getConstraintMock( $constraintParameters ), $entity );
+ $this->assertCompliance( $checkResult );
+ }
+
+ public function testDiffWithinRangeConstraintHalfOpenTooSmall() {
+ $entity = $this->lookup->getEntity( new ItemId( 'Q4' ) );
+ $constraintParameters = array_merge(
+ $this->propertyParameter( 'P569' ),
+ $this->rangeParameter( 'quantity',
UnboundedQuantityValue::newFromNumber( 100 ), null )
+ );
+ $statement = new Statement( new PropertyValueSnak( new
PropertyId( 'P570' ), $this->timeValue ) );
+
+ $checkResult = $this->checker->checkConstraint( $statement,
$this->getConstraintMock( $constraintParameters ), $entity );
+ $this->assertViolation( $checkResult,
'wbqc-violation-message-diff-within-range' );
+ }
+
/**
* @param string[] $parameters
*
diff --git a/tests/phpunit/Checker/RangeChecker/RangeCheckerHelperTest.php
b/tests/phpunit/Checker/RangeChecker/RangeCheckerHelperTest.php
index 705af1b..b419d50 100644
--- a/tests/phpunit/Checker/RangeChecker/RangeCheckerHelperTest.php
+++ b/tests/phpunit/Checker/RangeChecker/RangeCheckerHelperTest.php
@@ -11,6 +11,7 @@
use InvalidArgumentException;
use PHPUnit_Framework_TestCase;
use WikibaseQuality\ConstraintReport\ConstraintCheck\Helper\RangeCheckerHelper;
+use WikibaseQuality\ConstraintReport\Tests\DefaultConfig;
/**
* @covers
\WikibaseQuality\ConstraintReport\ConstraintCheck\Helper\RangeCheckerHelper
@@ -25,12 +26,14 @@
*/
class RangeCheckerHelperTest extends PHPUnit_Framework_TestCase {
+ use DefaultConfig;
+
/**
* @dataProvider getComparisonProvider
*/
public function testGetComparison( $expected, DataValue $lhs, DataValue
$rhs ) {
$this->assertContains( $expected, [ -1, 0, 1 ], '$expected must
be -1, 0, or 1' );
- $rangeCheckHelper = new RangeCheckerHelper();
+ $rangeCheckHelper = new RangeCheckerHelper(
$this->getDefaultConfig() );
$actual = $rangeCheckHelper->getComparison( $lhs, $rhs );
switch ( $expected ) {
case -1:
@@ -65,8 +68,8 @@
* @dataProvider getDifferenceProvider
*/
public function testGetDifference( $expected, DataValue $minuend,
DataValue $subtrahend ) {
- $rangeCheckHelper = new RangeCheckerHelper();
- $actual = $rangeCheckHelper->getDifference( $minuend,
$subtrahend );
+ $rangeCheckHelper = new RangeCheckerHelper(
$this->getDefaultConfig() );
+ $actual = $rangeCheckHelper->getDifference( $minuend,
$subtrahend )->getAmount()->getValueFloat();
$this->assertSame( $expected, $actual );
}
@@ -91,7 +94,7 @@
* @expectedException InvalidArgumentException
*/
public function
testGetComparison_unsupportedDataValueTypeThrowsException() {
- $rangeCheckHelper = new RangeCheckerHelper();
+ $rangeCheckHelper = new RangeCheckerHelper(
$this->getDefaultConfig() );
$rangeCheckHelper->getComparison( new StringValue( 'kittens' ),
new StringValue( 'puppies' ) );
}
@@ -99,17 +102,17 @@
* @expectedException InvalidArgumentException
*/
public function
testGetComparison_differingDataValueTypeThrowsException() {
- $rangeCheckHelper = new RangeCheckerHelper();
+ $rangeCheckHelper = new RangeCheckerHelper(
$this->getDefaultConfig() );
$rangeCheckHelper->getComparison( $this->getQuantityValue( 42.0
), $this->getTimeValue( 1970 ) );
}
public function testParseTime_year() {
- $rangeCheckHelper = new RangeCheckerHelper();
+ $rangeCheckHelper = new RangeCheckerHelper(
$this->getDefaultConfig() );
$this->assertSame( '+1970-00-00T00:00:00Z',
$rangeCheckHelper->parseTime( '1970' )->getTime() );
}
public function testParseTime_yearMonthDay() {
- $rangeCheckHelper = new RangeCheckerHelper();
+ $rangeCheckHelper = new RangeCheckerHelper(
$this->getDefaultConfig() );
$this->assertSame( '+1970-01-01T00:00:00Z',
$rangeCheckHelper->parseTime( '1970-01-01' )->getTime() );
}
diff --git a/tests/phpunit/Checker/RangeChecker/RangeCheckerTest.php
b/tests/phpunit/Checker/RangeChecker/RangeCheckerTest.php
index 0a77312..374efd7 100644
--- a/tests/phpunit/Checker/RangeChecker/RangeCheckerTest.php
+++ b/tests/phpunit/Checker/RangeChecker/RangeCheckerTest.php
@@ -58,7 +58,7 @@
$this->timeValue = new TimeValue(
'+00000001970-01-01T00:00:00Z', 0, 0, 0, 11,
'http://www.wikidata.org/entity/Q1985727' );
$this->checker = new RangeChecker(
$this->getConstraintParameterParser(),
- new RangeCheckerHelper(),
+ new RangeCheckerHelper( $this->getDefaultConfig() ),
$this->getConstraintParameterRenderer()
);
}
diff --git a/tests/phpunit/ConstraintParameters.php
b/tests/phpunit/ConstraintParameters.php
index 2313a1c..dd236c1 100644
--- a/tests/phpunit/ConstraintParameters.php
+++ b/tests/phpunit/ConstraintParameters.php
@@ -78,6 +78,22 @@
}
/**
+ * @param string $propertyId property ID serialization
+ * @return array
+ */
+ public function propertyParameter( $propertyId ) {
+ $propertyParameterId = $this->getDefaultConfig()->get(
'WBQualityConstraintsPropertyId' );
+ return [
+ $propertyParameterId => [
$this->getSnakSerializer()->serialize(
+ new PropertyValueSnak(
+ new PropertyId( $propertyParameterId ),
+ new EntityIdValue( new PropertyId(
$propertyId ) )
+ )
+ ) ]
+ ];
+ }
+
+ /**
* @param string[] $properties property ID serializations
* @return array
*/
--
To view, visit https://gerrit.wikimedia.org/r/360322
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I36772732a5239cb26dc92fdde479dd2ff73f3331
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/WikibaseQualityConstraints
Gerrit-Branch: master
Gerrit-Owner: Lucas Werkmeister (WMDE) <[email protected]>
Gerrit-Reviewer: Jonas Kress (WMDE) <[email protected]>
Gerrit-Reviewer: Lucas Werkmeister (WMDE) <[email protected]>
Gerrit-Reviewer: WMDE-leszek <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits