mirror of
https://github.com/osm-search/Nominatim.git
synced 2024-11-22 21:28:10 +03:00
move status test to tokenizer
The availability of the module is now tested by the tokenizer.
This commit is contained in:
parent
893490f94e
commit
be6262c6ce
@ -2,6 +2,8 @@
|
||||
|
||||
namespace Nominatim;
|
||||
|
||||
require_once(CONST_TokenizerDir.'/tokenizer.php');
|
||||
|
||||
use Exception;
|
||||
|
||||
class Status
|
||||
@ -25,24 +27,8 @@ class Status
|
||||
throw new Exception('Database connection failed', 700);
|
||||
}
|
||||
|
||||
$sStandardWord = $this->oDB->getOne("SELECT make_standard_name('a')");
|
||||
if ($sStandardWord === false) {
|
||||
throw new Exception('Module failed', 701);
|
||||
}
|
||||
|
||||
if ($sStandardWord != 'a') {
|
||||
throw new Exception('Module call failed', 702);
|
||||
}
|
||||
|
||||
$sSQL = 'SELECT word_id, word_token, word, class, type, country_code, ';
|
||||
$sSQL .= "operator, search_name_count FROM word WHERE word_token IN (' a')";
|
||||
$iWordID = $this->oDB->getOne($sSQL);
|
||||
if ($iWordID === false) {
|
||||
throw new Exception('Query failed', 703);
|
||||
}
|
||||
if (!$iWordID) {
|
||||
throw new Exception('No value', 704);
|
||||
}
|
||||
$oTokenizer = new \Nominatim\Tokenizer($this->oDB);
|
||||
$oTokenizer->checkStatus();
|
||||
}
|
||||
|
||||
public function dataDate()
|
||||
|
@ -15,6 +15,27 @@ class Tokenizer
|
||||
$this->oNormalizer = \Transliterator::createFromRules(CONST_Term_Normalization_Rules);
|
||||
}
|
||||
|
||||
public function checkStatus()
|
||||
{
|
||||
$sStandardWord = $this->oDB->getOne("SELECT make_standard_name('a')");
|
||||
if ($sStandardWord === false) {
|
||||
throw new Exception('Module failed', 701);
|
||||
}
|
||||
|
||||
if ($sStandardWord != 'a') {
|
||||
throw new Exception('Module call failed', 702);
|
||||
}
|
||||
|
||||
$sSQL = "SELECT word_id FROM word WHERE word_token IN (' a')";
|
||||
$iWordID = $this->oDB->getOne($sSQL);
|
||||
if ($iWordID === false) {
|
||||
throw new Exception('Query failed', 703);
|
||||
}
|
||||
if (!$iWordID) {
|
||||
throw new Exception('No value', 704);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function setCountryRestriction($aCountries)
|
||||
{
|
||||
|
@ -204,7 +204,17 @@ class NominatimEnvironment:
|
||||
def setup_unknown_db(self):
|
||||
""" Setup a test against a non-existing database.
|
||||
"""
|
||||
self.write_nominatim_config('UNKNOWN_DATABASE_NAME')
|
||||
# The tokenizer needs an existing database to function.
|
||||
# So start with the usual database
|
||||
class _Context:
|
||||
db = None
|
||||
|
||||
context = _Context()
|
||||
self.setup_db(context)
|
||||
tokenizer_factory.create_tokenizer(self.get_test_config(), init_db=False)
|
||||
|
||||
# Then drop the DB again
|
||||
self.teardown_db(context, force_drop=True)
|
||||
|
||||
def setup_db(self, context):
|
||||
""" Setup a test against a fresh, empty test database.
|
||||
@ -221,13 +231,13 @@ class NominatimEnvironment:
|
||||
context.db.autocommit = True
|
||||
psycopg2.extras.register_hstore(context.db, globally=False)
|
||||
|
||||
def teardown_db(self, context):
|
||||
def teardown_db(self, context, force_drop=False):
|
||||
""" Remove the test database, if it exists.
|
||||
"""
|
||||
if 'db' in context:
|
||||
if hasattr(context, 'db'):
|
||||
context.db.close()
|
||||
|
||||
if not self.keep_scenario_db:
|
||||
if force_drop or not self.keep_scenario_db:
|
||||
self.db_drop_database(self.test_db)
|
||||
|
||||
def _reuse_or_drop_db(self, name):
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
namespace Nominatim;
|
||||
|
||||
@define('CONST_TokenizerDir', dirname(__FILE__));
|
||||
|
||||
require_once(CONST_LibDir.'/DB.php');
|
||||
require_once(CONST_LibDir.'/Status.php');
|
||||
|
||||
@ -40,45 +42,6 @@ class StatusTest extends \PHPUnit\Framework\TestCase
|
||||
$this->assertEquals('No database', $oStatus->status());
|
||||
}
|
||||
|
||||
|
||||
public function testModuleFail()
|
||||
{
|
||||
$this->expectException(\Exception::class);
|
||||
$this->expectExceptionMessage('Module call failed');
|
||||
$this->expectExceptionCode(702);
|
||||
|
||||
// stub has getOne method but doesn't return anything
|
||||
$oDbStub = $this->getMockBuilder(Nominatim\DB::class)
|
||||
->setMethods(array('connect', 'getOne'))
|
||||
->getMock();
|
||||
|
||||
$oStatus = new Status($oDbStub);
|
||||
$this->assertNull($oStatus->status());
|
||||
}
|
||||
|
||||
|
||||
public function testWordIdQueryFail()
|
||||
{
|
||||
$this->expectException(\Exception::class);
|
||||
$this->expectExceptionMessage('No value');
|
||||
$this->expectExceptionCode(704);
|
||||
|
||||
$oDbStub = $this->getMockBuilder(Nominatim\DB::class)
|
||||
->setMethods(array('connect', 'getOne'))
|
||||
->getMock();
|
||||
|
||||
// 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;
|
||||
}));
|
||||
|
||||
$oStatus = new Status($oDbStub);
|
||||
$this->assertNull($oStatus->status());
|
||||
}
|
||||
|
||||
|
||||
public function testOK()
|
||||
{
|
||||
$oDbStub = $this->getMockBuilder(Nominatim\DB::class)
|
||||
@ -100,7 +63,7 @@ class StatusTest extends \PHPUnit\Framework\TestCase
|
||||
$oDbStub = $this->getMockBuilder(Nominatim\DB::class)
|
||||
->setMethods(array('getOne'))
|
||||
->getMock();
|
||||
|
||||
|
||||
$oDbStub->method('getOne')
|
||||
->willReturn(1519430221);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user