Coverage for tests/test_db.py: 100%
55 statements
« prev ^ index » next coverage.py v7.10.7, created at 2025-09-28 09:38 +0200
« prev ^ index » next coverage.py v7.10.7, created at 2025-09-28 09:38 +0200
1import csv
2import pytest
3from pathlib import Path
4from art_studio_tz.api import DB
6@pytest.fixture
7def db(tmp_path):
8 """Создаём экземпляр DB с временным CSV."""
9 return DB(tmp_path, "quotes", ["text", "author"])
11def test_create_and_read(db):
12 item = {"text": "Hello", "author": "Someone"}
13 new_id = db.create(item)
14 assert new_id == 1
16 row = db.read(new_id)
17 assert row["id"] == "1"
18 assert row["text"] == "Hello"
19 assert row["author"] == "Someone"
21def test_read_all(db):
22 db.create({"text": "A", "author": "X"})
23 db.create({"text": "B", "author": "Y"})
24 all_rows = db.read_all()
25 assert len(all_rows) == 2
26 assert all_rows[0]["text"] == "A"
27 assert all_rows[1]["author"] == "Y"
29def test_update(db):
30 id1 = db.create({"text": "Old", "author": "X"})
31 db.update(id1, {"text": "New"})
32 row = db.read(id1)
33 assert row["text"] == "New"
34 assert row["author"] == "X"
36def test_delete(db):
37 id1 = db.create({"text": "A", "author": "X"})
38 id2 = db.create({"text": "B", "author": "Y"})
39 db.delete(id1)
40 all_rows = db.read_all()
41 assert len(all_rows) == 1
42 assert all_rows[0]["id"] == str(id2)
44def test_delete_all(db):
45 db.create({"text": "A", "author": "X"})
46 db.create({"text": "B", "author": "Y"})
47 db.delete_all()
48 assert db.count() == 0
49 assert db.read_all() == []
51@pytest.mark.parametrize("num_records", [0, 1, 5])
52def test_count(db, num_records):
53 # добавляем num_records записей
54 for i in range(num_records):
55 db.create({"text": f"Q{i}", "author": f"A{i}"})
56 assert db.count() == num_records
58def test_update_non_existing(db):
59 db.create({"text": "A", "author": "X"})
60 db.update(999, {"text": "New"})
61 # существующие записи остаются без изменени
62 row = db.read(1)
63 assert row["text"] == "A"
65def test_delete_non_existing(db):
66 db.create({"text": "A", "author": "X"})
67 db.delete(999)
68 assert db.count() == 1