mirror of
https://github.com/simonw/sqlite-utils.git
synced 2026-07-24 18:04:32 +02:00
Fixed PRAGMA foreign_keys handling for .transform, closes #167
This commit is contained in:
parent
5c4d58d152
commit
b8e0048485
2 changed files with 22 additions and 26 deletions
|
|
@ -90,17 +90,25 @@ import pytest
|
|||
)
|
||||
@pytest.mark.parametrize("use_pragma_foreign_keys", [False, True])
|
||||
def test_transform_sql(fresh_db, params, expected_sql, use_pragma_foreign_keys):
|
||||
captured = []
|
||||
tracer = lambda sql, params: captured.append((sql, params))
|
||||
dogs = fresh_db["dogs"]
|
||||
if use_pragma_foreign_keys:
|
||||
fresh_db.conn.execute("PRAGMA foreign_keys=ON")
|
||||
expected_sql.insert(0, "PRAGMA foreign_keys=OFF;")
|
||||
expected_sql.append("PRAGMA foreign_key_check;")
|
||||
expected_sql.append("PRAGMA foreign_keys=ON;")
|
||||
dogs.insert({"id": 1, "name": "Cleo", "age": "5"}, pk="id")
|
||||
sql = dogs.transform_sql(**{**params, **{"tmp_suffix": "suffix"}})
|
||||
assert sql == expected_sql
|
||||
# Check that .transform() runs without exceptions:
|
||||
dogs.transform(**params)
|
||||
with fresh_db.tracer(tracer):
|
||||
dogs.transform(**params)
|
||||
# If use_pragma_foreign_keys, check that we did the right thing
|
||||
if use_pragma_foreign_keys:
|
||||
assert ('PRAGMA foreign_keys=0;', None) in captured
|
||||
assert captured[-2] == ('PRAGMA foreign_key_check;', None)
|
||||
assert captured[-1] == ('PRAGMA foreign_keys=1;', None)
|
||||
else:
|
||||
assert ('PRAGMA foreign_keys=0;', None) not in captured
|
||||
assert ('PRAGMA foreign_keys=1;', None) not in captured
|
||||
|
||||
|
||||
def test_transform_sql_rowid_to_id(fresh_db):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue