def testFieldTooltipExtended(self): layer = QgsVectorLayer("Point?", "tooltip", "memory") f = QgsField('my_real', QVariant.Double, 'real', 8, 3, 'Comment text') layer.addExpressionField('1+1', f) layer.updateFields() self.assertEqual(QgsFieldModel.fieldToolTipExtended(QgsField('my_string', QVariant.String, 'string'), layer), '') self.assertEqual(QgsFieldModel.fieldToolTipExtended(f, layer), "<b>my_real</b><br><font style='font-family:monospace; white-space: nowrap;'>real(8, 3) NULL</font><br><em>Comment text</em><br><font style='font-family:monospace;'>1+1</font>") f.setAlias('my alias') constraints = f.constraints() constraints.setConstraint(QgsFieldConstraints.ConstraintUnique) f.setConstraints(constraints) self.assertEqual(QgsFieldModel.fieldToolTipExtended(f, layer), "<b>my alias</b> (my_real)<br><font style='font-family:monospace; white-space: nowrap;'>real(8, 3) NULL UNIQUE</font><br><em>Comment text</em><br><font style='font-family:monospace;'>1+1</font>")
def testWidget(self): """Test widget operations""" widget = QgsFieldMappingWidget() for i in range(10): widget.appendField(QgsField(str(i))) self.assertTrue(widget.model().rowCount(QModelIndex()), 10) def _compare(widget, expected): actual = [] for field in widget.mapping(): actual.append(int(field.originalName)) self.assertEqual(actual, expected) _compare(widget, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) selection_model = widget.selectionModel() selection_model.clear() for i in range(0, 10, 2): selection_model.select(widget.model().index(i, 0), QItemSelectionModel.Select) self.assertTrue(widget.moveSelectedFieldsDown()) _compare(widget, [1, 0, 3, 2, 5, 4, 7, 6, 9, 8]) selection_model.clear() for i in range(1, 10, 2): selection_model.select(widget.model().index(i, 0), QItemSelectionModel.Select) self.assertTrue(widget.moveSelectedFieldsUp()) _compare(widget, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) selection_model.clear() for i in range(0, 10, 2): selection_model.select(widget.model().index(i, 0), QItemSelectionModel.Select) self.assertTrue(widget.removeSelectedFields()) _compare(widget, [1, 3, 5, 7, 9]) # Test set destination fields widget.setSourceFields(self.source_fields) widget.setDestinationFields(self.destination_fields) mapping = widget.mapping() self.assertEqual(mapping[0].field.name(), 'destination_field1') self.assertEqual(mapping[1].field.name(), 'destination_field2') self.assertEqual(mapping[2].field.name(), 'destination_field3') self.assertEqual(mapping[0].originalName, 'destination_field1') self.assertEqual(mapping[1].originalName, 'destination_field2') self.assertEqual(mapping[2].originalName, 'destination_field3') # Test constraints f = QgsField('constraint_field', QVariant.Int) constraints = QgsFieldConstraints() constraints.setConstraint(QgsFieldConstraints.ConstraintNotNull, QgsFieldConstraints.ConstraintOriginProvider) constraints.setConstraint(QgsFieldConstraints.ConstraintExpression, QgsFieldConstraints.ConstraintOriginProvider) constraints.setConstraint(QgsFieldConstraints.ConstraintUnique, QgsFieldConstraints.ConstraintOriginProvider) f.setConstraints(constraints) fields = QgsFields() fields.append(f) widget.setDestinationFields(fields) self.assertEqual(widget.model().data(widget.model().index(0, 5, QModelIndex()), Qt.DisplayRole), "Constraints active") self.assertEqual(widget.model().data(widget.model().index(0, 5, QModelIndex()), Qt.ToolTipRole), "Unique<br>Not null<br>Expression") self.assertEqual(widget.model().data(widget.model().index(0, 5, QModelIndex()), Qt.BackgroundColorRole), QColor(255, 224, 178))
def test_field_to_json(self): field = QgsField('my name', QVariant.LongLong) field.setAlias('my alias') self.assertEqual( QgsArcGisRestUtils.fieldDefinitionToJson(field), { 'alias': 'my alias', 'editable': True, 'name': 'my name', 'nullable': True, 'type': 'esriFieldTypeInteger' }) field = QgsField('my name', QVariant.Int) self.assertEqual( QgsArcGisRestUtils.fieldDefinitionToJson(field), { 'editable': True, 'name': 'my name', 'nullable': True, 'type': 'esriFieldTypeSmallInteger' }) field = QgsField('my name', QVariant.Double) self.assertEqual( QgsArcGisRestUtils.fieldDefinitionToJson(field), { 'editable': True, 'name': 'my name', 'nullable': True, 'type': 'esriFieldTypeDouble' }) field = QgsField('my name', QVariant.String) self.assertEqual( QgsArcGisRestUtils.fieldDefinitionToJson(field), { 'editable': True, 'name': 'my name', 'nullable': True, 'type': 'esriFieldTypeString' }) field = QgsField('my name', QVariant.DateTime) self.assertEqual( QgsArcGisRestUtils.fieldDefinitionToJson(field), { 'editable': True, 'name': 'my name', 'nullable': True, 'type': 'esriFieldTypeDate' }) field = QgsField('my name', QVariant.ByteArray) self.assertEqual( QgsArcGisRestUtils.fieldDefinitionToJson(field), { 'editable': True, 'name': 'my name', 'nullable': True, 'type': 'esriFieldTypeBlob' }) # unsupported type field = QgsField('my name', QVariant.Time) self.assertEqual( QgsArcGisRestUtils.fieldDefinitionToJson(field), { 'editable': True, 'name': 'my name', 'nullable': True, 'type': 'esriFieldTypeString' }) # not nullable field = QgsField('my name', QVariant.Int) field_constraints = field.constraints() field_constraints.setConstraint( QgsFieldConstraints.Constraint.ConstraintNotNull) field.setConstraints(field_constraints) self.assertEqual( QgsArcGisRestUtils.fieldDefinitionToJson(field), { 'editable': True, 'name': 'my name', 'nullable': False, 'type': 'esriFieldTypeSmallInteger' })