Skip to content

Commit a4637a6

Browse files
committed
Simple tests for style load, insert and remove from Postgis provider
1 parent bbf6ec0 commit a4637a6

File tree

1 file changed

+59
-1
lines changed

1 file changed

+59
-1
lines changed

tests/src/python/test_provider_postgres.py

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
QgsVectorLayerUtils
3434
)
3535
from qgis.gui import QgsEditorWidgetRegistry
36-
from qgis.PyQt.QtCore import QSettings, QDate, QTime, QDateTime, QVariant
36+
from qgis.PyQt.QtCore import QSettings, QDate, QTime, QDateTime, QVariant, QDir
3737
from qgis.testing import start_app, unittest
3838
from utilities import unitTestDataPath
3939
from providertestbase import ProviderTestCase
@@ -639,6 +639,64 @@ def testKey(lyr, key, kfnames):
639639
testKey(lyr, '"f1","F2","f3"', ['f1', 'F2', 'f3'])
640640
testKey(lyr, None, ['id'])
641641

642+
def testStyle(self):
643+
self.execSQLCommand('DROP TABLE IF EXISTS layer_styles CASCADE')
644+
645+
vl = self.getEditableLayer()
646+
self.assertTrue(vl.isValid())
647+
self.assertTrue(vl.dataProvider().isSaveAndLoadStyleToDBSupported())
648+
self.assertTrue(vl.dataProvider().isDeleteStyleFromDBSupported())
649+
650+
# table layer_styles does not exit
651+
related_count, idlist, namelist, desclist, errmsg = vl.listStylesInDatabase()
652+
self.assertEqual(related_count, -1)
653+
self.assertEqual(idlist, [])
654+
self.assertEqual(namelist, [])
655+
self.assertEqual(desclist, [])
656+
self.assertNotEqual(errmsg, "")
657+
658+
qml, errmsg = vl.getStyleFromDatabase("1")
659+
self.assertEqual(qml, "")
660+
self.assertNotEqual(errmsg, "")
661+
662+
mFilePath = QDir.toNativeSeparators('%s/symbol_layer/%s.qml' % (unitTestDataPath(), "singleSymbol"))
663+
status = vl.loadNamedStyle(mFilePath)
664+
self.assertTrue(status)
665+
666+
errorMsg = vl.saveStyleToDatabase("name", "description", False, "")
667+
self.assertEqual(errorMsg, "")
668+
669+
qml, errmsg = vl.getStyleFromDatabase("not_existing")
670+
self.assertEqual(qml, "")
671+
self.assertNotEqual(errmsg, "")
672+
673+
related_count, idlist, namelist, desclist, errmsg = vl.listStylesInDatabase()
674+
self.assertEqual(related_count, 1)
675+
self.assertEqual(errmsg, "")
676+
self.assertEqual(idlist, ['1'])
677+
self.assertEqual(namelist, ['name'])
678+
self.assertEqual(desclist, ['description'])
679+
680+
qml, errmsg = vl.getStyleFromDatabase("100")
681+
self.assertEqual(qml, "")
682+
self.assertNotEqual(errmsg, "")
683+
684+
qml, errmsg = vl.getStyleFromDatabase("1")
685+
self.assertTrue(qml.startswith('<!DOCTYPE qgis'), qml)
686+
self.assertEqual(errmsg, "")
687+
688+
uri = vl.dataProvider().dataSourceUri()
689+
vl.dataProvider().deleteStyleById(uri, "1", errmsg)
690+
self.assertEqual(errmsg, "")
691+
692+
# table layer_styles does exit, but is now empty
693+
related_count, idlist, namelist, desclist, errmsg = vl.listStylesInDatabase()
694+
self.assertEqual(related_count, 0)
695+
self.assertEqual(idlist, [])
696+
self.assertEqual(namelist, [])
697+
self.assertEqual(desclist, [])
698+
self.assertEqual(errmsg, "")
699+
642700

643701
class TestPyQgsPostgresProviderCompoundKey(unittest.TestCase, ProviderTestCase):
644702

0 commit comments

Comments
 (0)