@@ -359,17 +359,27 @@ def testImportKey(self):
359
359
360
360
def testKey (lyr , key , kfnames ):
361
361
self .execSQLCommand ('DROP TABLE IF EXISTS qgis_test.import_test' )
362
- uri = '%s table="qgis_test"."import_test" (g) key=\' %s\' ' % (self .dbconn , key )
362
+ uri = '%s table="qgis_test"."import_test" (g)' % self .dbconn
363
+ if key is not None :
364
+ uri += ' key=\' %s\' ' % key
363
365
err = QgsVectorLayerImport .importLayer (lyr , uri , "postgres" , lyr .crs ())
364
366
self .assertEqual (err [0 ], QgsVectorLayerImport .NoError ,
365
367
'unexpected import error {0}' .format (err ))
366
368
olyr = QgsVectorLayer (uri , "y" , "postgres" )
367
369
self .assertTrue (olyr .isValid ())
368
370
flds = lyr .fields ()
369
371
oflds = olyr .fields ()
370
- self .assertEquals (oflds .size (), flds .size ())
371
- for i in range (0 , oflds .size ()):
372
- self .assertEqual (oflds [i ].name (), flds [i ].name ())
372
+ if key is None :
373
+ # if the pkey was not given, it will create a pkey
374
+ self .assertEquals (oflds .size (), flds .size () + 1 )
375
+ self .assertEquals (oflds [0 ].name (), kfnames [0 ])
376
+ for i in range (flds .size ()):
377
+ self .assertEqual (oflds [i + 1 ].name (), flds [i ].name ())
378
+ else :
379
+ # pkey was given, no extra field generated
380
+ self .assertEquals (oflds .size (), flds .size ())
381
+ for i in range (oflds .size ()):
382
+ self .assertEqual (oflds [i ].name (), flds [i ].name ())
373
383
pks = olyr .pkAttributeList ()
374
384
self .assertEquals (len (pks ), len (kfnames ))
375
385
for i in range (0 , len (kfnames )):
@@ -379,6 +389,7 @@ def testKey(lyr, key, kfnames):
379
389
testKey (lyr , '"f1"' , ['f1' ])
380
390
testKey (lyr , '"f1","F2"' , ['f1' , 'F2' ])
381
391
testKey (lyr , '"f1","F2","f3"' , ['f1' , 'F2' , 'f3' ])
392
+ testKey (lyr , None , ['id' ])
382
393
383
394
384
395
if __name__ == '__main__' :
0 commit comments