Lucas Werkmeister (WMDE) has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/406041 )

Change subject: Add tests for ItemIdSnakValue
......................................................................

Add tests for ItemIdSnakValue

Change-Id: Ic3e84dfe44983a80499049472e3b62047223f7c9
---
M src/ConstraintCheck/ItemIdSnakValue.php
A tests/phpunit/ItemIdSnakValueTest.php
2 files changed, 166 insertions(+), 0 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseQualityConstraints
 refs/changes/41/406041/1

diff --git a/src/ConstraintCheck/ItemIdSnakValue.php 
b/src/ConstraintCheck/ItemIdSnakValue.php
index 977dbb1..706e27f 100644
--- a/src/ConstraintCheck/ItemIdSnakValue.php
+++ b/src/ConstraintCheck/ItemIdSnakValue.php
@@ -130,6 +130,7 @@
         * Get the item ID contained in this {@link ItemIdSnakValue}.
         * Only valid if {@link isValue} is true.
         *
+        * @throws DomainException if this value does not contain an item ID
         * @return ItemId
         */
        public function getItemId() {
diff --git a/tests/phpunit/ItemIdSnakValueTest.php 
b/tests/phpunit/ItemIdSnakValueTest.php
new file mode 100644
index 0000000..fda55a1
--- /dev/null
+++ b/tests/phpunit/ItemIdSnakValueTest.php
@@ -0,0 +1,165 @@
+<?php
+
+namespace WikibaseQuality\ConstraintReport\Tests\ConstraintChecker;
+
+use DataValues\StringValue;
+use DomainException;
+use InvalidArgumentException;
+use Wikibase\DataModel\Entity\EntityIdValue;
+use Wikibase\DataModel\Entity\ItemId;
+use Wikibase\DataModel\Entity\PropertyId;
+use Wikibase\DataModel\Snak\PropertyNoValueSnak;
+use Wikibase\DataModel\Snak\PropertySomeValueSnak;
+use Wikibase\DataModel\Snak\PropertyValueSnak;
+use WikibaseQuality\ConstraintReport\ConstraintCheck\ItemIdSnakValue;
+
+/**
+ * @covers WikibaseQuality\ConstraintReport\ConstraintCheck\ItemIdSnakValue
+ *
+ * @group WikibaseQualityConstraints
+ *
+ * @author Lucas Werkmeister
+ * @license GNU GPL v2+
+ */
+class ItemIdSnakValueTest extends \PHPUnit_Framework_TestCase {
+
+       public function testFromItemId() {
+               $itemId = new ItemId( 'Q1' );
+
+               $value = ItemIdSnakValue::fromItemId( $itemId );
+
+               $this->assertTrue( $value->isValue() );
+               $this->assertFalse( $value->isSomeValue() );
+               $this->assertFalse( $value->isNoValue() );
+               $this->assertSame( $itemId, $value->getItemId() );
+       }
+
+       public function testSomeValue() {
+               $value = ItemIdSnakValue::someValue();
+
+               $this->assertFalse( $value->isValue() );
+               $this->assertTrue( $value->isSomeValue() );
+               $this->assertFalse( $value->isNoValue() );
+
+               $this->setExpectedException( DomainException::class );
+               $value->getItemId();
+       }
+
+       public function testNoValue() {
+               $value = ItemIdSnakValue::noValue();
+
+               $this->assertFalse( $value->isValue() );
+               $this->assertFalse( $value->isSomeValue() );
+               $this->assertTrue( $value->isNoValue() );
+
+               $this->setExpectedException( DomainException::class );
+               $value->getItemId();
+       }
+
+       public function testFromSnak_ItemId() {
+               $itemId = new ItemId( 'Q1' );
+               $snak = new PropertyValueSnak(
+                       new PropertyId( 'P100' ),
+                       new EntityIdValue( $itemId )
+               );
+
+               $value = ItemIdSnakValue::fromSnak( $snak );
+
+               $this->assertTrue( $value->isValue() );
+               $this->assertSame( $itemId, $value->getItemId() );
+       }
+
+       public function testFromSnak_PropertyId() {
+               $propertyId = new PropertyId( 'P1' );
+               $snak = new PropertyValueSnak(
+                       new PropertyId( 'P100' ),
+                       new EntityIdValue( $propertyId )
+               );
+
+               $this->setExpectedException( InvalidArgumentException::class );
+               $value = ItemIdSnakValue::fromSnak( $snak );
+       }
+
+       public function testFromSnak_String() {
+               $snak = new PropertyValueSnak(
+                       new PropertyId( 'P100' ),
+                       new StringValue( 'Q1' )
+               );
+
+               $this->setExpectedException( InvalidArgumentException::class );
+               $value = ItemIdSnakValue::fromSnak( $snak );
+       }
+
+       public function testFromSnak_SomeValue() {
+               $snak = new PropertySomeValueSnak( new PropertyId( 'P100' ) );
+
+               $value = ItemIdSnakValue::fromSnak( $snak );
+
+               $this->assertTrue( $value->isSomeValue() );
+       }
+
+       public function testFromSnak_NoValue() {
+               $snak = new PropertyNoValueSnak( new PropertyId( 'P100' ) );
+
+               $value = ItemIdSnakValue::fromSnak( $snak );
+
+               $this->assertTrue( $value->isNoValue() );
+       }
+
+       public function testMatchesSnak_ItemId() {
+               $itemId = new ItemId( 'Q1' );
+               $snak = new PropertyValueSnak(
+                       new PropertyId( 'P100' ),
+                       new EntityIdValue( $itemId )
+               );
+
+               $this->assertTrue( ItemIdSnakValue::fromItemId( $itemId 
)->matchesSnak( $snak ) );
+               $this->assertFalse( ItemIdSnakValue::someValue()->matchesSnak( 
$snak ) );
+               $this->assertFalse( ItemIdSnakValue::noValue()->matchesSnak( 
$snak ) );
+       }
+
+       public function testMatchesSnak_PropertyId() {
+               $itemId = new ItemId( 'Q1' );
+               $propertyId = new PropertyId( 'P1' );
+               $snak = new PropertyValueSnak(
+                       new PropertyId( 'P100' ),
+                       new EntityIdValue( $propertyId )
+               );
+
+               $this->assertFalse( ItemIdSnakValue::fromItemId( $itemId 
)->matchesSnak( $snak ) );
+               $this->assertFalse( ItemIdSnakValue::someValue()->matchesSnak( 
$snak ) );
+               $this->assertFalse( ItemIdSnakValue::noValue()->matchesSnak( 
$snak ) );
+       }
+
+       public function testMatchesSnak_String() {
+               $itemId = new ItemId( 'Q1' );
+               $propertyId = new PropertyId( 'P1' );
+               $snak = new PropertyValueSnak(
+                       new PropertyId( 'P100' ),
+                       new StringValue( 'Q1' )
+               );
+
+               $this->assertFalse( ItemIdSnakValue::fromItemId( $itemId 
)->matchesSnak( $snak ) );
+               $this->assertFalse( ItemIdSnakValue::someValue()->matchesSnak( 
$snak ) );
+               $this->assertFalse( ItemIdSnakValue::noValue()->matchesSnak( 
$snak ) );
+       }
+
+       public function testMatchesSnak_SomeValue() {
+               $itemId = new ItemId( 'Q1' );
+               $snak = new PropertySomeValueSnak( new PropertyId( 'P100' ) );
+
+               $this->assertFalse( ItemIdSnakValue::fromItemId( $itemId 
)->matchesSnak( $snak ) );
+               $this->assertTrue( ItemIdSnakValue::someValue()->matchesSnak( 
$snak ) );
+               $this->assertFalse( ItemIdSnakValue::noValue()->matchesSnak( 
$snak ) );
+       }
+
+       public function testMatchesSnak_NoValue() {
+               $itemId = new ItemId( 'Q1' );
+               $snak = new PropertyNoValueSnak( new PropertyId( 'P100' ) );
+
+               $this->assertFalse( ItemIdSnakValue::fromItemId( $itemId 
)->matchesSnak( $snak ) );
+               $this->assertFalse( ItemIdSnakValue::someValue()->matchesSnak( 
$snak ) );
+               $this->assertTrue( ItemIdSnakValue::noValue()->matchesSnak( 
$snak ) );
+       }
+
+}

-- 
To view, visit https://gerrit.wikimedia.org/r/406041
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic3e84dfe44983a80499049472e3b62047223f7c9
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikibaseQualityConstraints
Gerrit-Branch: master
Gerrit-Owner: Lucas Werkmeister (WMDE) <lucas.werkmeis...@wikimedia.de>

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

Reply via email to