Skip to content

Commit 1034131

Browse files
nyalldawsonm-kuhn
authored andcommitted
Add a provider unit test checking extent after adding/deleting features
1 parent 6a87889 commit 1034131

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

tests/src/python/providertestbase.py

+35
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,24 @@ def testAddFeature(self):
361361
# expect fail
362362
self.assertFalse(l.dataProvider().addFeatures([f1, f2]), 'Provider reported no AddFeatures capability, but returned true to addFeatures')
363363

364+
def testAddFeaturesUpdateExtent(self):
365+
if not getattr(self, 'getEditableLayer', None):
366+
return
367+
368+
l = self.getEditableLayer()
369+
self.assertTrue(l.isValid())
370+
371+
self.assertEqual(l.dataProvider().extent().toString(1), '-71.1,66.3 : -65.3,78.3')
372+
373+
if l.dataProvider().capabilities() & QgsVectorDataProvider.AddFeatures:
374+
f1 = QgsFeature()
375+
f1.setAttributes([6, -220, NULL, 'String', '15'])
376+
f1.setGeometry(QgsGeometry.fromWkt('Point (-50 90)'))
377+
l.dataProvider().addFeatures([f1])
378+
379+
l.dataProvider().updateExtents()
380+
self.assertEqual(l.dataProvider().extent().toString(1), '-71.1,66.3 : -50.0,90.0')
381+
364382
def testDeleteFeatures(self):
365383
if not getattr(self, 'getEditableLayer', None):
366384
return
@@ -388,6 +406,23 @@ def testDeleteFeatures(self):
388406
self.assertFalse(l.dataProvider().deleteFeatures(to_delete),
389407
'Provider reported no DeleteFeatures capability, but returned true to deleteFeatures')
390408

409+
def testDeleteFeaturesUpdateExtent(self):
410+
if not getattr(self, 'getEditableLayer', None):
411+
return
412+
413+
l = self.getEditableLayer()
414+
self.assertTrue(l.isValid())
415+
416+
self.assertEqual(l.dataProvider().extent().toString(1), '-71.1,66.3 : -65.3,78.3')
417+
418+
to_delete = [f.id() for f in l.dataProvider().getFeatures() if f.attributes()[0] in [5, 4]]
419+
420+
if l.dataProvider().capabilities() & QgsVectorDataProvider.DeleteFeatures:
421+
l.dataProvider().deleteFeatures(to_delete)
422+
423+
l.dataProvider().updateExtents()
424+
self.assertEqual(l.dataProvider().extent().toString(1), '-70.3,66.3 : -68.2,70.8')
425+
391426
def testTruncate(self):
392427
if not getattr(self, 'getEditableLayer', None):
393428
return

0 commit comments

Comments
 (0)