Skip to content

Commit 1ef8dc8

Browse files
committed
Merge pull request #488 from wmde/slHolder
Add StatementListHolder
2 parents 6ea25d2 + b181f42 commit 1ef8dc8

6 files changed

Lines changed: 25 additions & 102 deletions

File tree

RELEASE-NOTES.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ Other breaking changes:
4444
* Added `StatementByGuidMap`
4545
* Added `StatementList::getFirstStatementWithGuid`
4646
* Added `StatementList::removeStatementsWithGuid`
47-
* Added `StatementList::setStatements`
4847
* `ReferenceList::addNewReference` and `Statement::addNewReference` support an array of Snaks now
4948
* Added PHPMD support
5049

src/Entity/Item.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
use Wikibase\DataModel\SiteLinkList;
1010
use Wikibase\DataModel\Statement\Statement;
1111
use Wikibase\DataModel\Statement\StatementList;
12-
use Wikibase\DataModel\Statement\StatementListProvider;
12+
use Wikibase\DataModel\Statement\StatementListHolder;
1313
use Wikibase\DataModel\Term\Fingerprint;
1414

1515
/**
@@ -21,7 +21,7 @@
2121
* @licence GNU GPL v2+
2222
* @author Jeroen De Dauw < jeroendedauw@gmail.com >
2323
*/
24-
class Item extends Entity implements StatementListProvider {
24+
class Item extends Entity implements StatementListHolder {
2525

2626
const ENTITY_TYPE = 'item';
2727

src/Entity/Property.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
use Wikibase\DataModel\Claim\Claims;
77
use Wikibase\DataModel\Statement\Statement;
88
use Wikibase\DataModel\Statement\StatementList;
9-
use Wikibase\DataModel\Statement\StatementListProvider;
9+
use Wikibase\DataModel\Statement\StatementListHolder;
1010
use Wikibase\DataModel\Term\Fingerprint;
1111

1212
/**
@@ -18,7 +18,7 @@
1818
* @licence GNU GPL v2+
1919
* @author Jeroen De Dauw < jeroendedauw@gmail.com >
2020
*/
21-
class Property extends Entity implements StatementListProvider {
21+
class Property extends Entity implements StatementListHolder {
2222

2323
const ENTITY_TYPE = 'property';
2424

src/Statement/StatementList.php

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -45,32 +45,17 @@ public function __construct( $statements = array() /*...*/ ) {
4545
$statements = func_get_args();
4646
}
4747

48-
$this->setStatements( $statements );
49-
}
50-
51-
/**
52-
* @since 3.0
53-
*
54-
* @param Statement[]|Traversable
55-
*
56-
* @throws InvalidArgumentException
57-
*/
58-
public function setStatements( $statements ) {
5948
if ( !is_array( $statements ) && !( $statements instanceof Traversable ) ) {
6049
throw new InvalidArgumentException( '$statements must be an array or an instance of Traversable' );
6150
}
6251

63-
$statementsToSet = array();
64-
6552
foreach ( $statements as $statement ) {
6653
if ( !( $statement instanceof Statement ) ) {
6754
throw new InvalidArgumentException( 'Every element in $statements must be an instance of Statement' );
6855
}
6956

70-
$statementsToSet[] = $statement;
57+
$this->statements[] = $statement;
7158
}
72-
73-
$this->statements = $statementsToSet;
7459
}
7560

7661
/**
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace Wikibase\DataModel\Statement;
4+
5+
/**
6+
* Interface for classes that contain a StatementList.
7+
*
8+
* @since 3.0
9+
*
10+
* @license GNU GPL v2+
11+
* @author Thiemo Mättig
12+
*/
13+
interface StatementListHolder extends StatementListProvider {
14+
15+
/**
16+
* @param StatementList $statements
17+
*/
18+
public function setStatements( StatementList $statements );
19+
20+
}

tests/unit/Statement/StatementListTest.php

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

55
use DataValues\StringValue;
6-
use InvalidArgumentException;
76
use Wikibase\DataModel\Claim\Claims;
87
use Wikibase\DataModel\Entity\PropertyId;
98
use Wikibase\DataModel\Snak\PropertyNoValueSnak;
@@ -667,84 +666,4 @@ public function testGivenInvalidGuid_getFirstStatementWithGuidReturnsNull() {
667666
$this->assertNull( $statements->getFirstStatementWithGuid( false ) );
668667
}
669668

670-
public function testGivenEmptyStatementList_setStatementsFillsIt() {
671-
$statement1 = $this->getStatement( 1, 'guid1' );
672-
$statement2 = $this->getStatement( 2, 'guid2' );
673-
$statement3 = $this->getStatement( 3, 'guid3' );
674-
$statement4 = $this->getStatement( 2, 'guid5' );
675-
$statements = new StatementList();
676-
677-
$statements->setStatements( array( $statement1, $statement2, $statement3, $statement4 ) );
678-
$this->assertEquals(
679-
new StatementList( $statement1, $statement2, $statement3, $statement4 ),
680-
$statements
681-
);
682-
}
683-
684-
public function testGivenFilledStatementList_setStatementsOverridesIt() {
685-
$statement1 = $this->getStatement( 1, 'guid1' );
686-
$statement2 = $this->getStatement( 2, 'guid2' );
687-
$statement3 = $this->getStatement( 3, 'guid3' );
688-
$statement4 = $this->getStatement( 2, 'guid5' );
689-
$statements = new StatementList( $statement1, $statement2, $statement3, $statement4 );
690-
691-
$statements->setStatements( array( $statement1, $statement4 ) );
692-
$this->assertEquals(
693-
new StatementList( $statement1, $statement4 ),
694-
$statements
695-
);
696-
}
697-
698-
public function testGivenNonTraversable_setStatementsThrowsException() {
699-
$statement1 = $this->getStatement( 1, 'guid1' );
700-
$statements = new StatementList();
701-
702-
$this->setExpectedException( 'InvalidArgumentException' );
703-
$statements->setStatements( $statement1 );
704-
}
705-
706-
public function testGivenNonStatement_setStatementsThrowsException() {
707-
$statement1 = $this->getStatement( 1, 'guid1' );
708-
$statements = new StatementList();
709-
710-
$this->setExpectedException( 'InvalidArgumentException' );
711-
$statements->setStatements( array( $statement1, false ) );
712-
}
713-
714-
public function testGivenNonTraversable_setStatementsDoesNotEditList() {
715-
$statement1 = $this->getStatement( 1, 'guid1' );
716-
$statement2 = $this->getStatement( 2, 'guid2' );
717-
$statement3 = $this->getStatement( 3, 'guid3' );
718-
$statement4 = $this->getStatement( 2, 'guid5' );
719-
$statements = new StatementList( $statement1, $statement2, $statement3, $statement4 );
720-
721-
try {
722-
$statements->setStatements( $statement1 );
723-
}
724-
catch ( InvalidArgumentException $e ) {
725-
$this->assertEquals(
726-
new StatementList( $statement1, $statement2, $statement3, $statement4 ),
727-
$statements
728-
);
729-
}
730-
}
731-
732-
public function testGivenNonStatement_setStatementsDoesNotEditList() {
733-
$statement1 = $this->getStatement( 1, 'guid1' );
734-
$statement2 = $this->getStatement( 2, 'guid2' );
735-
$statement3 = $this->getStatement( 3, 'guid3' );
736-
$statement4 = $this->getStatement( 2, 'guid5' );
737-
$statements = new StatementList( $statement1, $statement2, $statement3, $statement4 );
738-
739-
try {
740-
$statements->setStatements( array( $statement4, false ) );
741-
}
742-
catch ( InvalidArgumentException $e ) {
743-
$this->assertEquals(
744-
new StatementList( $statement1, $statement2, $statement3, $statement4 ),
745-
$statements
746-
);
747-
}
748-
}
749-
750669
}

0 commit comments

Comments
 (0)