Files
krosh a830623fcd
Container / test (push) Canceled after 0s
Container / image (push) Canceled after 0s
ai did his job.
2026-08-08 03:53:10 +03:00

54 lines
1.7 KiB
Python

import pytest
from favorite_stickers.store import StickerRecord, Store, StoreLockedError
def test_store_finds_sticker_by_original_or_generated_telegram_id(tmp_path) -> None:
store = Store(tmp_path / "bot.sqlite3")
store.initialize()
store.add_pack(7, 1, "favorites_7_by_testbot")
record = StickerRecord(
user_id=7,
pack_name="favorites_7_by_testbot",
source_unique_id="original-id",
content_hash="abc",
sticker_file_id="file-id",
sticker_unique_id="generated-id",
)
store.add_sticker(record)
assert store.find_sticker(7, telegram_unique_id="original-id") == record
assert store.find_sticker(7, telegram_unique_id="generated-id") == record
assert store.find_sticker(7, content_hash="abc") == record
assert store.find_sticker(8, telegram_unique_id="original-id") is None
def test_removing_sticker_updates_pack_count(tmp_path) -> None:
store = Store(tmp_path / "bot.sqlite3")
store.initialize()
store.add_pack(7, 1, "favorites_7_by_testbot")
record = StickerRecord(7, "favorites_7_by_testbot", "src", "abc", "file", "unique")
sticker_id = store.add_sticker(record)
pack = store.latest_pack(7)
assert pack is not None
assert pack.sticker_count == 1
store.remove_sticker(sticker_id)
pack = store.latest_pack(7)
assert pack is not None
assert pack.sticker_count == 0
def test_only_one_store_process_can_own_database(tmp_path) -> None:
path = tmp_path / "bot.sqlite3"
first = Store(path)
first.initialize()
second = Store(path)
with pytest.raises(StoreLockedError, match="запущен"):
second.initialize()
first.close()
second.initialize()
second.close()