ai did his job.
Container / test (push) Canceled after 0s
Container / image (push) Canceled after 0s

This commit is contained in:
2026-08-08 03:53:10 +03:00
parent 2ffc773113
commit a830623fcd
23 changed files with 3309 additions and 2 deletions
+108
View File
@@ -0,0 +1,108 @@
from types import SimpleNamespace
import pytest
from favorite_stickers.bot import (
UnsupportedMediaError,
download_with_limit,
select_media,
)
def message(**values):
defaults = {
"sticker": None,
"photo": None,
"video": None,
"animation": None,
"video_note": None,
"document": None,
}
defaults.update(values)
return SimpleNamespace(**defaults)
def test_photo_selects_largest_size_as_static_media() -> None:
small = SimpleNamespace(file_unique_id="small", file_size=10)
large = SimpleNamespace(file_unique_id="large", file_size=20)
selected = select_media(message(photo=[small, large]))
assert selected.downloadable is large
assert selected.source_unique_id == "large"
assert selected.kind == "static"
assert selected.suffix == ".jpg"
def test_video_sticker_preserves_emoji() -> None:
sticker = SimpleNamespace(
file_unique_id="sticker",
file_size=42,
is_animated=False,
is_video=True,
emoji="🔥",
)
selected = select_media(message(sticker=sticker))
assert selected.kind == "video"
assert selected.emoji == "🔥"
assert selected.suffix == ".webm"
def test_tgs_sticker_reports_clear_limitation() -> None:
sticker = SimpleNamespace(
file_unique_id="animated",
file_size=42,
is_animated=True,
is_video=False,
emoji="🙂",
)
with pytest.raises(UnsupportedMediaError, match="TGS"):
select_media(message(sticker=sticker))
def test_image_document_lets_ffprobe_detect_animation() -> None:
document = SimpleNamespace(
file_unique_id="doc",
file_size=42,
mime_type="image/png",
file_name="picture.PNG",
)
selected = select_media(message(document=document))
assert selected.kind == "auto"
assert selected.suffix == ".png"
def test_gif_document_lets_ffprobe_detect_animation() -> None:
document = SimpleNamespace(
file_unique_id="gif",
file_size=42,
mime_type="image/gif",
file_name="animation.gif",
)
selected = select_media(message(document=document))
assert selected.kind == "auto"
class FakeDownloadBot:
async def download(self, downloadable, destination, seek=False):
destination.write(b"1234")
destination.flush()
destination.write(b"5678")
destination.flush()
@pytest.mark.asyncio
async def test_download_enforces_actual_byte_limit(tmp_path) -> None:
destination = tmp_path / "source.bin"
with pytest.raises(UnsupportedMediaError, match="слишком большой"):
await download_with_limit(FakeDownloadBot(), object(), destination, 6)
assert not destination.exists()