import tempfile from pathlib import Path import pytest from src.core.media_utils import load_icon from PIL import Image, ImageTk import tkinter as tk @pytest.fixture(scope="module") def tk_root(): """Fixture pro inicializaci Tkinteru (nutné pro ImageTk).""" root = tk.Tk() yield root root.destroy() def test_load_icon_returns_photoimage(tk_root): """Test že load_icon vrací PhotoImage""" # vytvoříme dočasný obrázek with tempfile.NamedTemporaryFile(suffix=".png", delete=False) as tmp: tmp_path = Path(tmp.name) try: # vytvoříme 100x100 červený obrázek img = Image.new("RGB", (100, 100), color="red") img.save(tmp_path) icon = load_icon(tmp_path) # musí být PhotoImage assert isinstance(icon, ImageTk.PhotoImage) # ověříme velikost 16x16 assert icon.width() == 16 assert icon.height() == 16 finally: tmp_path.unlink(missing_ok=True) def test_load_icon_resizes_image(tk_root): """Test že load_icon správně změní velikost obrázku""" with tempfile.NamedTemporaryFile(suffix=".png", delete=False) as tmp: tmp_path = Path(tmp.name) try: # vytvoříme velký obrázek 500x500 img = Image.new("RGB", (500, 500), color="blue") img.save(tmp_path) icon = load_icon(tmp_path) # i velký obrázek by měl být zmenšen na 16x16 assert icon.width() == 16 assert icon.height() == 16 finally: tmp_path.unlink(missing_ok=True) def test_load_icon_different_formats(tk_root): """Test načítání různých formátů obrázků""" formats = [".png", ".jpg", ".bmp"] for fmt in formats: with tempfile.NamedTemporaryFile(suffix=fmt, delete=False) as tmp: tmp_path = Path(tmp.name) try: img = Image.new("RGB", (32, 32), color="green") img.save(tmp_path) icon = load_icon(tmp_path) assert isinstance(icon, ImageTk.PhotoImage) assert icon.width() == 16 assert icon.height() == 16 finally: tmp_path.unlink(missing_ok=True)