def test_rasterTableGdalURI(self): def check_rasterTableGdalURI(expected_dbname): tables = database.tables() raster_tables_count = 0 for tab in tables: if tab.type == Table.RasterType: raster_tables_count += 1 gdalUri = tab.gdalUri() m = re.search(' dbname=\'([^ ]*)\' ', gdalUri) self.assertTrue(m) actual_dbname = m.group(1) self.assertEqual(actual_dbname, expected_dbname) #print(tab.type) #print(tab.quotedName()) #print(tab) # We need to make sure a database is created with at # least one raster table ! self.assertEqual(raster_tables_count, 1) obj = QObject() # needs to be kept alive # Test for empty URI # See https://issues.qgis.org/issues/16625 # and https://issues.qgis.org/issues/10600 expected_dbname = self.testdb os.environ['PGDATABASE'] = expected_dbname database = PGDatabase(obj, QgsDataSourceUri()) self.assertIsInstance(database, PGDatabase) uri = database.uri() self.assertEqual(uri.host(), '') self.assertEqual(uri.username(), '') self.assertEqual(uri.database(), expected_dbname) self.assertEqual(uri.service(), '') check_rasterTableGdalURI(expected_dbname) # Test for service-only URI # See https://issues.qgis.org/issues/16626 os.environ['PGDATABASE'] = 'fake' database = PGDatabase(obj, QgsDataSourceUri('service=dbmanager')) self.assertIsInstance(database, PGDatabase) uri = database.uri() self.assertEqual(uri.host(), '') self.assertEqual(uri.username(), '') self.assertEqual(uri.database(), '') self.assertEqual(uri.service(), 'dbmanager') check_rasterTableGdalURI(expected_dbname)
def test_unicodeInQuery(self): os.environ['PGDATABASE'] = self.testdb obj = QObject() # needs to be kept alive database = PGDatabase(obj, QgsDataSourceUri()) self.assertIsInstance(database, PGDatabase) # SQL as string literal res = database.sqlResultModel("SELECT 'é'::text", obj) self.assertIsInstance(res, PGSqlResultModel) dat = res.getData(0, 0) self.assertEqual(dat, u"é") # SQL as unicode literal res = database.sqlResultModel(u"SELECT 'é'::text", obj) self.assertIsInstance(res, PGSqlResultModel) dat = res.getData(0, 0) self.assertEqual(dat, u"é")
def test_rasterTableGdalURI(self): def check_rasterTableGdalURI(expected_dbname): tables = database.tables() raster_tables_count = 0 for tab in tables: if tab.type == Table.RasterType: raster_tables_count += 1 gdalUri = tab.gdalUri() m = re.search(' dbname=([^ ]*) ', gdalUri) self.assertTrue(m) actual_dbname = m.group(1) self.assertEqual(actual_dbname, expected_dbname) #print(tab.type) #print(tab.quotedName()) #print(tab) # We need to make sure a database is created with at # least one raster table ! self.assertEqual(raster_tables_count, 1) obj = QObject() # needs to be kept alive # Test for empty URI # See https://issues.qgis.org/issues/16625 # and https://issues.qgis.org/issues/10600 expected_dbname = self.testdb os.environ['PGDATABASE'] = expected_dbname database = PGDatabase(obj, QgsDataSourceUri()) self.assertIsInstance(database, PGDatabase) uri = database.uri() self.assertEqual(uri.host(), '') self.assertEqual(uri.username(), '') self.assertEqual(uri.database(), expected_dbname) self.assertEqual(uri.service(), '') check_rasterTableGdalURI(expected_dbname) # Test for service-only URI # See https://issues.qgis.org/issues/16626 os.environ['PGDATABASE'] = 'fake' database = PGDatabase(obj, QgsDataSourceUri('service=dbmanager')) self.assertIsInstance(database, PGDatabase) uri = database.uri() self.assertEqual(uri.host(), '') self.assertEqual(uri.username(), '') self.assertEqual(uri.database(), '') self.assertEqual(uri.service(), 'dbmanager') check_rasterTableGdalURI(expected_dbname)