X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/d4b633bfc50188f36e3c4a8b2b99c3a0e6a7f12e..c5fe2ac2067c7154370c3abd6ccca45b0d657547:/test/php/Nominatim/DBTest.php?ds=sidebyside diff --git a/test/php/Nominatim/DBTest.php b/test/php/Nominatim/DBTest.php index e7bd18c7..38874c88 100644 --- a/test/php/Nominatim/DBTest.php +++ b/test/php/Nominatim/DBTest.php @@ -3,10 +3,32 @@ namespace Nominatim; require_once(CONST_BasePath.'/lib/lib.php'); -require_once(CONST_BasePath.'/lib/db.php'); +require_once(CONST_BasePath.'/lib/DB.php'); +// subclassing so we can set the protected connection variable +class NominatimSubClassedDB extends \Nominatim\DB +{ + public function setConnection($oConnection) + { + $this->connection = $oConnection; + } +} + +// phpcs:ignore PSR1.Classes.ClassDeclaration.MultipleClasses class DBTest extends \PHPUnit\Framework\TestCase { + public function testReusingConnection() + { + $oDB = new NominatimSubClassedDB(''); + $oDB->setConnection('anything'); + $this->assertTrue($oDB->connect()); + } + + public function testDatabaseExists() + { + $oDB = new \Nominatim\DB(''); + $this->assertFalse($oDB->databaseExists()); + } public function testErrorHandling() { @@ -36,9 +58,35 @@ class DBTest extends \PHPUnit\Framework\TestCase throw new \PDOException('ERROR: syntax error at or near "FROM"'); })); - $oDB = new \Nominatim\DB(''); - $oDB->connection = $oPDOStub; - $oDB->tableExists('abc'); + $oDB = new NominatimSubClassedDB(''); + $oDB->setConnection($oPDOStub); + $oDB->getOne('SELECT name FROM'); + } + + public function testGetPostgresVersion() + { + $oDBStub = $this->getMockBuilder(\Nominatim\DB::class) + ->disableOriginalConstructor() + ->setMethods(array('getOne')) + ->getMock(); + + $oDBStub->method('getOne') + ->willReturn('100006'); + + $this->assertEquals(10, $oDBStub->getPostgresVersion()); + } + + public function testGetPostgisVersion() + { + $oDBStub = $this->getMockBuilder(\Nominatim\DB::class) + ->disableOriginalConstructor() + ->setMethods(array('getOne')) + ->getMock(); + + $oDBStub->method('getOne') + ->willReturn('2.4.4'); + + $this->assertEquals(2.4, $oDBStub->getPostgisVersion()); } public function testParseDSN()