Skip to content

Commit

Permalink
Add test covering new context parameter to QgsVector change attribute…
Browse files Browse the repository at this point in the history
…(s) functions
  • Loading branch information
nirvn committed Apr 29, 2024
1 parent 07f6cc1 commit 1545349
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions tests/src/python/test_qgsvectorlayer.py
Original file line number Diff line number Diff line change
Expand Up @@ -1139,6 +1139,36 @@ def checkBefore():
self.assertTrue(layer.commitChanges())
checkAfter()

def test_ChangeAttributeValuesWithContext(self):
layer = QgsVectorLayer("Point?field=fldtxt:string&field=fldint:integer",
"addfeat", "memory")

layer.setDefaultValueDefinition(0, QgsDefaultValue("geom_to_wkt(@current_parent_geometry)", True))

f = QgsFeature()
f.setAttributes(["test", 123])
f.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(100, 200)))

assert layer.dataProvider().addFeatures([f])
assert layer.featureCount() == 1
fid = 1

fields = QgsFields()
fields.append(QgsField("parenttxt", QVariant.String))
fields.append(QgsField("parentinteger", QVariant.Int))
pf = QgsFeature(fields)
pf.setAttributes(["parent", 789])
pf.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(1, 2)))

layer.startEditing()

context = layer.createExpressionContext()
context.appendScope(QgsExpressionContextUtils.parentFormScope(pf))
self.assertTrue(layer.changeAttributeValues(fid, {1: 100}, {}, False, context))

f = layer.getFeature(1)
self.assertEqual(f.attributes(), ["Point (1 2)", 100])

def test_ChangeAttributeAfterAddFeature(self):
layer = createLayerWithOnePoint()
layer.dataProvider().deleteFeatures([1]) # no need for this feature
Expand Down

0 comments on commit 1545349

Please sign in to comment.