@@ -2089,6 +2089,32 @@ def testEvaluatingDefaultExpressions(self):
2089
2089
layer .setDefaultValueDefinition (1 , QgsDefaultValue ('not a valid expression' ))
2090
2090
self .assertFalse (layer .defaultValue (1 ))
2091
2091
2092
+ def testApplyOnUpdateDefaultExpressions (self ):
2093
+ """tests apply on update of default values"""
2094
+ layer = createLayerWithOnePoint ()
2095
+
2096
+ layer .setDefaultValueDefinition (0 , QgsDefaultValue ("CONCAT('l: ', @number, ',f: ', \" fldint\" )" , True ))
2097
+ layer .setDefaultValueDefinition (1 , QgsDefaultValue ("1 * @number" , False ))
2098
+
2099
+ QgsExpressionContextUtils .setLayerVariable (layer , 'number' , 4 )
2100
+
2101
+ layer .startEditing ()
2102
+ feature = QgsFeature ()
2103
+ feature .setFields (layer .fields ())
2104
+ feature .setValid (True )
2105
+
2106
+ feature .setAttribute (1 , layer .defaultValue (1 , feature ))
2107
+ feature .setAttribute (0 , layer .defaultValue (0 , feature ))
2108
+
2109
+ self .assertTrue (layer .addFeature (feature ))
2110
+ fid = feature .id ()
2111
+ self .assertEqual (layer .getFeature (fid )['fldtxt' ], 'l: 4,f: 4' )
2112
+ self .assertEqual (layer .getFeature (fid )['fldint' ], 4 )
2113
+
2114
+ layer .changeAttributeValue (fid , 1 , 20 )
2115
+ self .assertEqual (layer .getFeature (fid )['fldtxt' ], 'l: 4,f: 20' )
2116
+ self .assertEqual (layer .getFeature (fid )['fldint' ], 20 )
2117
+
2092
2118
def testGetSetConstraints (self ):
2093
2119
""" test getting and setting field constraints """
2094
2120
layer = createLayerWithOnePoint ()
0 commit comments