mirror of
https://github.com/simonw/sqlite-utils.git
synced 2026-09-27 20:34:12 +02:00
Tests for --common-limit, --no-most, --no-least, refs #544
This commit is contained in:
parent
9f23e68cf0
commit
2eca17d46e
1 changed files with 60 additions and 0 deletions
|
|
@ -24,6 +24,28 @@ def db_to_analyze(fresh_db):
|
||||||
return fresh_db
|
return fresh_db
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def big_db_to_analyze_path(tmpdir):
|
||||||
|
path = str(tmpdir / "test.db")
|
||||||
|
db = Database(path)
|
||||||
|
categories = {
|
||||||
|
"A": 40,
|
||||||
|
"B": 30,
|
||||||
|
"C": 20,
|
||||||
|
"D": 10,
|
||||||
|
}
|
||||||
|
to_insert = []
|
||||||
|
for category, count in categories.items():
|
||||||
|
for _ in range(count):
|
||||||
|
to_insert.append(
|
||||||
|
{
|
||||||
|
"category": category,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
db["stuff"].insert_all(to_insert)
|
||||||
|
return path
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"column,extra_kwargs,expected",
|
"column,extra_kwargs,expected",
|
||||||
[
|
[
|
||||||
|
|
@ -197,3 +219,41 @@ def test_analyze_table_save(db_to_analyze_path):
|
||||||
"least_common": None,
|
"least_common": None,
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"no_most,no_least",
|
||||||
|
(
|
||||||
|
(False, False),
|
||||||
|
(True, False),
|
||||||
|
(False, True),
|
||||||
|
(True, True),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
def test_analyze_table_save_no_most_no_least_options(
|
||||||
|
no_most, no_least, big_db_to_analyze_path
|
||||||
|
):
|
||||||
|
args = ["analyze-tables", big_db_to_analyze_path, "--save", "--common-limit", "2"]
|
||||||
|
if no_most:
|
||||||
|
args.append("--no-most")
|
||||||
|
if no_least:
|
||||||
|
args.append("--no-least")
|
||||||
|
result = CliRunner().invoke(cli.cli, args)
|
||||||
|
assert result.exit_code == 0
|
||||||
|
rows = list(Database(big_db_to_analyze_path)["_analyze_tables_"].rows)
|
||||||
|
expected = {
|
||||||
|
"table": "stuff",
|
||||||
|
"column": "category",
|
||||||
|
"total_rows": 100,
|
||||||
|
"num_null": 0,
|
||||||
|
"num_blank": 0,
|
||||||
|
"num_distinct": 4,
|
||||||
|
"most_common": None,
|
||||||
|
"least_common": None,
|
||||||
|
}
|
||||||
|
if not no_most:
|
||||||
|
expected["most_common"] = '[["A", 40], ["B", 30]]'
|
||||||
|
if not no_least:
|
||||||
|
expected["least_common"] = '[["D", 10], ["C", 20]]'
|
||||||
|
|
||||||
|
assert rows == [expected]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue