Add test for custom bbox in postgresql provider

See #18107
This commit is contained in:
Sandro Santilli 2019-08-28 18:44:43 +02:00
parent d921c20f58
commit ffad801fad
2 changed files with 34 additions and 0 deletions

View File

@ -1376,6 +1376,25 @@ class TestPyQgsPostgresProvider(unittest.TestCase, ProviderTestCase):
self.assertEqual(vl.featureCount(), 4000)
print("--- %s seconds ---" % (time.time() - start_time))
def testFilterOnCustomBbox(self):
extent = QgsRectangle(-68, 70, -67, 80)
request = QgsFeatureRequest().setFilterRect(extent)
dbconn = 'dbname=\'qgis_test\''
uri = '%s srid=4326 key="pk" sslmode=disable table="qgis_test"."some_poly_data_shift_bbox" (geom)' % (dbconn)
def _test(vl, ids):
values = {feat['pk']: 'x' for feat in vl.getFeatures(request)}
expected = {x: 'x' for x in ids}
self.assertEqual(values, expected)
vl = QgsVectorLayer(uri, "testgeom", "postgres")
self.assertTrue(vl.isValid())
_test(vl, [2, 3])
vl = QgsVectorLayer(uri + ' bbox=shiftbox', "testgeom", "postgres")
self.assertTrue(vl.isValid())
_test(vl, [1, 3])
class TestPyQgsPostgresProviderCompoundKey(unittest.TestCase, ProviderTestCase):

View File

@ -638,3 +638,18 @@ INSERT INTO qgis_test.geometries_table VALUES
CREATE VIEW qgis_test.geometries_view AS (SELECT * FROM qgis_test.geometries_table);
CREATE TABLE qgis_test.geometryless_table (name VARCHAR, value INTEGER);
---------------------------------------------
--
-- View with separate bbox field
--
CREATE VIEW qgis_test.some_poly_data_shift_bbox AS
SELECT pk,
geom,
ST_Translate(
ST_Envelope(geom),
ST_XMax(ST_Envelope(geom)) - ST_XMin(ST_Envelope(geom)),
0.0
) AS shiftbox
FROM qgis_test.some_poly_data;