def testUniqueConstraint(self): vl = QgsVectorLayer( "dbname=%s table=test_constraints key='id'" % self.dbname, "test_constraints", "spatialite") self.assertTrue(vl.isValid()) self.assertEqual(len(vl.fields()), 5) # test some bad field indexes self.assertEqual(vl.dataProvider().fieldConstraints(-1), QgsFieldConstraints.Constraints()) self.assertEqual(vl.dataProvider().fieldConstraints(1001), QgsFieldConstraints.Constraints()) self.assertTrue(vl.dataProvider().fieldConstraints(0) & QgsFieldConstraints.ConstraintUnique) self.assertFalse(vl.dataProvider().fieldConstraints(1) & QgsFieldConstraints.ConstraintUnique) self.assertTrue(vl.dataProvider().fieldConstraints(2) & QgsFieldConstraints.ConstraintUnique) self.assertFalse(vl.dataProvider().fieldConstraints(3) & QgsFieldConstraints.ConstraintUnique) self.assertTrue(vl.dataProvider().fieldConstraints(4) & QgsFieldConstraints.ConstraintUnique) # test that constraints have been saved to fields correctly fields = vl.fields() self.assertTrue( fields.at(0).constraints().constraints() & QgsFieldConstraints.ConstraintUnique) self.assertEqual( fields.at(0).constraints().constraintOrigin( QgsFieldConstraints.ConstraintUnique), QgsFieldConstraints.ConstraintOriginProvider) self.assertFalse( fields.at(1).constraints().constraints() & QgsFieldConstraints.ConstraintUnique) self.assertTrue( fields.at(2).constraints().constraints() & QgsFieldConstraints.ConstraintUnique) self.assertEqual( fields.at(2).constraints().constraintOrigin( QgsFieldConstraints.ConstraintUnique), QgsFieldConstraints.ConstraintOriginProvider) self.assertFalse( fields.at(3).constraints().constraints() & QgsFieldConstraints.ConstraintUnique) self.assertTrue( fields.at(4).constraints().constraints() & QgsFieldConstraints.ConstraintUnique) self.assertEqual( fields.at(4).constraints().constraintOrigin( QgsFieldConstraints.ConstraintUnique), QgsFieldConstraints.ConstraintOriginProvider)
def testUniqueConstraint(self): vl = QgsVectorLayer( '%s table="qgis_test"."constraints" sql=' % (self.dbconn), "constraints", "postgres") self.assertTrue(vl.isValid()) self.assertEqual(len(vl.fields()), 4) # test some bad field indexes self.assertEqual(vl.dataProvider().fieldConstraints(-1), QgsFieldConstraints.Constraints()) self.assertEqual(vl.dataProvider().fieldConstraints(1001), QgsFieldConstraints.Constraints()) self.assertTrue(vl.dataProvider().fieldConstraints(0) & QgsFieldConstraints.ConstraintUnique) self.assertTrue(vl.dataProvider().fieldConstraints(1) & QgsFieldConstraints.ConstraintUnique) self.assertTrue(vl.dataProvider().fieldConstraints(2) & QgsFieldConstraints.ConstraintUnique) self.assertFalse(vl.dataProvider().fieldConstraints(3) & QgsFieldConstraints.ConstraintUnique) # test that constraints have been saved to fields correctly fields = vl.fields() self.assertTrue( fields.at(0).constraints().constraints() & QgsFieldConstraints.ConstraintUnique) self.assertEqual( fields.at(0).constraints().constraintOrigin( QgsFieldConstraints.ConstraintUnique), QgsFieldConstraints.ConstraintOriginProvider) self.assertTrue( fields.at(1).constraints().constraints() & QgsFieldConstraints.ConstraintUnique) self.assertEqual( fields.at(1).constraints().constraintOrigin( QgsFieldConstraints.ConstraintUnique), QgsFieldConstraints.ConstraintOriginProvider) self.assertTrue( fields.at(2).constraints().constraints() & QgsFieldConstraints.ConstraintUnique) self.assertEqual( fields.at(2).constraints().constraintOrigin( QgsFieldConstraints.ConstraintUnique), QgsFieldConstraints.ConstraintOriginProvider) self.assertFalse( fields.at(3).constraints().constraints() & QgsFieldConstraints.ConstraintUnique)
def testNotNullConstraint(self): """ test detection of not null constraint on OGR layer """ tmpfile = os.path.join(self.basetestpath, 'testNotNullConstraint.sqlite') ds = ogr.GetDriverByName('SQLite').CreateDataSource(tmpfile) lyr = ds.CreateLayer('test', geom_type=ogr.wkbPoint, options=['FID=fid']) lyr.CreateField(ogr.FieldDefn('field1', ogr.OFTInteger)) fld2 = ogr.FieldDefn('field2', ogr.OFTInteger) fld2.SetNullable(False) lyr.CreateField(fld2) ds = None vl = QgsVectorLayer('{}'.format(tmpfile), 'test', 'ogr') self.assertTrue(vl.isValid()) # test some bad indexes self.assertEqual(vl.dataProvider().fieldConstraints(-1), QgsFieldConstraints.Constraints()) self.assertEqual(vl.dataProvider().fieldConstraints(1001), QgsFieldConstraints.Constraints()) 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.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)