replace=True and ignore=True parameters for create_view(), closes #106

This commit is contained in:
Simon Willison 2020-05-02 09:02:04 -07:00
commit 5c1df4e306
4 changed files with 70 additions and 15 deletions

View file

@ -716,13 +716,6 @@ def test_insert_hash_id(fresh_db):
assert 1 == dogs.count
def test_create_view(fresh_db):
fresh_db["data"].insert({"foo": "foo", "bar": "bar"})
fresh_db.create_view("bar", "select bar from data")
rows = fresh_db.conn.execute("select * from bar").fetchall()
assert [("bar",)] == rows
def test_vacuum(fresh_db):
fresh_db["data"].insert({"foo": "foo", "bar": "bar"})
fresh_db.vacuum()

43
tests/test_create_view.py Normal file
View file

@ -0,0 +1,43 @@
import pytest
from sqlite_utils.utils import OperationalError
def test_create_view(fresh_db):
fresh_db.create_view("bar", "select 1 + 1")
rows = fresh_db.conn.execute("select * from bar").fetchall()
assert [(2,)] == rows
def test_create_view_error(fresh_db):
fresh_db.create_view("bar", "select 1 + 1")
with pytest.raises(OperationalError):
fresh_db.create_view("bar", "select 1 + 2")
def test_create_view_only_arrow_one_param(fresh_db):
with pytest.raises(AssertionError):
fresh_db.create_view("bar", "select 1 + 2", ignore=True, replace=True)
def test_create_view_ignore(fresh_db):
fresh_db.create_view("bar", "select 1 + 1").create_view(
"bar", "select 1 + 2", ignore=True
)
rows = fresh_db.conn.execute("select * from bar").fetchall()
assert [(2,)] == rows
def test_create_view_replace(fresh_db):
fresh_db.create_view("bar", "select 1 + 1").create_view(
"bar", "select 1 + 2", replace=True
)
rows = fresh_db.conn.execute("select * from bar").fetchall()
assert [(3,)] == rows
def test_create_view_replace_with_same_does_nothing(fresh_db):
fresh_db.create_view("bar", "select 1 + 1")
initial_version = fresh_db.conn.execute("PRAGMA schema_version").fetchone()[0]
fresh_db.create_view("bar", "select 1 + 1", replace=True)
after_version = fresh_db.conn.execute("PRAGMA schema_version").fetchone()[0]
assert after_version == initial_version