Этап: SQLite и запуск пайплайна
This commit is contained in:
1 parent
626ac21b41
commit
d90f1f30b2
15 files changed
+2069
-6
No files matched your search
@@ -1,4 +1,6 @@
|
||||
import csv
|
||||
from collections import defaultdict
|
||||
from datetime import date, datetime
|
||||
|
||||
from src.generate_data import generate_data
|
||||
|
||||
@@ -18,3 +20,36 @@ def test_repeated_generation_is_byte_identical(tmp_path):
|
||||
first_run = path.read_bytes()
|
||||
generate_data(path)
|
||||
assert path.read_bytes() == first_run
|
||||
|
||||
|
||||
def test_planned_examples_are_present_in_generated_csv(tmp_path):
|
||||
path = tmp_path / "orders.csv"
|
||||
generate_data(path)
|
||||
with path.open(encoding="utf-8", newline="") as source:
|
||||
rows = list(csv.DictReader(source))
|
||||
|
||||
expected_values = {
|
||||
"order_id": {""},
|
||||
"order_date": {"", "2024-02-30", "03/15/2024"},
|
||||
"category": {"", " тОВАРЫ для ДОМА "},
|
||||
"quantity": {"", "1.5", "0", "-2", "три"},
|
||||
"unit_price": {"", "0", "-12.50", "бесплатно", "12.340", "12,50"},
|
||||
}
|
||||
for field, expected in expected_values.items():
|
||||
assert expected <= {row[field] for row in rows}, field
|
||||
|
||||
by_id = defaultdict(list)
|
||||
for row in rows:
|
||||
by_id[row["order_id"]].append(row)
|
||||
first, repeat = by_id["1"]
|
||||
assert first == repeat
|
||||
|
||||
iso, local = sorted(by_id["2"], key=lambda row: "." in row["order_date"])
|
||||
assert date.fromisoformat(iso["order_date"]) == datetime.strptime(
|
||||
local["order_date"], "%d.%m.%Y"
|
||||
).date()
|
||||
assert iso == local | {"order_date": iso["order_date"]}
|
||||
|
||||
first, conflict = by_id["3"]
|
||||
assert int(first["quantity"]) != int(conflict["quantity"])
|
||||
assert first == conflict | {"quantity": first["quantity"]}
|
||||
Reference in new issue
Block a user