aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/tests/QtSql
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside6/tests/QtSql')
-rw-r--r--sources/pyside6/tests/QtSql/CMakeLists.txt6
-rw-r--r--sources/pyside6/tests/QtSql/QtSql.pyproject5
-rw-r--r--sources/pyside6/tests/QtSql/bug_1013.py43
-rw-r--r--sources/pyside6/tests/QtSql/qsqldatabaseandqueries_test.py86
-rw-r--r--sources/pyside6/tests/QtSql/qvarianttype_test.py39
5 files changed, 179 insertions, 0 deletions
diff --git a/sources/pyside6/tests/QtSql/CMakeLists.txt b/sources/pyside6/tests/QtSql/CMakeLists.txt
new file mode 100644
index 000000000..eedb31e98
--- /dev/null
+++ b/sources/pyside6/tests/QtSql/CMakeLists.txt
@@ -0,0 +1,6 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+PYSIDE_TEST(bug_1013.py)
+PYSIDE_TEST(qsqldatabaseandqueries_test.py)
+PYSIDE_TEST(qvarianttype_test.py)
diff --git a/sources/pyside6/tests/QtSql/QtSql.pyproject b/sources/pyside6/tests/QtSql/QtSql.pyproject
new file mode 100644
index 000000000..8282cb404
--- /dev/null
+++ b/sources/pyside6/tests/QtSql/QtSql.pyproject
@@ -0,0 +1,5 @@
+{
+ "files": ["bug_1013.py",
+ "qsqldatabaseandqueries_test.py",
+ "qvarianttype_test.py"]
+}
diff --git a/sources/pyside6/tests/QtSql/bug_1013.py b/sources/pyside6/tests/QtSql/bug_1013.py
new file mode 100644
index 000000000..b47aecb77
--- /dev/null
+++ b/sources/pyside6/tests/QtSql/bug_1013.py
@@ -0,0 +1,43 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import os
+import sys
+import unittest
+
+from pathlib import Path
+sys.path.append(os.fspath(Path(__file__).resolve().parents[1]))
+from init_paths import init_test_paths
+init_test_paths(False)
+
+from PySide6.QtCore import QCoreApplication, QTimer
+from PySide6.QtSql import QSqlDatabase, QSqlQuery, QSqlTableModel
+
+
+class TestBug1013 (unittest.TestCase):
+
+ def someSlot(self, row, record):
+ record.setValue(0, 2)
+ self._wasCalled = True
+
+ def testIt(self):
+ app = QCoreApplication([])
+ db = QSqlDatabase.addDatabase('QSQLITE')
+ db.setDatabaseName(':memory:')
+ db.open()
+ query = QSqlQuery()
+ query.exec('CREATE TABLE "foo" (id INT);')
+ model = QSqlTableModel()
+ model.setTable('foo')
+
+ self._wasCalled = False
+ model.primeInsert.connect(self.someSlot)
+ model.select()
+ QTimer.singleShot(0, lambda: model.insertRow(0) and app.quit())
+ app.exec()
+ self.assertTrue(self._wasCalled)
+ self.assertEqual(model.data(model.index(0, 0)), 2)
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/sources/pyside6/tests/QtSql/qsqldatabaseandqueries_test.py b/sources/pyside6/tests/QtSql/qsqldatabaseandqueries_test.py
new file mode 100644
index 000000000..a3e70a3a7
--- /dev/null
+++ b/sources/pyside6/tests/QtSql/qsqldatabaseandqueries_test.py
@@ -0,0 +1,86 @@
+#!/usr/bin/python
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+'''Test cases for QtSql database creation, destruction and queries'''
+
+import gc
+import os
+import sys
+import unittest
+
+from pathlib import Path
+sys.path.append(os.fspath(Path(__file__).resolve().parents[1]))
+from init_paths import init_test_paths
+init_test_paths(False)
+
+from PySide6.QtSql import QSqlDatabase, QSqlQuery, QSqlTableModel
+from PySide6.QtWidgets import QApplication, QWidget
+from helper.usesqapplication import UsesQApplication
+
+
+class Foo(QWidget):
+ def __init__(self):
+ super().__init__()
+ self.model = QSqlTableModel()
+
+
+class SqlDatabaseCreationDestructionAndQueries(UsesQApplication):
+ '''Test cases for QtSql database creation, destruction and queries'''
+
+ def setUp(self):
+ # Acquire resources
+ super().setUp()
+ self.assertFalse(not QSqlDatabase.drivers(), "installed Qt has no DB drivers")
+ self.assertTrue("QSQLITE" in QSqlDatabase.drivers(), "\"QSQLITE\" driver not available in this Qt version")
+ self.db = QSqlDatabase.addDatabase("QSQLITE")
+ self.db.setDatabaseName(":memory:")
+ self.assertTrue(self.db.open())
+
+ def tearDown(self):
+ # Release resources
+ self.db.close()
+ QSqlDatabase.removeDatabase(":memory:")
+ del self.db
+ # PYSIDE-535: Need to collect garbage in PyPy to trigger deletion
+ gc.collect()
+ super().tearDown()
+
+ def testTableCreationAndDestruction(self):
+ # Test table creation and destruction
+ query = QSqlQuery()
+ query.exec("CREATE TABLE dummy(id int primary key, dummyfield varchar(20))")
+ query.exec("DROP TABLE dummy")
+ query.clear()
+
+ def testTableInsertionAndRetrieval(self):
+ # Test table creation, insertion and retrieval
+ query = QSqlQuery()
+ query.exec("CREATE TABLE person(id int primary key, "
+ "firstname varchar(20), lastname varchar(20))")
+ query.exec("INSERT INTO person VALUES(101, 'George', 'Harrison')")
+ query.prepare("INSERT INTO person (id, firstname, lastname) "
+ "VALUES (:id, :firstname, :lastname)")
+ query.bindValue(":id", 102)
+ query.bindValue(":firstname", "John")
+ query.bindValue(":lastname", "Lennon")
+ query.exec()
+
+ lastname = ''
+ query.exec("SELECT lastname FROM person where id=101")
+ self.assertTrue(query.isActive())
+ query.next()
+ lastname = query.value(0)
+ self.assertEqual(lastname, 'Harrison')
+
+ def testTableModelDeletion(self):
+ bar = Foo()
+ model = bar.model
+ del bar
+ # PYSIDE-535: Need to collect garbage in PyPy to trigger deletion
+ gc.collect()
+
+
+if __name__ == '__main__':
+ unittest.main()
+
diff --git a/sources/pyside6/tests/QtSql/qvarianttype_test.py b/sources/pyside6/tests/QtSql/qvarianttype_test.py
new file mode 100644
index 000000000..3999be20e
--- /dev/null
+++ b/sources/pyside6/tests/QtSql/qvarianttype_test.py
@@ -0,0 +1,39 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+'''Test cases for QVariant::Type converter'''
+import os
+import sys
+import unittest
+
+from pathlib import Path
+sys.path.append(os.fspath(Path(__file__).resolve().parents[1]))
+from init_paths import init_test_paths
+init_test_paths(False)
+
+from PySide6.QtCore import QMetaType
+from PySide6.QtSql import QSqlField
+
+
+class QVariantTypeTest(unittest.TestCase):
+ def testQVariantType(self):
+ cmp_id = QMetaType.QString.value
+
+ f = QSqlField("name", QMetaType(QMetaType.QString))
+ self.assertEqual(f.metaType().id(), cmp_id)
+
+ f = QSqlField("name", QMetaType.fromName(b"QString"))
+ self.assertEqual(f.metaType().id(), cmp_id)
+
+ f = QSqlField("name", QMetaType.fromName(b"double"))
+ self.assertEqual(f.metaType(), float)
+
+ f = QSqlField("name", float)
+ self.assertEqual(f.metaType(), float)
+
+ f = QSqlField("name", int)
+ self.assertEqual(f.metaType(), int)
+
+
+if __name__ == '__main__':
+ unittest.main()