diff --git a/tests/src/python/test_qgsrulebasedrenderer.py b/tests/src/python/test_qgsrulebasedrenderer.py index d7197ab7fc4..9d807f45c10 100644 --- a/tests/src/python/test_qgsrulebasedrenderer.py +++ b/tests/src/python/test_qgsrulebasedrenderer.py @@ -40,7 +40,8 @@ from qgis.core import (QgsVectorLayer, QgsRendererCategory, QgsCategorizedSymbolRenderer, QgsGraduatedSymbolRenderer, - QgsRendererRange + QgsRendererRange, + QgsRenderContext ) from qgis.testing import start_app, unittest from utilities import unitTestDataPath @@ -101,6 +102,27 @@ class TestQgsRulebasedRenderer(unittest.TestCase): assert result + def testWillRenderFeature(self): + vl = self.mapsettings.layers()[0] + ft = vl.getFeature(0) # 'id' = 1 + renderer = vl.renderer() + + ctx = QgsRenderContext.fromMapSettings(self.mapsettings) + ctx.expressionContext().setFeature(ft) + + renderer.rootRule().children()[0].setActive(False) + renderer.rootRule().children()[1].setActive(True) + renderer.rootRule().children()[2].setActive(True) + + renderer.startRender(ctx, vl.fields()) # build mActiveChlidren + + rendered = renderer.willRenderFeature(ft, ctx) + renderer.rootRule().children()[0].setActive(True) + assert rendered == False + + rendered = renderer.willRenderFeature(ft, ctx) + assert rendered == True + def testRefineWithCategories(self): # Test refining rule with categories (refs #10815)