@@ -471,17 +471,27 @@ def testImportKey(self):
471
471
472
472
def testKey (lyr , key , kfnames ):
473
473
self .execSQLCommand ('DROP TABLE IF EXISTS qgis_test.import_test' )
474
- uri = '%s table="qgis_test"."import_test" (g) key=\' %s\' ' % (self .dbconn , key )
474
+ uri = '%s table="qgis_test"."import_test" (g)' % self .dbconn
475
+ if key is not None :
476
+ uri += ' key=\' %s\' ' % key
475
477
err = QgsVectorLayerImport .importLayer (lyr , uri , "postgres" , lyr .crs ())
476
478
self .assertEqual (err [0 ], QgsVectorLayerImport .NoError ,
477
479
'unexpected import error {0}' .format (err ))
478
480
olyr = QgsVectorLayer (uri , "y" , "postgres" )
479
481
self .assertTrue (olyr .isValid ())
480
482
flds = lyr .fields ()
481
483
oflds = olyr .fields ()
482
- self .assertEquals (oflds .size (), flds .size ())
483
- for i in range (0 , oflds .size ()):
484
- self .assertEqual (oflds [i ].name (), flds [i ].name ())
484
+ if key is None :
485
+ # if the pkey was not given, it will create a pkey
486
+ self .assertEquals (oflds .size (), flds .size () + 1 )
487
+ self .assertEquals (oflds [0 ].name (), kfnames [0 ])
488
+ for i in range (flds .size ()):
489
+ self .assertEqual (oflds [i + 1 ].name (), flds [i ].name ())
490
+ else :
491
+ # pkey was given, no extra field generated
492
+ self .assertEquals (oflds .size (), flds .size ())
493
+ for i in range (oflds .size ()):
494
+ self .assertEqual (oflds [i ].name (), flds [i ].name ())
485
495
pks = olyr .pkAttributeList ()
486
496
self .assertEquals (len (pks ), len (kfnames ))
487
497
for i in range (0 , len (kfnames )):
@@ -491,6 +501,7 @@ def testKey(lyr, key, kfnames):
491
501
testKey (lyr , '"f1"' , ['f1' ])
492
502
testKey (lyr , '"f1","F2"' , ['f1' , 'F2' ])
493
503
testKey (lyr , '"f1","F2","f3"' , ['f1' , 'F2' , 'f3' ])
504
+ testKey (lyr , None , ['id' ])
494
505
495
506
496
507
class TestPyQgsPostgresProviderCompoundKey (unittest .TestCase , ProviderTestCase ):
0 commit comments