mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-18 00:03:05 -04:00
[bugfix][ogr] Tests for capabilities update on filter changes
Fixes #17795
This commit is contained in:
parent
3edc5472bb
commit
9c8533455f
@ -318,25 +318,6 @@ class PyQgsOGRProvider(unittest.TestCase):
|
||||
self.assertEqual(gdal.GetConfigOption("GDAL_HTTP_PROXY"), "myproxyhostname.com")
|
||||
self.assertEqual(gdal.GetConfigOption("GDAL_HTTP_PROXYUSERPWD"), "username")
|
||||
|
||||
def testSubSetStringEditable(self):
|
||||
"""Test that a shapefile is editable after setting a subset"""
|
||||
vl = QgsVectorLayer(TEST_DATA_DIR + '/' + 'lines.shp', 'subset_test', 'ogr')
|
||||
self.assertTrue(vl.isValid())
|
||||
self.assertTrue(vl.dataProvider().capabilities() & QgsVectorDataProvider.DeleteFeatures)
|
||||
|
||||
vl = QgsVectorLayer(TEST_DATA_DIR + '/' + 'lines.shp', 'subset_test', 'ogr')
|
||||
vl.setSubsetString('')
|
||||
self.assertTrue(vl.isValid())
|
||||
self.assertTrue(vl.dataProvider().capabilities() & QgsVectorDataProvider.DeleteFeatures)
|
||||
|
||||
vl = QgsVectorLayer(TEST_DATA_DIR + '/' + 'lines.shp', 'subset_test', 'ogr')
|
||||
vl.setSubsetString('"Name" = \'Arterial\'')
|
||||
self.assertTrue(vl.isValid())
|
||||
self.assertFalse(vl.dataProvider().capabilities() & QgsVectorDataProvider.DeleteFeatures)
|
||||
|
||||
vl.setSubsetString('')
|
||||
self.assertTrue(vl.dataProvider().capabilities() & QgsVectorDataProvider.DeleteFeatures)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
@ -39,6 +39,9 @@ from qgis.core import (QgsFeature,
|
||||
from qgis.PyQt.QtCore import QCoreApplication, QVariant
|
||||
from qgis.testing import start_app, unittest
|
||||
from qgis.utils import spatialite_connect
|
||||
from utilities import unitTestDataPath
|
||||
|
||||
TEST_DATA_DIR = unitTestDataPath()
|
||||
|
||||
|
||||
def GDAL_COMPUTE_VERSION(maj, min, rev):
|
||||
@ -834,6 +837,29 @@ class TestPyQgsOGRProviderGpkg(unittest.TestCase):
|
||||
self.assertTrue(vl.dataProvider().capabilities() & QgsVectorDataProvider.CreateSpatialIndex)
|
||||
self.assertTrue(vl.dataProvider().createSpatialIndex())
|
||||
|
||||
def testSubSetStringEditable_bug17795(self):
|
||||
"""Test that a layer is not editable after setting a subset and it's reverted to editable after the filter is removed"""
|
||||
|
||||
isEditable = QgsVectorDataProvider.ChangeAttributeValues
|
||||
testPath = TEST_DATA_DIR + '/' + 'provider/bug_17795.gpkg|layername=bug_17795'
|
||||
|
||||
vl = QgsVectorLayer(testPath, 'subset_test', 'ogr')
|
||||
self.assertTrue(vl.isValid())
|
||||
self.assertTrue(vl.dataProvider().capabilities() & isEditable)
|
||||
|
||||
vl = QgsVectorLayer(testPath, 'subset_test', 'ogr')
|
||||
vl.setSubsetString('')
|
||||
self.assertTrue(vl.isValid())
|
||||
self.assertTrue(vl.dataProvider().capabilities() & isEditable)
|
||||
|
||||
vl = QgsVectorLayer(testPath, 'subset_test', 'ogr')
|
||||
vl.setSubsetString('"category" = \'one\'')
|
||||
self.assertTrue(vl.isValid())
|
||||
self.assertFalse(vl.dataProvider().capabilities() & isEditable)
|
||||
|
||||
vl.setSubsetString('')
|
||||
self.assertTrue(vl.dataProvider().capabilities() & isEditable)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
@ -612,6 +612,29 @@ class TestPyQgsShapefileProvider(unittest.TestCase, ProviderTestCase):
|
||||
self.assertTrue(vl.dataProvider().capabilities() & QgsVectorDataProvider.CreateSpatialIndex)
|
||||
self.assertTrue(vl.dataProvider().createSpatialIndex())
|
||||
|
||||
def testSubSetStringEditable_bug17795(self):
|
||||
"""Test that a layer is not editable after setting a subset and it's reverted to editable after the filter is removed"""
|
||||
|
||||
testPath = TEST_DATA_DIR + '/' + 'lines.shp'
|
||||
isEditable = QgsVectorDataProvider.ChangeAttributeValues
|
||||
|
||||
vl = QgsVectorLayer(testPath, 'subset_test', 'ogr')
|
||||
self.assertTrue(vl.isValid())
|
||||
self.assertTrue(vl.dataProvider().capabilities() & isEditable)
|
||||
|
||||
vl = QgsVectorLayer(testPath, 'subset_test', 'ogr')
|
||||
vl.setSubsetString('')
|
||||
self.assertTrue(vl.isValid())
|
||||
self.assertTrue(vl.dataProvider().capabilities() & isEditable)
|
||||
|
||||
vl = QgsVectorLayer(testPath, 'subset_test', 'ogr')
|
||||
vl.setSubsetString('"Name" = \'Arterial\'')
|
||||
self.assertTrue(vl.isValid())
|
||||
self.assertFalse(vl.dataProvider().capabilities() & isEditable)
|
||||
|
||||
vl.setSubsetString('')
|
||||
self.assertTrue(vl.dataProvider().capabilities() & isEditable)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
BIN
tests/testdata/provider/bug_17795.gpkg
vendored
Normal file
BIN
tests/testdata/provider/bug_17795.gpkg
vendored
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user