diff options
author | lufte <javier@lufte.net> | 2021-07-02 23:25:59 -0300 |
---|---|---|
committer | lufte <javier@lufte.net> | 2021-07-02 23:25:59 -0300 |
commit | 082916b45d1507ffbe28dd04eff7aa717a308d62 (patch) | |
tree | 6613e38eeacac553230953434ace55c3183d6069 /tests | |
parent | 03b8a266455b2cfd0484e1d16ba7e6370ae49655 (diff) | |
download | qutebrowser-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.py | 38 |
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 |