From b0e2d383bee9a8b22685f0cff6f62b4afd2b33ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thiemo=20M=C3=A4ttig?= Date: Tue, 25 Nov 2014 10:03:27 +0100 Subject: [PATCH] Add GUID to constructors --- src/Statement/Statement.php | 5 ++- tests/unit/Statement/StatementTest.php | 59 ++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/src/Statement/Statement.php b/src/Statement/Statement.php index 0ee6c4d4..a6163bd7 100644 --- a/src/Statement/Statement.php +++ b/src/Statement/Statement.php @@ -67,15 +67,18 @@ class Statement implements Hashable, Comparable, PropertyIdProvider { * @param Snak $mainSnak * @param Snaks|null $qualifiers * @param ReferenceList|null $references + * @param string|null $guid */ public function __construct( Snak $mainSnak, Snaks $qualifiers = null, - ReferenceList $references = null + ReferenceList $references = null, + $guid = null ) { $this->mainSnak = $mainSnak; $this->qualifiers = $qualifiers ?: new SnakList(); $this->references = $references ?: new ReferenceList(); + $this->setGuid( $guid ); } /** diff --git a/tests/unit/Statement/StatementTest.php b/tests/unit/Statement/StatementTest.php index 3bb31470..e6318fcd 100644 --- a/tests/unit/Statement/StatementTest.php +++ b/tests/unit/Statement/StatementTest.php @@ -3,13 +3,16 @@ namespace Wikibase\DataModel\Tests\Statement; use DataValues\StringValue; +use InvalidArgumentException; use Wikibase\DataModel\Entity\PropertyId; use Wikibase\DataModel\Reference; use Wikibase\DataModel\ReferenceList; use Wikibase\DataModel\Snak\PropertyNoValueSnak; use Wikibase\DataModel\Snak\PropertySomeValueSnak; use Wikibase\DataModel\Snak\PropertyValueSnak; +use Wikibase\DataModel\Snak\Snak; use Wikibase\DataModel\Snak\SnakList; +use Wikibase\DataModel\Snak\Snaks; use Wikibase\DataModel\Statement\Statement; /** @@ -24,6 +27,62 @@ */ class StatementTest extends \PHPUnit_Framework_TestCase { + public function testMinimalConstructor() { + $mainSnak = new PropertyNoValueSnak( 1 ); + $statement = new Statement( $mainSnak ); + $this->assertTrue( $mainSnak->equals( $statement->getMainSnak() ) ); + } + + /** + * @dataProvider validConstructorArgumentsProvider + */ + public function testConstructorWithValidArguments( + Snak $mainSnak, + Snaks $qualifiers = null, + ReferenceList $references = null, + $guid + ) { + $statement = new Statement( $mainSnak, $qualifiers, $references, $guid ); + $this->assertTrue( $statement->getMainSnak()->equals( $mainSnak ) ); + $this->assertTrue( $statement->getQualifiers()->equals( $qualifiers ?: new SnakList() ) ); + $this->assertTrue( $statement->getReferences()->equals( $references ?: new ReferenceList() ) ); + $this->assertSame( $guid, $statement->getGuid() ); + } + + public function validConstructorArgumentsProvider() { + $snak = new PropertyNoValueSnak( 1 ); + $qualifiers = new SnakList( array( $snak ) ); + $references = new ReferenceList( array( new Reference( array( $snak ) ) ) ); + + return array( + array( $snak, null, null, null ), + array( $snak, null, null, 'guid' ), + array( $snak, $qualifiers, $references, 'guid' ), + ); + } + + /** + * @dataProvider invalidConstructorArgumentsProvider + * @expectedException InvalidArgumentException + */ + public function testConstructorWithInvalidArguments( + $mainSnak, + $qualifiers, + $references, + $guid + ) { + new Statement( $mainSnak, $qualifiers, $references, $guid ); + } + + public function invalidConstructorArgumentsProvider() { + $snak = new PropertyNoValueSnak( 1 ); + + return array( + array( $snak, null, null, false ), + array( $snak, null, null, 1 ), + ); + } + /** * @dataProvider instanceProvider */