mirror of
https://github.com/simonw/sqlite-utils.git
synced 2026-10-24 10:17:05 +02:00
test: cover CSV export helper
This commit is contained in:
parent
3430c94240
commit
3b7375fcc6
1 changed files with 49 additions and 0 deletions
49
tests/test_export.py
Normal file
49
tests/test_export.py
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
import io
|
||||
import sqlite3
|
||||
|
||||
import pytest
|
||||
|
||||
from sqlite_utils.export import rows_to_csv_file
|
||||
|
||||
|
||||
def _cursor():
|
||||
db = sqlite3.connect(":memory:")
|
||||
db.execute("create table creatures (id integer, name text)")
|
||||
db.executemany(
|
||||
"insert into creatures (id, name) values (?, ?)",
|
||||
((1, "Cleo"), (2, "Cardi, Jr.")),
|
||||
)
|
||||
return db, db.execute("select id, name from creatures order by id")
|
||||
|
||||
|
||||
def test_rows_to_csv_file():
|
||||
db, cursor = _cursor()
|
||||
output = io.StringIO(newline="")
|
||||
rows_to_csv_file(cursor, output, lineterminator="\n")
|
||||
assert output.getvalue() == 'id,name\n1,Cleo\n2,"Cardi, Jr."\n'
|
||||
db.close()
|
||||
|
||||
|
||||
def test_rows_to_csv_file_without_header():
|
||||
db, cursor = _cursor()
|
||||
output = io.StringIO(newline="")
|
||||
rows_to_csv_file(cursor, output, header=False, lineterminator="\n")
|
||||
assert output.getvalue() == '1,Cleo\n2,"Cardi, Jr."\n'
|
||||
db.close()
|
||||
|
||||
|
||||
def test_rows_to_csv_file_tsv():
|
||||
db, cursor = _cursor()
|
||||
output = io.StringIO(newline="")
|
||||
rows_to_csv_file(cursor, output, dialect="excel-tab", lineterminator="\n")
|
||||
assert output.getvalue() == "id\tname\n1\tCleo\n2\tCardi, Jr.\n"
|
||||
db.close()
|
||||
|
||||
|
||||
def test_rows_to_csv_file_requires_result_columns_for_header():
|
||||
db = sqlite3.connect(":memory:")
|
||||
cursor = db.execute("create table creatures (id integer)")
|
||||
output = io.StringIO(newline="")
|
||||
with pytest.raises(ValueError, match="Cursor does not have result columns"):
|
||||
rows_to_csv_file(cursor, output)
|
||||
db.close()
|
||||
Loading…
Add table
Add a link
Reference in a new issue