Lucas Werkmeister (WMDE) has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/382713 )
Change subject: Add UsedForValuesOnly to DelegatingConstraintCheckerTest
......................................................................
Add UsedForValuesOnly to DelegatingConstraintCheckerTest
DelegatingConstraintCheckerTest should contain at least one constraint
of every constraint type, to make sure that ConstraintReportFactory
isn’t missing any checkers when initializing the checker map.
The test is also refactored to remove the magic number of constraints
for P1 from three places where it was previously hard-coded, so that in
the future adding just an array entry is enough to add another
constraint type.
Change-Id: I7977221f86833147466da554fe930536567c02e6
---
M tests/phpunit/DelegatingConstraintCheckerTest.php
1 file changed, 215 insertions(+), 203 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseQualityConstraints
refs/changes/13/382713/1
diff --git a/tests/phpunit/DelegatingConstraintCheckerTest.php
b/tests/phpunit/DelegatingConstraintCheckerTest.php
index 12d3fb6..b518e5c 100644
--- a/tests/phpunit/DelegatingConstraintCheckerTest.php
+++ b/tests/phpunit/DelegatingConstraintCheckerTest.php
@@ -64,6 +64,12 @@
*/
private $lookup;
+ /**
+ * Number of constraints for P1.
+ * @var int
+ */
+ private $constraintCount;
+
protected function setUp() {
parent::setUp();
$this->lookup = new InMemoryEntityLookup();
@@ -112,207 +118,213 @@
*/
public function addDBData() {
$config = $this->getDefaultConfig();
-
- $this->db->delete(
- CONSTRAINT_TABLE,
- '*'
- );
-
- $this->db->insert(
- CONSTRAINT_TABLE,
+ $constraints = [
[
- [
- 'constraint_guid' =>
'P1$ecb8f617-90f1-4ef3-afab-f4bf3881ec28',
- 'pid' => 1,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'CommonsLink' ),
- 'constraint_parameters' => json_encode(
- $this->namespaceParameter(
'File' )
- )
- ],
- [
- 'constraint_guid' =>
'P10$0bdbe1cb-8afb-4d16-9fd0-c1d0a5b717ce',
- 'pid' => 10,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'CommonsLink' ),
- 'constraint_parameters' => json_encode(
array_merge(
- $this->namespaceParameter(
'File' ),
- $this->exceptionsParameter( [
'Q5' ] )
- ) )
- ],
- [
- 'constraint_guid' =>
'P11$01c56d1f-b3ce-4a1a-bef7-8c652f395eb2',
- 'pid' => 11,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'UsedAsQualifier' ),
- 'constraint_parameters' => json_encode(
[
- $this->getDefaultConfig()->get(
'WBQualityConstraintsExceptionToConstraintId' ) => [
- [ 'snaktype' =>
'novalue', 'property' => 'P2316' ]
- ]
- ] )
- ],
- [
- 'constraint_guid' =>
'P1$6ad9eb64-13fd-43a1-afc8-84857108bd59',
- 'pid' => 1,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'MandatoryQualifier' ),
- 'constraint_parameters' => json_encode(
- $this->propertyParameter( 'P2' )
- )
- ],
- [
- 'constraint_guid' =>
'P1$cfff6d73-320c-43c5-8582-e9cbb98e2ca2',
- 'pid' => 1,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'ConflictsWith' ),
- 'constraint_parameters' => json_encode(
- $this->propertyParameter( 'P2' )
- )
- ],
- [
- 'constraint_guid' =>
'P1$c81a981e-4eab-44c9-8aa2-62c63072902e',
- 'pid' => 1,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'Inverse' ),
- 'constraint_parameters' => json_encode(
- $this->propertyParameter( 'P2' )
- )
- ],
- [
- 'constraint_guid' =>
'P1$2040dee1-8c9d-45b7-ac01-2ce8046f578b',
- 'pid' => 1,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'AllowedQualifiers' ),
- 'constraint_parameters' => json_encode(
- $this->propertiesParameter( [
'P2', 'P3' ] )
- )
- ],
- [
- 'constraint_guid' =>
'P1$09a20b38-fe36-444b-b9ed-22eb46c3ea73',
- 'pid' => 1,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'DifferenceWithinRange' ),
- 'constraint_parameters' => json_encode(
array_merge(
- $this->propertyParameter( 'P2'
),
- $this->rangeParameter(
'quantity', 0, 150 )
- ) )
- ],
- [
- 'constraint_guid' =>
'P1$3dac547d-3faf-4198-9b9c-0ba1eae32752',
- 'pid' => 1,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'Format' ),
- 'constraint_parameters' => json_encode(
- $this->formatParameter( '[0-9]'
)
- )
- ],
- [
- 'constraint_guid' =>
'P1$cc5708c8-3ec8-4bf3-8931-409530e4d634',
- 'pid' => 1,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'MultiValue' ),
- 'constraint_parameters' => '{}'
- ],
- [
- 'constraint_guid' =>
'P1$021b2558-8e7c-4c2c-ba14-4596dc11536e',
- 'pid' => 1,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'DistinctValues' ),
- 'constraint_parameters' => '{}'
- ],
- [
- 'constraint_guid' =>
'P1$3ddc8c54-c056-425c-8745-d257004d585f',
- 'pid' => 1,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'SingleValue' ),
- 'constraint_parameters' => '{}'
- ],
- [
- 'constraint_guid' =>
'P1$dc4464ed-42a5-47f6-b725-04b1d9d1dfc6',
- 'pid' => 1,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'Symmetric' ),
- 'constraint_parameters' => '{}'
- ],
- [
- 'constraint_guid' =>
'P1$713ec92d-cd08-413d-b4dc-8e6eeb8c7861',
- 'pid' => 1,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'UsedAsQualifier' ),
- 'constraint_parameters' => '{}'
- ],
- [
- 'constraint_guid' =>
'P1$a083d339-7bd6-4737-a987-b55ae8a1a5f3',
- 'pid' => 1,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'OneOf' ),
- 'constraint_parameters' => json_encode(
- $this->itemsParameter( [ 'Q2',
'Q3' ] )
- )
- ],
- [
- 'constraint_guid' =>
'P1$b8587fb1-7315-46ba-9d04-07f0e9af857d',
- 'pid' => 1,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'Range' ),
- 'constraint_parameters' => json_encode(
- $this->rangeParameter( 'time',
'0', '2015' )
- )
- ],
- [
- 'constraint_guid' =>
'P1$83ee554c-41fd-4bfa-ae9b-960d0eee2fa4',
- 'pid' => 1,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'ValueRequiresClaim' ),
- 'constraint_parameters' => json_encode(
array_merge(
- $this->propertyParameter( 'P2'
),
- $this->itemsParameter( [ 'Q2' ]
)
- ) )
- ],
- [
- 'constraint_guid' =>
'P1$370a45b5-b007-455d-b5fa-03b90c629fe5',
- 'pid' => 1,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'ItemRequiresClaim' ),
- 'constraint_parameters' => json_encode(
array_merge(
- $this->propertyParameter( 'P2'
),
- $this->itemsParameter( [ 'Q2',
'Q3' ] )
- ) )
- ],
- [
- 'constraint_guid' =>
'P1$831d9d5d-ed77-48f2-8433-fb80a9ef3aad',
- 'pid' => 1,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'Type' ),
- 'constraint_parameters' => json_encode(
array_merge(
- $this->relationParameter(
'instance' ),
- $this->classParameter( [ 'Q2',
'Q3' ] )
- ) )
- ],
- [
- 'constraint_guid' =>
'P1$fe667c64-be46-4521-a54d-8a895b6005b0',
- 'pid' => 1,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'ValueType' ),
- 'constraint_parameters' => json_encode(
array_merge(
- $this->relationParameter(
'instance' ),
- $this->classParameter( [ 'Q2',
'Q3' ] )
- ) )
- ],
- [
- 'constraint_guid' =>
'P3$0a011ed8-1e2b-470c-a306-fb8ea6953779',
- 'pid' => 3,
- 'constraint_type_qid' => 'Is not
inside',
- 'constraint_parameters' => '{}'
- ],
- [
- 'constraint_guid' =>
'P6$ad792000-6a12-413d-9fe5-11d2467b7a92',
- 'pid' => 6,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'UsedAsQualifier' ),
- 'constraint_parameters' => json_encode(
- $this->statusParameter(
'mandatory' )
- )
- ],
- [
- 'constraint_guid' =>
'P7$a3f746e7-66a0-46fd-96ab-6ff6638332a4',
- 'pid' => 7,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'UsedAsQualifier' ),
- 'constraint_parameters' => '{}'
- ],
- [
- 'constraint_guid' =>
'P8$34c8af8e-bb50-4458-994b-f355ff899fff',
- 'pid' => 8,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'UsedAsQualifier' ),
- 'constraint_parameters' =>
'{"@error":{"toolong":true}}'
- ],
- [
- 'constraint_guid' =>
'P9$43053ee8-79da-4326-a2ac-f85098291db3',
- 'pid' => 9,
- 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'UsedAsQualifier' ),
- 'constraint_parameters' =>
'{"P2316":[{"snaktype":"novalue","property":"P2316"}],"P2303":[{"snaktype":"novalue","property":"P2316"}]}'
- ],
- ]
- );
+ 'constraint_guid' =>
'P1$ecb8f617-90f1-4ef3-afab-f4bf3881ec28',
+ 'pid' => 1,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'CommonsLink' ),
+ 'constraint_parameters' => json_encode(
+ $this->namespaceParameter( 'File' )
+ )
+ ],
+ [
+ 'constraint_guid' =>
'P10$0bdbe1cb-8afb-4d16-9fd0-c1d0a5b717ce',
+ 'pid' => 10,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'CommonsLink' ),
+ 'constraint_parameters' => json_encode(
array_merge(
+ $this->namespaceParameter( 'File' ),
+ $this->exceptionsParameter( [ 'Q5' ] )
+ ) )
+ ],
+ [
+ 'constraint_guid' =>
'P11$01c56d1f-b3ce-4a1a-bef7-8c652f395eb2',
+ 'pid' => 11,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'UsedAsQualifier' ),
+ 'constraint_parameters' => json_encode( [
+ $this->getDefaultConfig()->get(
'WBQualityConstraintsExceptionToConstraintId' ) => [
+ [ 'snaktype' => 'novalue',
'property' => 'P2316' ]
+ ]
+ ] )
+ ],
+ [
+ 'constraint_guid' =>
'P1$6ad9eb64-13fd-43a1-afc8-84857108bd59',
+ 'pid' => 1,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'MandatoryQualifier' ),
+ 'constraint_parameters' => json_encode(
+ $this->propertyParameter( 'P2' )
+ )
+ ],
+ [
+ 'constraint_guid' =>
'P1$cfff6d73-320c-43c5-8582-e9cbb98e2ca2',
+ 'pid' => 1,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'ConflictsWith' ),
+ 'constraint_parameters' => json_encode(
+ $this->propertyParameter( 'P2' )
+ )
+ ],
+ [
+ 'constraint_guid' =>
'P1$c81a981e-4eab-44c9-8aa2-62c63072902e',
+ 'pid' => 1,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'Inverse' ),
+ 'constraint_parameters' => json_encode(
+ $this->propertyParameter( 'P2' )
+ )
+ ],
+ [
+ 'constraint_guid' =>
'P1$2040dee1-8c9d-45b7-ac01-2ce8046f578b',
+ 'pid' => 1,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'AllowedQualifiers' ),
+ 'constraint_parameters' => json_encode(
+ $this->propertiesParameter( [ 'P2',
'P3' ] )
+ )
+ ],
+ [
+ 'constraint_guid' =>
'P1$09a20b38-fe36-444b-b9ed-22eb46c3ea73',
+ 'pid' => 1,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'DifferenceWithinRange' ),
+ 'constraint_parameters' => json_encode(
array_merge(
+ $this->propertyParameter( 'P2' ),
+ $this->rangeParameter( 'quantity', 0,
150 )
+ ) )
+ ],
+ [
+ 'constraint_guid' =>
'P1$3dac547d-3faf-4198-9b9c-0ba1eae32752',
+ 'pid' => 1,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'Format' ),
+ 'constraint_parameters' => json_encode(
+ $this->formatParameter( '[0-9]' )
+ )
+ ],
+ [
+ 'constraint_guid' =>
'P1$cc5708c8-3ec8-4bf3-8931-409530e4d634',
+ 'pid' => 1,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'MultiValue' ),
+ 'constraint_parameters' => '{}'
+ ],
+ [
+ 'constraint_guid' =>
'P1$021b2558-8e7c-4c2c-ba14-4596dc11536e',
+ 'pid' => 1,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'DistinctValues' ),
+ 'constraint_parameters' => '{}'
+ ],
+ [
+ 'constraint_guid' =>
'P1$3ddc8c54-c056-425c-8745-d257004d585f',
+ 'pid' => 1,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'SingleValue' ),
+ 'constraint_parameters' => '{}'
+ ],
+ [
+ 'constraint_guid' =>
'P1$dc4464ed-42a5-47f6-b725-04b1d9d1dfc6',
+ 'pid' => 1,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'Symmetric' ),
+ 'constraint_parameters' => '{}'
+ ],
+ [
+ 'constraint_guid' =>
'P1$713ec92d-cd08-413d-b4dc-8e6eeb8c7861',
+ 'pid' => 1,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'UsedAsQualifier' ),
+ 'constraint_parameters' => '{}'
+ ],
+ [
+ 'constraint_guid' =>
'P1$a083d339-7bd6-4737-a987-b55ae8a1a5f3',
+ 'pid' => 1,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'OneOf' ),
+ 'constraint_parameters' => json_encode(
+ $this->itemsParameter( [ 'Q2', 'Q3' ] )
+ )
+ ],
+ [
+ 'constraint_guid' =>
'P1$b8587fb1-7315-46ba-9d04-07f0e9af857d',
+ 'pid' => 1,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'Range' ),
+ 'constraint_parameters' => json_encode(
+ $this->rangeParameter( 'time', '0',
'2015' )
+ )
+ ],
+ [
+ 'constraint_guid' =>
'P1$83ee554c-41fd-4bfa-ae9b-960d0eee2fa4',
+ 'pid' => 1,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'ValueRequiresClaim' ),
+ 'constraint_parameters' => json_encode(
array_merge(
+ $this->propertyParameter( 'P2' ),
+ $this->itemsParameter( [ 'Q2' ] )
+ ) )
+ ],
+ [
+ 'constraint_guid' =>
'P1$370a45b5-b007-455d-b5fa-03b90c629fe5',
+ 'pid' => 1,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'ItemRequiresClaim' ),
+ 'constraint_parameters' => json_encode(
array_merge(
+ $this->propertyParameter( 'P2' ),
+ $this->itemsParameter( [ 'Q2', 'Q3' ] )
+ ) )
+ ],
+ [
+ 'constraint_guid' =>
'P1$831d9d5d-ed77-48f2-8433-fb80a9ef3aad',
+ 'pid' => 1,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'Type' ),
+ 'constraint_parameters' => json_encode(
array_merge(
+ $this->relationParameter( 'instance' ),
+ $this->classParameter( [ 'Q2', 'Q3' ] )
+ ) )
+ ],
+ [
+ 'constraint_guid' =>
'P1$fe667c64-be46-4521-a54d-8a895b6005b0',
+ 'pid' => 1,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'ValueType' ),
+ 'constraint_parameters' => json_encode(
array_merge(
+ $this->relationParameter( 'instance' ),
+ $this->classParameter( [ 'Q2', 'Q3' ] )
+ ) )
+ ],
+ [
+ 'constraint_guid' =>
'P3$0a011ed8-1e2b-470c-a306-fb8ea6953779',
+ 'pid' => 3,
+ 'constraint_type_qid' => 'Is not inside',
+ 'constraint_parameters' => '{}'
+ ],
+ [
+ 'constraint_guid' =>
'P6$ad792000-6a12-413d-9fe5-11d2467b7a92',
+ 'pid' => 6,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'UsedAsQualifier' ),
+ 'constraint_parameters' => json_encode(
+ $this->statusParameter( 'mandatory' )
+ )
+ ],
+ [
+ 'constraint_guid' =>
'P7$a3f746e7-66a0-46fd-96ab-6ff6638332a4',
+ 'pid' => 7,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'UsedAsQualifier' ),
+ 'constraint_parameters' => '{}'
+ ],
+ [
+ 'constraint_guid' =>
'P8$34c8af8e-bb50-4458-994b-f355ff899fff',
+ 'pid' => 8,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'UsedAsQualifier' ),
+ 'constraint_parameters' =>
'{"@error":{"toolong":true}}'
+ ],
+ [
+ 'constraint_guid' =>
'P9$43053ee8-79da-4326-a2ac-f85098291db3',
+ 'pid' => 9,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'UsedAsQualifier' ),
+ 'constraint_parameters' =>
'{"P2316":[{"snaktype":"novalue","property":"P2316"}],"P2303":[{"snaktype":"novalue","property":"P2316"}]}'
+ ],
+ [
+ 'constraint_guid' =>
'P1$a1b1f3d8-6215-4cb6-9edd-3af126ae134f',
+ 'pid' => 1,
+ 'constraint_type_qid' =>
$this->getConstraintTypeItemId( 'UsedForValuesOnly' ),
+ 'constraint_parameters' => '{}'
+ ],
+ ];
+ $this->constraintCount = count( array_filter(
+ $constraints,
+ function ( $constraint ) {
+ return $constraint['pid'] === 1;
+ }
+ ) );
+
+ $this->db->delete( CONSTRAINT_TABLE, '*' );
+ $this->db->insert( CONSTRAINT_TABLE, $constraints );
}
public function testCheckOnEntityId() {
@@ -326,7 +338,7 @@
$result =
$this->constraintChecker->checkAgainstConstraintsOnEntityId( $entity->getId() );
- $this->assertCount( 18, $result, 'Every constraint should be
represented by one result' );
+ $this->assertCount( $this->constraintCount, $result, 'Every
constraint should be represented by one result' );
foreach ( $result as $checkResult ) {
$this->assertNotSame( 'todo',
$checkResult->getStatus(), 'Constraints should not be unimplemented' );
}
@@ -463,7 +475,7 @@
$statement->getGuid()
);
- $this->assertCount( 18, $result, 'Every constraint should be
represented by one result' );
+ $this->assertCount( $this->constraintCount, $result, 'Every
constraint should be represented by one result' );
}
public function testCheckOnClaimIdEmptyResult() {
@@ -498,7 +510,7 @@
$entity->getId()
);
- $this->assertCount( 18, $result, 'Every constraint should be
represented by one result' );
+ $this->assertCount( $this->constraintCount, $result, 'Every
constraint should be represented by one result' );
foreach ( $result as $constraintGuid => $constraintResult ) {
$this->assertSame( [], $constraintResult, 'Constraint
should have no bad parameters' );
}
--
To view, visit https://gerrit.wikimedia.org/r/382713
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I7977221f86833147466da554fe930536567c02e6
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikibaseQualityConstraints
Gerrit-Branch: master
Gerrit-Owner: Lucas Werkmeister (WMDE) <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits