summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorlufte <javier@lufte.net>2021-07-02 23:25:59 -0300
committerlufte <javier@lufte.net>2021-07-02 23:25:59 -0300
commit082916b45d1507ffbe28dd04eff7aa717a308d62 (patch)
tree6613e38eeacac553230953434ace55c3183d6069 /tests
parent03b8a266455b2cfd0484e1d16ba7e6370ae49655 (diff)
downloadqutebrowser-082916b45d1507ffbe28dd04eff7aa717a308d62.tar.gz
qutebrowser-082916b45d1507ffbe28dd04eff7aa717a308d62.zip
Add unit tests for the Transaction class
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/misc/test_sql.py38
1 files changed, 35 insertions, 3 deletions
diff --git a/tests/unit/misc/test_sql.py b/tests/unit/misc/test_sql.py
index 6843bd182..068298e3c 100644
--- a/tests/unit/misc/test_sql.py
+++ b/tests/unit/misc/test_sql.py
@@ -23,7 +23,7 @@ import pytest
import hypothesis
from hypothesis import strategies
-from PyQt5.QtSql import QSqlError
+from PyQt5.QtSql import QSqlDatabase, QSqlError, QSqlQuery
from qutebrowser.misc import sql
@@ -379,8 +379,7 @@ class TestSqlQuery:
db = sql.Database(str(data_tmpdir / 'test_value_missing.db'))
q = db.query('SELECT 0 WHERE 0')
q.run()
- with pytest.raises(sql.BugError,
- match='No result for single-result query'):
+ with pytest.raises(sql.BugError, match='No result for single-result query'):
q.value()
def test_num_rows_affected_not_active(self, data_tmpdir):
@@ -410,3 +409,36 @@ class TestSqlQuery:
q = db.query('SELECT :answer')
q.run(answer=42)
assert q.bound_values() == {':answer': 42}
+
+
+class TestTransaction:
+
+ def test_successful_transaction(self, data_tmpdir):
+ path = str(data_tmpdir / 'test_successful_transaction')
+ db = sql.Database(path)
+ my_table = db.table('my_table', ['column'])
+ with db.transaction():
+ my_table.insert({'column': 1})
+ my_table.insert({'column': 2})
+
+ db2 = QSqlDatabase.addDatabase('QSQLITE', 'db2')
+ db2.setDatabaseName(path)
+ db2.open()
+ query = QSqlQuery(db2)
+ query.exec('select count(*) from my_table')
+ query.next()
+ assert query.record().value(0) == 0
+ assert db.query('select count(*) from my_table').run().value() == 2
+
+ def test_failed_transaction(self, data_tmpdir):
+ path = str(data_tmpdir / 'test_failed_transaction')
+ db = sql.Database(path)
+ my_table = db.table('my_table', ['column'])
+ try:
+ with db.transaction():
+ my_table.insert({'column': 1})
+ my_table.insert({'column': 2})
+ raise Exception('something went horribly wrong')
+ except Exception:
+ pass
+ assert db.query('select count(*) from my_table').run().value() == 0