jenkins-bot has submitted this change and it was merged.
Change subject: Fix handling of GeoData if CoordinatesOutput is already set
......................................................................
Fix handling of GeoData if CoordinatesOutput is already set
if $parserOutput->geoData is set, then correctly set $coordinatesOutput
and add test case for this.
Change-Id: Id8d0a03f67a7950137b59ac9c270e2933d62254a
---
M repo/includes/ParserOutput/GeoDataDataUpdater.php
M repo/tests/phpunit/includes/ParserOutput/GeoDataDataUpdaterTest.php
2 files changed, 51 insertions(+), 28 deletions(-)
Approvals:
Hoo man: Looks good to me, but someone else must approve
Thiemo Mättig (WMDE): Looks good to me, approved
jenkins-bot: Verified
diff --git a/repo/includes/ParserOutput/GeoDataDataUpdater.php
b/repo/includes/ParserOutput/GeoDataDataUpdater.php
index ad2e92c..71aacbf 100644
--- a/repo/includes/ParserOutput/GeoDataDataUpdater.php
+++ b/repo/includes/ParserOutput/GeoDataDataUpdater.php
@@ -99,17 +99,11 @@
* @param ParserOutput $parserOutput
*/
public function updateParserOutput( ParserOutput $parserOutput ) {
- $coordinatesOutput = isset( $parserOutput->geoData ) ?: new
CoordinatesOutput();
+ $coordinatesOutput = $this->getCoordinatesOutput( $parserOutput
);
+ $primaryCoordKey = $this->findPrimaryCoordinateKey();
- if ( $coordinatesOutput->getPrimary() === false ) {
- $primaryCoordKey = $this->findPrimaryCoordinateKey();
-
- if ( $primaryCoordKey !== null ) {
- $this->addPrimaryCoordinate(
- $coordinatesOutput,
- $primaryCoordKey
- );
- }
+ if ( $coordinatesOutput->getPrimary() === false &&
$primaryCoordKey !== null ) {
+ $this->addPrimaryCoordinate( $coordinatesOutput,
$primaryCoordKey );
}
$this->addSecondaryCoordinates( $coordinatesOutput,
$primaryCoordKey );
@@ -118,6 +112,19 @@
}
/**
+ * @param ParserOutput
+ *
+ * @return CoordinatesOutput
+ */
+ private function getCoordinatesOutput( ParserOutput $parserOutput ) {
+ if ( isset( $parserOutput->geoData ) ) {
+ return $parserOutput->geoData;
+ }
+
+ return new CoordinatesOutput();
+ }
+
+ /**
* @return string|null Array key for Coord selected as primary.
*/
private function findPrimaryCoordinateKey() {
diff --git
a/repo/tests/phpunit/includes/ParserOutput/GeoDataDataUpdaterTest.php
b/repo/tests/phpunit/includes/ParserOutput/GeoDataDataUpdaterTest.php
index 9124240..705ae57 100644
--- a/repo/tests/phpunit/includes/ParserOutput/GeoDataDataUpdaterTest.php
+++ b/repo/tests/phpunit/includes/ParserOutput/GeoDataDataUpdaterTest.php
@@ -159,13 +159,9 @@
}
public function
testUpdateParserOutput_withPrimaryCoordPreferredStatement() {
- $updater = $this->newGeoDataDataUpdater(
+ $updater = $this->getUpdaterWithStatements(
array( 'P9000', 'P625' )
);
-
- foreach ( $this->getStatements() as $statement ) {
- $updater->processStatement( $statement );
- }
$coords = $this->getCoords();
@@ -188,13 +184,9 @@
}
public function
testUpdateParserOutput_withPrimaryCoordNormalStatement() {
- $updater = $this->newGeoDataDataUpdater(
+ $updater = $this->getUpdaterWithStatements(
array( 'P625', 'P10' )
);
-
- foreach ( $this->getStatements() as $statement ) {
- $updater->processStatement( $statement );
- }
$expected = new CoordinatesOutput();
$coords = $this->getCoords();
@@ -216,14 +208,6 @@
}
public function testUpdateParserOutput_noPrimaryCoord() {
- $updater = $this->newGeoDataDataUpdater(
- array( 'P17', 'P404', 'P10', 'P20', 'P9000', 'P9001',
'P625' )
- );
-
- foreach ( $this->getStatements() as $statement ) {
- $updater->processStatement( $statement );
- }
-
$expected = new CoordinatesOutput();
foreach ( $this->getCoords() as $coord ) {
@@ -231,11 +215,43 @@
}
$parserOutput = new ParserOutput();
+
+ $updater = $this->getUpdaterWithStatements(
+ array( 'P17', 'P404', 'P10', 'P20', 'P9000', 'P9001',
'P625' )
+ );
+
$updater->updateParserOutput( $parserOutput );
$this->assertEquals( $expected, $parserOutput->geoData );
}
+ public function testUpdateParserOutput_withExistingCoordinates() {
+ $coordinatesOutput = new CoordinatesOutput();
+
+ $coord = new Coord( 39.0987, -70.0051 );
+ $coord->primary = true;
+
+ $coordinatesOutput->addPrimary( $coord );
+
+ $parserOutput = new ParserOutput();
+ $parserOutput->geoData = $coordinatesOutput;
+
+ $updater = $this->getUpdaterWithStatements( array( 'P625',
'P10' ) );
+ $updater->updateParserOutput( $parserOutput );
+
+ $this->assertEquals( $coord,
$parserOutput->geoData->getPrimary() );
+ }
+
+ private function getUpdaterWithStatements( array $preferredProperties )
{
+ $updater = $this->newGeoDataDataUpdater( $preferredProperties );
+
+ foreach ( $this->getStatements() as $statement ) {
+ $updater->processStatement( $statement );
+ }
+
+ return $updater;
+ }
+
/**
* @param string[] $preferredProperties
*
--
To view, visit https://gerrit.wikimedia.org/r/250570
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Id8d0a03f67a7950137b59ac9c270e2933d62254a
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Aude <[email protected]>
Gerrit-Reviewer: Hoo man <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits