Skip to content

Commit b0e2d38

Browse files
committed
Add GUID to constructors
1 parent f15ef93 commit b0e2d38

2 files changed

Lines changed: 63 additions & 1 deletion

File tree

src/Statement/Statement.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,15 +67,18 @@ class Statement implements Hashable, Comparable, PropertyIdProvider {
6767
* @param Snak $mainSnak
6868
* @param Snaks|null $qualifiers
6969
* @param ReferenceList|null $references
70+
* @param string|null $guid
7071
*/
7172
public function __construct(
7273
Snak $mainSnak,
7374
Snaks $qualifiers = null,
74-
ReferenceList $references = null
75+
ReferenceList $references = null,
76+
$guid = null
7577
) {
7678
$this->mainSnak = $mainSnak;
7779
$this->qualifiers = $qualifiers ?: new SnakList();
7880
$this->references = $references ?: new ReferenceList();
81+
$this->setGuid( $guid );
7982
}
8083

8184
/**

tests/unit/Statement/StatementTest.php

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@
33
namespace Wikibase\DataModel\Tests\Statement;
44

55
use DataValues\StringValue;
6+
use InvalidArgumentException;
67
use Wikibase\DataModel\Entity\PropertyId;
78
use Wikibase\DataModel\Reference;
89
use Wikibase\DataModel\ReferenceList;
910
use Wikibase\DataModel\Snak\PropertyNoValueSnak;
1011
use Wikibase\DataModel\Snak\PropertySomeValueSnak;
1112
use Wikibase\DataModel\Snak\PropertyValueSnak;
13+
use Wikibase\DataModel\Snak\Snak;
1214
use Wikibase\DataModel\Snak\SnakList;
15+
use Wikibase\DataModel\Snak\Snaks;
1316
use Wikibase\DataModel\Statement\Statement;
1417

1518
/**
@@ -24,6 +27,62 @@
2427
*/
2528
class StatementTest extends \PHPUnit_Framework_TestCase {
2629

30+
public function testMinimalConstructor() {
31+
$mainSnak = new PropertyNoValueSnak( 1 );
32+
$statement = new Statement( $mainSnak );
33+
$this->assertTrue( $mainSnak->equals( $statement->getMainSnak() ) );
34+
}
35+
36+
/**
37+
* @dataProvider validConstructorArgumentsProvider
38+
*/
39+
public function testConstructorWithValidArguments(
40+
Snak $mainSnak,
41+
Snaks $qualifiers = null,
42+
ReferenceList $references = null,
43+
$guid
44+
) {
45+
$statement = new Statement( $mainSnak, $qualifiers, $references, $guid );
46+
$this->assertTrue( $statement->getMainSnak()->equals( $mainSnak ) );
47+
$this->assertTrue( $statement->getQualifiers()->equals( $qualifiers ?: new SnakList() ) );
48+
$this->assertTrue( $statement->getReferences()->equals( $references ?: new ReferenceList() ) );
49+
$this->assertSame( $guid, $statement->getGuid() );
50+
}
51+
52+
public function validConstructorArgumentsProvider() {
53+
$snak = new PropertyNoValueSnak( 1 );
54+
$qualifiers = new SnakList( array( $snak ) );
55+
$references = new ReferenceList( array( new Reference( array( $snak ) ) ) );
56+
57+
return array(
58+
array( $snak, null, null, null ),
59+
array( $snak, null, null, 'guid' ),
60+
array( $snak, $qualifiers, $references, 'guid' ),
61+
);
62+
}
63+
64+
/**
65+
* @dataProvider invalidConstructorArgumentsProvider
66+
* @expectedException InvalidArgumentException
67+
*/
68+
public function testConstructorWithInvalidArguments(
69+
$mainSnak,
70+
$qualifiers,
71+
$references,
72+
$guid
73+
) {
74+
new Statement( $mainSnak, $qualifiers, $references, $guid );
75+
}
76+
77+
public function invalidConstructorArgumentsProvider() {
78+
$snak = new PropertyNoValueSnak( 1 );
79+
80+
return array(
81+
array( $snak, null, null, false ),
82+
array( $snak, null, null, 1 ),
83+
);
84+
}
85+
2786
/**
2887
* @dataProvider instanceProvider
2988
*/

0 commit comments

Comments
 (0)