|
33 | 33 | QgsVectorLayerUtils |
34 | 34 | ) |
35 | 35 | 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 |
37 | 37 | from qgis.testing import start_app, unittest |
38 | 38 | from utilities import unitTestDataPath |
39 | 39 | from providertestbase import ProviderTestCase |
@@ -639,6 +639,64 @@ def testKey(lyr, key, kfnames): |
639 | 639 | testKey(lyr, '"f1","F2","f3"', ['f1', 'F2', 'f3']) |
640 | 640 | testKey(lyr, None, ['id']) |
641 | 641 |
|
| 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 | + |
642 | 700 |
|
643 | 701 | class TestPyQgsPostgresProviderCompoundKey(unittest.TestCase, ProviderTestCase): |
644 | 702 |
|
|
0 commit comments