@@ -471,17 +471,27 @@ def testImportKey(self):
471471
472472 def testKey (lyr , key , kfnames ):
473473 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
475477 err = QgsVectorLayerImport .importLayer (lyr , uri , "postgres" , lyr .crs ())
476478 self .assertEqual (err [0 ], QgsVectorLayerImport .NoError ,
477479 'unexpected import error {0}' .format (err ))
478480 olyr = QgsVectorLayer (uri , "y" , "postgres" )
479481 self .assertTrue (olyr .isValid ())
480482 flds = lyr .fields ()
481483 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 ())
485495 pks = olyr .pkAttributeList ()
486496 self .assertEquals (len (pks ), len (kfnames ))
487497 for i in range (0 , len (kfnames )):
@@ -491,6 +501,7 @@ def testKey(lyr, key, kfnames):
491501 testKey (lyr , '"f1"' , ['f1' ])
492502 testKey (lyr , '"f1","F2"' , ['f1' , 'F2' ])
493503 testKey (lyr , '"f1","F2","f3"' , ['f1' , 'F2' , 'f3' ])
504+ testKey (lyr , None , ['id' ])
494505
495506
496507class TestPyQgsPostgresProviderCompoundKey (unittest .TestCase , ProviderTestCase ):
0 commit comments