mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-02 00:02:12 -05:00
Fix test for primary key constraints
This commit is contained in:
parent
73d6765e89
commit
f97b5a54d0
@ -634,7 +634,7 @@ class TestPyQgsOGRProviderGpkg(unittest.TestCase):
|
||||
self.assertTrue(vl.commitChanges())
|
||||
|
||||
def test_SplitFeature(self):
|
||||
"""Test gpkg feature can be splitted"""
|
||||
"""Test gpkg feature can be split"""
|
||||
tmpfile = os.path.join(self.basetestpath, 'testGeopackageSplitFeatures.gpkg')
|
||||
ds = ogr.GetDriverByName('GPKG').CreateDataSource(tmpfile)
|
||||
lyr = ds.CreateLayer('test', geom_type=ogr.wkbPolygon)
|
||||
|
@ -19,7 +19,7 @@ import tempfile
|
||||
import shutil
|
||||
from osgeo import gdal, ogr
|
||||
|
||||
from qgis.core import QgsVectorLayer, QgsFeature, QgsFeatureRequest, QgsFieldConstraints, NULL
|
||||
from qgis.core import QgsVectorLayer, QgsFeature, QgsFeatureRequest, QgsFieldConstraints, QgsFieldConstraints, QgsPointXY, NULL
|
||||
from qgis.testing import start_app, unittest
|
||||
from qgis.PyQt.QtCore import QDate, QTime, QDateTime
|
||||
|
||||
@ -147,13 +147,13 @@ class TestPyQgsOGRProviderSqlite(unittest.TestCase):
|
||||
self.assertEqual(vl.dataProvider().fieldConstraints(-1), QgsFieldConstraints.Constraints())
|
||||
self.assertEqual(vl.dataProvider().fieldConstraints(1001), QgsFieldConstraints.Constraints())
|
||||
|
||||
self.assertFalse(vl.dataProvider().fieldConstraints(0) & QgsFieldConstraints.ConstraintNotNull)
|
||||
self.assertTrue(vl.dataProvider().fieldConstraints(0) & QgsFieldConstraints.ConstraintNotNull)
|
||||
self.assertFalse(vl.dataProvider().fieldConstraints(1) & QgsFieldConstraints.ConstraintNotNull)
|
||||
self.assertTrue(vl.dataProvider().fieldConstraints(2) & QgsFieldConstraints.ConstraintNotNull)
|
||||
|
||||
# test that constraints have been saved to fields correctly
|
||||
fields = vl.fields()
|
||||
self.assertFalse(fields.at(0).constraints().constraints() & QgsFieldConstraints.ConstraintNotNull)
|
||||
self.assertTrue(fields.at(0).constraints().constraints() & QgsFieldConstraints.ConstraintNotNull)
|
||||
self.assertFalse(fields.at(1).constraints().constraints() & QgsFieldConstraints.ConstraintNotNull)
|
||||
self.assertTrue(fields.at(2).constraints().constraints() & QgsFieldConstraints.ConstraintNotNull)
|
||||
self.assertEqual(fields.at(2).constraints().constraintOrigin(QgsFieldConstraints.ConstraintNotNull), QgsFieldConstraints.ConstraintOriginProvider)
|
||||
@ -270,6 +270,38 @@ class TestPyQgsOGRProviderSqlite(unittest.TestCase):
|
||||
vl.reload()
|
||||
self.assertTrue(vl.fields().at(vl.fields().count() - 1).name() == "orig_ogc_fid")
|
||||
|
||||
def test_SplitFeature(self):
|
||||
"""Test sqlite feature can be split"""
|
||||
tmpfile = os.path.join(self.basetestpath, 'testGeopackageSplitFeatures.sqlite')
|
||||
ds = ogr.GetDriverByName('SQlite').CreateDataSource(tmpfile)
|
||||
lyr = ds.CreateLayer('test', geom_type=ogr.wkbPolygon)
|
||||
lyr.CreateField(ogr.FieldDefn('str_field', ogr.OFTString))
|
||||
f = ogr.Feature(lyr.GetLayerDefn())
|
||||
f.SetGeometry(ogr.CreateGeometryFromWkt('POLYGON ((0 0,0 1,1 1,1 0,0 0))'))
|
||||
lyr.CreateFeature(f)
|
||||
f = None
|
||||
ds = None
|
||||
|
||||
layer = QgsVectorLayer(u'{}'.format(tmpfile) + "|layername=" + "test", 'test', u'ogr')
|
||||
|
||||
# Check that pk field has unique constraint
|
||||
fields = layer.fields()
|
||||
pkfield = fields.at(0)
|
||||
self.assertTrue(pkfield.constraints().constraints() & QgsFieldConstraints.ConstraintUnique)
|
||||
|
||||
self.assertTrue(layer.isValid())
|
||||
self.assertTrue(layer.isSpatial())
|
||||
self.assertEqual([f for f in layer.getFeatures()][0].geometry().asWkt(), 'Polygon ((0 0, 0 1, 1 1, 1 0, 0 0))')
|
||||
layer.startEditing()
|
||||
self.assertEqual(layer.splitFeatures([QgsPointXY(0.5, 0), QgsPointXY(0.5, 1)], 0), 0)
|
||||
self.assertTrue(layer.commitChanges())
|
||||
self.assertEqual(layer.featureCount(), 2)
|
||||
|
||||
layer = QgsVectorLayer(u'{}'.format(tmpfile) + "|layername=" + "test", 'test', u'ogr')
|
||||
self.assertEqual(layer.featureCount(), 2)
|
||||
self.assertEqual([f for f in layer.getFeatures()][0].geometry().asWkt(), 'Polygon ((0.5 0, 0.5 1, 1 1, 1 0, 0.5 0))')
|
||||
self.assertEqual([f for f in layer.getFeatures()][1].geometry().asWkt(), 'Polygon ((0.5 1, 0.5 0, 0 0, 0 1, 0.5 1))')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
Loading…
x
Reference in New Issue
Block a user