Exemplo n.º 1
0
    def test_representValue(self):

        first_layer = QgsVectorLayer("none?field=foreign_key:integer",
                                     "first_layer", "memory")
        self.assertTrue(first_layer.isValid())
        second_layer = QgsVectorLayer("none?field=pkid:integer&field=decoded:string",
                                      "second_layer", "memory")
        self.assertTrue(second_layer.isValid())
        QgsProject.instance().addMapLayer(second_layer)
        f = QgsFeature()
        f.setAttributes([123])
        first_layer.dataProvider().addFeatures([f])
        f = QgsFeature()
        f.setAttributes([123, 'decoded_val'])
        second_layer.dataProvider().addFeatures([f])

        fieldFormatter = QgsValueRelationFieldFormatter()

        # Everything valid
        config = {'Layer': second_layer.id(), 'Key': 'pkid', 'Value': 'decoded'}
        self.assertEqual(fieldFormatter.representValue(first_layer, 0, config, None, '123'), 'decoded_val')

        # Code not find match in foreign layer
        config = {'Layer': second_layer.id(), 'Key': 'pkid', 'Value': 'decoded'}
        self.assertEqual(fieldFormatter.representValue(first_layer, 0, config, None, '456'), '(456)')

        # Missing Layer
        config = {'Key': 'pkid', 'Value': 'decoded'}
        self.assertEqual(fieldFormatter.representValue(first_layer, 0, config, None, '456'), '(456)')

        # Invalid Layer
        config = {'Layer': 'invalid', 'Key': 'pkid', 'Value': 'decoded'}
        self.assertEqual(fieldFormatter.representValue(first_layer, 0, config, None, '456'), '(456)')

        # Invalid Key
        config = {'Layer': second_layer.id(), 'Key': 'invalid', 'Value': 'decoded'}
        self.assertEqual(fieldFormatter.representValue(first_layer, 0, config, None, '456'), '(456)')

        # Invalid Value
        config = {'Layer': second_layer.id(), 'Key': 'pkid', 'Value': 'invalid'}
        self.assertEqual(fieldFormatter.representValue(first_layer, 0, config, None, '456'), '(456)')

        QgsProject.instance().removeMapLayer(second_layer.id())
Exemplo n.º 2
0
    def test_expressionRequiresFormScope(self):

        res = list(QgsValueRelationFieldFormatter.expressionFormAttributes("current_value('ONE') AND current_value('TWO')"))
        res = sorted(res)
        self.assertEqual(res, ['ONE', 'TWO'])

        res = list(QgsValueRelationFieldFormatter.expressionFormVariables("@current_geometry"))
        self.assertEqual(res, ['current_geometry'])

        self.assertFalse(QgsValueRelationFieldFormatter.expressionRequiresFormScope(""))
        self.assertTrue(QgsValueRelationFieldFormatter.expressionRequiresFormScope("current_value('TWO')"))
        self.assertTrue(QgsValueRelationFieldFormatter.expressionRequiresFormScope("current_value ( 'TWO' )"))
        self.assertTrue(QgsValueRelationFieldFormatter.expressionRequiresFormScope("@current_geometry"))

        self.assertTrue(QgsValueRelationFieldFormatter.expressionIsUsable("", QgsFeature()))
        self.assertFalse(QgsValueRelationFieldFormatter.expressionIsUsable("@current_geometry", QgsFeature()))
        self.assertFalse(QgsValueRelationFieldFormatter.expressionIsUsable("current_value ( 'TWO' )", QgsFeature()))

        layer = QgsVectorLayer("none?field=pkid:integer&field=decoded:string",
                               "layer", "memory")
        self.assertTrue(layer.isValid())
        QgsProject.instance().addMapLayer(layer)
        f = QgsFeature(layer.fields())
        f.setAttributes([1, 'value'])
        point = QgsGeometry.fromPointXY(QgsPointXY(123, 456))
        f.setGeometry(point)
        self.assertTrue(QgsValueRelationFieldFormatter.expressionIsUsable("current_geometry", f))
        self.assertFalse(QgsValueRelationFieldFormatter.expressionIsUsable("current_value ( 'TWO' )", f))
        self.assertTrue(QgsValueRelationFieldFormatter.expressionIsUsable("current_value ( 'pkid' )", f))
        self.assertTrue(QgsValueRelationFieldFormatter.expressionIsUsable("@current_geometry current_value ( 'pkid' )", f))

        QgsProject.instance().removeMapLayer(layer.id())
Exemplo n.º 3
0
 def _test(a, b):
     self.assertEqual(QgsValueRelationFieldFormatter.valueToStringList(a), b)
Exemplo n.º 4
0
 def _test(a, b):
     self.assertEqual(
         QgsValueRelationFieldFormatter.valueToStringList(a), b)
Exemplo n.º 5
0
    def test_representValue(self):

        first_layer = QgsVectorLayer("none?field=foreign_key:integer",
                                     "first_layer", "memory")
        self.assertTrue(first_layer.isValid())
        second_layer = QgsVectorLayer(
            "none?field=pkid:integer&field=decoded:string", "second_layer",
            "memory")
        self.assertTrue(second_layer.isValid())
        QgsProject.instance().addMapLayer(second_layer)
        f = QgsFeature()
        f.setAttributes([123])
        first_layer.dataProvider().addFeatures([f])
        f = QgsFeature()
        f.setAttributes([123, 'decoded_val'])
        second_layer.dataProvider().addFeatures([f])

        fieldFormatter = QgsValueRelationFieldFormatter()

        # Everything valid
        config = {
            'Layer': second_layer.id(),
            'Key': 'pkid',
            'Value': 'decoded'
        }
        self.assertEqual(
            fieldFormatter.representValue(first_layer, 0, config, None, '123'),
            'decoded_val')

        # Code not find match in foreign layer
        config = {
            'Layer': second_layer.id(),
            'Key': 'pkid',
            'Value': 'decoded'
        }
        self.assertEqual(
            fieldFormatter.representValue(first_layer, 0, config, None, '456'),
            '(456)')

        # Missing Layer
        config = {'Key': 'pkid', 'Value': 'decoded'}
        self.assertEqual(
            fieldFormatter.representValue(first_layer, 0, config, None, '456'),
            '(456)')

        # Invalid Layer
        config = {'Layer': 'invalid', 'Key': 'pkid', 'Value': 'decoded'}
        self.assertEqual(
            fieldFormatter.representValue(first_layer, 0, config, None, '456'),
            '(456)')

        # Invalid Key
        config = {
            'Layer': second_layer.id(),
            'Key': 'invalid',
            'Value': 'decoded'
        }
        self.assertEqual(
            fieldFormatter.representValue(first_layer, 0, config, None, '456'),
            '(456)')

        # Invalid Value
        config = {
            'Layer': second_layer.id(),
            'Key': 'pkid',
            'Value': 'invalid'
        }
        self.assertEqual(
            fieldFormatter.representValue(first_layer, 0, config, None, '456'),
            '(456)')

        QgsProject.instance().removeMapLayer(second_layer.id())
    def test_expressionRequiresFormScope(self):

        res = list(
            QgsValueRelationFieldFormatter.expressionFormAttributes(
                "current_value('ONE') AND current_value('TWO')"))
        res = sorted(res)
        self.assertEqual(res, ['ONE', 'TWO'])

        res = list(
            QgsValueRelationFieldFormatter.expressionFormVariables(
                "@current_geometry"))
        self.assertEqual(res, ['current_geometry'])

        self.assertFalse(
            QgsValueRelationFieldFormatter.expressionRequiresFormScope(""))
        self.assertTrue(
            QgsValueRelationFieldFormatter.expressionRequiresFormScope(
                "current_value('TWO')"))
        self.assertTrue(
            QgsValueRelationFieldFormatter.expressionRequiresFormScope(
                "current_value ( 'TWO' )"))
        self.assertTrue(
            QgsValueRelationFieldFormatter.expressionRequiresFormScope(
                "@current_geometry"))

        self.assertTrue(
            QgsValueRelationFieldFormatter.expressionIsUsable(
                "", QgsFeature()))
        self.assertFalse(
            QgsValueRelationFieldFormatter.expressionIsUsable(
                "@current_geometry", QgsFeature()))
        self.assertFalse(
            QgsValueRelationFieldFormatter.expressionIsUsable(
                "current_value ( 'TWO' )", QgsFeature()))

        layer = QgsVectorLayer("none?field=pkid:integer&field=decoded:string",
                               "layer", "memory")
        self.assertTrue(layer.isValid())
        QgsProject.instance().addMapLayer(layer)
        f = QgsFeature(layer.fields())
        f.setAttributes([1, 'value'])
        point = QgsGeometry.fromPointXY(QgsPointXY(123, 456))
        f.setGeometry(point)
        self.assertTrue(
            QgsValueRelationFieldFormatter.expressionIsUsable(
                "current_geometry", f))
        self.assertFalse(
            QgsValueRelationFieldFormatter.expressionIsUsable(
                "current_value ( 'TWO' )", f))
        self.assertTrue(
            QgsValueRelationFieldFormatter.expressionIsUsable(
                "current_value ( 'pkid' )", f))
        self.assertTrue(
            QgsValueRelationFieldFormatter.expressionIsUsable(
                "@current_geometry current_value ( 'pkid' )", f))

        QgsProject.instance().removeMapLayer(layer.id())