Skip to content

Commit 4be1cc0

Browse files
committedAug 28, 2017
Add tests for deleteCascade option
1 parent 293f0f4 commit 4be1cc0

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
 

‎tests/src/python/test_qgsvectorlayer.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
QgsDiagramLayerSettings,
5555
QgsTextFormat,
5656
QgsVectorLayerSelectedFeatureSource,
57+
QgsExpression,
5758
NULL)
5859
from qgis.gui import (QgsAttributeTableModel,
5960
QgsGui
@@ -453,6 +454,53 @@ def checkAfter2():
453454

454455
self.assertEqual(layer.dataProvider().featureCount(), 0)
455456

457+
def test_DeleteJoinedFeature(self):
458+
joinLayer = createJoinLayer()
459+
joinLayer2 = createJoinLayer()
460+
QgsProject.instance().addMapLayers([joinLayer, joinLayer2])
461+
462+
layer = createLayerWithOnePoint()
463+
464+
join = QgsVectorLayerJoinInfo()
465+
join.setTargetFieldName("fldint")
466+
join.setJoinLayer(joinLayer)
467+
join.setJoinFieldName("y")
468+
join.setUsingMemoryCache(True)
469+
join.setEditable(True)
470+
join.setDeleteCascade(True)
471+
472+
layer.addJoin(join)
473+
474+
join2 = QgsVectorLayerJoinInfo()
475+
join2.setTargetFieldName("fldint")
476+
join2.setJoinLayer(joinLayer2)
477+
join2.setJoinFieldName("y")
478+
join2.setUsingMemoryCache(True)
479+
join2.setPrefix("custom-prefix_")
480+
join2.setEditable(True)
481+
join2.setDeleteCascade(False)
482+
483+
layer.addJoin(join2)
484+
485+
# check number of features
486+
self.assertEqual(layer.featureCount(), 1)
487+
self.assertEqual(joinLayer.featureCount(), 4)
488+
self.assertEqual(joinLayer2.featureCount(), 4)
489+
490+
# delete a feature which is also in joined layers
491+
layer.startEditing()
492+
joinLayer.startEditing()
493+
joinLayer2.startEditing()
494+
495+
filter = QgsExpression.createFieldEqualityExpression('fldint', '123')
496+
feature = next(layer.getFeatures(QgsFeatureRequest().setFilterExpression(filter)))
497+
layer.deleteFeature(feature.id())
498+
499+
# check number of features
500+
self.assertEqual(layer.featureCount(), 0)
501+
self.assertEqual(joinLayer.featureCount(), 3) # deleteCascade activated
502+
self.assertEqual(joinLayer2.featureCount(), 4) # deleteCascade deactivated
503+
456504
# CHANGE ATTRIBUTE
457505

458506
def test_ChangeAttribute(self):

0 commit comments

Comments
 (0)
Please sign in to comment.