<?php
+/**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
-require_once('../../lib/Status.php');
-require_once('DB.php');
+@define('CONST_TokenizerDir', dirname(__FILE__));
-use Exception;
+require_once(CONST_LibDir.'/DB.php');
+require_once(CONST_LibDir.'/Status.php');
-class StatusTest extends \PHPUnit_Framework_TestCase
-{
+class StatusTest extends \PHPUnit\Framework\TestCase
+{
public function testNoDatabaseGiven()
{
- $this->setExpectedException(Exception::class, 'No database', 700);
+ $this->expectException(\Exception::class);
+ $this->expectExceptionMessage('No database');
+ $this->expectExceptionCode(700);
$oDB = null;
$oStatus = new Status($oDB);
public function testNoDatabaseConnectionFail()
{
- $this->setExpectedException(Exception::class, 'No database', 700);
+ $this->expectException(\Exception::class);
+ $this->expectExceptionMessage('Database connection failed');
+ $this->expectExceptionCode(700);
- // causes 'Non-static method should not be called statically, assuming $this from incompatible context'
- // failure on travis
- // $oDB = \DB::connect('', false); // returns a DB_Error instance
-
- $oDB = new \DB_Error;
- $oStatus = new Status($oDB);
- $this->assertEquals('No database', $oStatus->status());
+ $oDbStub = $this->getMockBuilder(Nominatim\DB::class)
+ ->setMethods(array('connect'))
+ ->getMock();
- $oDB = null;
- $oStatus = new Status($oDB);
- $this->assertEquals('No database', $oStatus->status());
- }
-
-
- public function testModuleFail()
- {
- $this->setExpectedException(Exception::class, 'Module call failed', 702);
-
- // stub has getOne method but doesn't return anything
- $oDbStub = $this->getMock(\DB::class, array('getOne'));
-
- $oStatus = new Status($oDbStub);
- $this->assertNull($oStatus->status());
- }
-
-
- public function testWordIdQueryFail()
- {
- $this->setExpectedException(Exception::class, 'No value', 704);
-
- $oDbStub = $this->getMock(\DB::class, array('getOne'));
-
- // return no word_id
- $oDbStub->method('getOne')
- ->will($this->returnCallback(function ($sql) {
- if (preg_match("/make_standard_name\('a'\)/", $sql)) return 'a';
- if (preg_match('/SELECT word_id, word_token/', $sql)) return null;
+ $oDbStub->method('connect')
+ ->will($this->returnCallback(function () {
+ throw new \Nominatim\DatabaseError('psql connection problem', 500, null, 'unknown database');
}));
+
$oStatus = new Status($oDbStub);
- $this->assertNull($oStatus->status());
+ $this->assertEquals('No database', $oStatus->status());
}
-
public function testOK()
{
- $oDbStub = $this->getMock(\DB::class, array('getOne'));
+ $oDbStub = $this->getMockBuilder(Nominatim\DB::class)
+ ->setMethods(array('connect', 'getOne'))
+ ->getMock();
$oDbStub->method('getOne')
->will($this->returnCallback(function ($sql) {
public function testDataDate()
{
- $oDbStub = $this->getMock(\DB::class, array('getOne'));
-
+ $oDbStub = $this->getMockBuilder(Nominatim\DB::class)
+ ->setMethods(array('getOne'))
+ ->getMock();
+
$oDbStub->method('getOne')
->willReturn(1519430221);