|
54 | 54 | QgsDiagramLayerSettings,
|
55 | 55 | QgsTextFormat,
|
56 | 56 | QgsVectorLayerSelectedFeatureSource,
|
| 57 | + QgsExpression, |
57 | 58 | NULL)
|
58 | 59 | from qgis.gui import (QgsAttributeTableModel,
|
59 | 60 | QgsGui
|
@@ -453,6 +454,53 @@ def checkAfter2():
|
453 | 454 |
|
454 | 455 | self.assertEqual(layer.dataProvider().featureCount(), 0)
|
455 | 456 |
|
| 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 | + |
456 | 504 | # CHANGE ATTRIBUTE
|
457 | 505 |
|
458 | 506 | def test_ChangeAttribute(self):
|
|
0 commit comments