Skip to content

Commit 2aa8415

Browse files
committed
Merge pull request #450 from wmde/getStatementIndex
Replace StatementList::getIndexByGuid with getFirstStatementByGuid
2 parents 8dfe373 + 10da4ee commit 2aa8415

4 files changed

Lines changed: 36 additions & 54 deletions

File tree

RELEASE-NOTES.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
* Removed `Claims::getHash` (and `Claims` no longer implements `Hashable`)
2424
* Removed `Claims::hasClaim`
2525
* Removed `Claims::isEmpty` (you can use `StatementList::isEmpty` instead)
26-
* Removed `Claims::indexOf` (you can use `StatementList::getIndexByGuid` instead)
26+
* Removed `Claims::indexOf`, use `StatementList::getFirstStatementByGuid` or `StatementByGuidMap` instead
2727
* Removed `Claims::removeClaim`
2828
* Removed `Entity::getAllSnaks`, use `StatementList::getAllSnaks` instead
2929
* Removed `EntityId::getPrefixedId`, use `EntityId::getSerialization` instead
@@ -32,7 +32,7 @@
3232
#### Additions
3333

3434
* Added `StatementByGuidMap`
35-
* Added `StatementList::getIndexByGuid`
35+
* Added `StatementList::getFirstStatementByGuid`
3636
* `ReferenceList::addNewReference` and `Statement::addNewReference` support an array of Snaks now
3737

3838
## Version 2.6.0 (2015-03-08)

src/Claim/Claims.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public function addClaim( Claim $claim ) {
9292

9393
/**
9494
* @since 0.3
95-
* @deprecated since 1.0, use StatementList::getIndexByGuid() instead.
95+
* @deprecated since 1.0, use StatementList::getFirstStatementByGuid() instead.
9696
*
9797
* @param string $claimGuid
9898
*
@@ -116,7 +116,7 @@ public function removeClaimWithGuid( $claimGuid ) {
116116

117117
/**
118118
* @since 0.3
119-
* @deprecated since 1.0, use StatementList::getIndexByGuid() instead.
119+
* @deprecated since 1.0, use StatementList::getFirstStatementByGuid() instead.
120120
*
121121
* @param string $claimGuid
122122
*

src/Statement/StatementList.php

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -285,27 +285,20 @@ public function isEmpty() {
285285

286286
/**
287287
* @since 3.0
288+
* @see StatementByGuidMap
288289
*
289290
* @param string|null $statementGuid
290291
*
291-
* @throws InvalidArgumentException
292-
* @return int|bool Zero-based index or false if not found.
292+
* @return Statement|null The first statement with the given GUID or null if not found.
293293
*/
294-
public function getIndexByGuid( $statementGuid ) {
295-
if ( !is_string( $statementGuid ) && $statementGuid !== null ) {
296-
throw new InvalidArgumentException( '$statementGuid needs to be string or null' );
297-
}
298-
299-
$index = 0;
300-
301-
foreach ( $this->statements as $s ) {
302-
if ( $s->getGuid() === $statementGuid ) {
303-
return $index;
294+
public function getFirstStatementByGuid( $statementGuid ) {
295+
foreach ( $this->statements as $statement ) {
296+
if ( $statement->getGuid() === $statementGuid ) {
297+
return $statement;
304298
}
305-
$index++;
306299
}
307300

308-
return false;
301+
return null;
309302
}
310303

311304
}

tests/unit/Statement/StatementListTest.php

Lines changed: 25 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -567,57 +567,46 @@ public function testWhenNoPreferredStatements_getBestStatementsReturnsOnlyNormal
567567
);
568568
}
569569

570-
public function testGivenNotPresentStatement_getIndexByGuidReturnsFalse() {
570+
public function testGivenNotPresentStatement_getFirstStatementByGuidReturnsNull() {
571571
$statements = new StatementList();
572572

573-
$this->assertFalse( $statements->getIndexByGuid( 'kittens' ) );
573+
$this->assertNull( $statements->getFirstStatementByGuid( 'kittens' ) );
574574
}
575575

576-
public function testGivenPresentStatement_getIndexByGuidReturnsItsIndex() {
577-
$statements = new StatementList( array(
578-
$this->getStatement( 43, 'kittens43' ),
579-
$this->getStatement( 42, 'kittens42' ),
580-
$this->getStatement( 41, 'kittens41' ),
581-
) );
576+
public function testGivenPresentStatement_getFirstStatementByGuidReturnsStatement() {
577+
$statement1 = $this->getStatement( 1, 'guid1' );
578+
$statement2 = $this->getStatement( 2, 'guid2' );
579+
$statement3 = $this->getStatement( 3, 'guid3' );
580+
$statements = new StatementList( $statement1, $statement2, $statement3 );
582581

583-
$this->assertSame(
584-
1,
585-
$statements->getIndexByGuid( 'kittens42' )
586-
);
582+
$actual = $statements->getFirstStatementByGuid( 'guid2' );
583+
$this->assertSame( $statement2, $actual );
587584
}
588585

589-
public function testGivenDoublyPresentStatement_getIndexByGuidReturnsTheFirstIndex() {
590-
$statements = new StatementList( array(
591-
$this->getStatement( 43, 'kittens43' ),
592-
$this->getStatement( 42, 'kittens42' ),
593-
$this->getStatement( 41, 'kittens41' ),
594-
$this->getStatement( 42, 'kittens42' ),
595-
) );
586+
public function testGivenDoublyPresentStatement_getFirstStatementByGuidReturnsFirstMatch() {
587+
$statement1 = $this->getStatement( 1, 'guid1' );
588+
$statement2 = $this->getStatement( 2, 'guid2' );
589+
$statement3 = $this->getStatement( 3, 'guid3' );
590+
$statement4 = $this->getStatement( 2, 'guid2' );
591+
$statements = new StatementList( $statement1, $statement2, $statement3, $statement4 );
596592

597-
$this->assertSame(
598-
1,
599-
$statements->getIndexByGuid( 'kittens42' )
600-
);
593+
$actual = $statements->getFirstStatementByGuid( 'guid2' );
594+
$this->assertSame( $statement2, $actual );
601595
}
602596

603-
public function testGivenDifferentStatementWithSameGuid_getIndexByGuidReturnsItsIndex() {
604-
$statements = new StatementList( array(
605-
$this->getStatement( 1, 'kittens43' ),
606-
$this->getStatement( 2, 'kittens42' ),
607-
$this->getStatement( 3, 'kittens41' ),
608-
) );
597+
public function testGivenStatementsWithNoGuid_getFirstStatementByGuidReturnsFirstMatch() {
598+
$statement1 = $this->getStatement( 1, null );
599+
$statement2 = $this->getStatement( 2, null );
600+
$statements = new StatementList( $statement1, $statement2 );
609601

610-
$this->assertSame(
611-
2,
612-
$statements->getIndexByGuid( 'kittens41' )
613-
);
602+
$actual = $statements->getFirstStatementByGuid( null );
603+
$this->assertSame( $statement1, $actual );
614604
}
615605

616-
public function testGivenInvalidGuid_getIndexByGuidThrowsException() {
606+
public function testGivenInvalidGuid_getFirstStatementByGuidReturnsNull() {
617607
$statements = new StatementList();
618608

619-
$this->setExpectedException( 'InvalidArgumentException' );
620-
$statements->getIndexByGuid( false );
609+
$this->assertNull( $statements->getFirstStatementByGuid( false ) );
621610
}
622611

623612
}

0 commit comments

Comments
 (0)