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

Reply via email to