"""Tests for STL conversion cache service (pure/unit — no DB needed).""" import pytest from pathlib import Path from app.domains.products.cache_service import compute_step_hash, _cache_key def test_compute_step_hash_stable(tmp_path): """Gleiche Datei → gleicher Hash.""" f = tmp_path / "test.stp" f.write_bytes(b"STEP data content") h1 = compute_step_hash(str(f)) h2 = compute_step_hash(str(f)) assert h1 == h2 assert len(h1) == 64 # SHA256 hex def test_compute_step_hash_differs(tmp_path): """Andere Datei → anderer Hash.""" f1 = tmp_path / "a.stp" f1.write_bytes(b"content A") f2 = tmp_path / "b.stp" f2.write_bytes(b"content B") assert compute_step_hash(str(f1)) != compute_step_hash(str(f2)) def test_cache_key_format(): """Cache-Key hat korrektes Format.""" key = _cache_key("abc123", "low") assert key == "conversion-cache/abc123_low.stl" def test_store_stl_cache_uses_path(tmp_path, mock_storage): """store_stl_cache übergibt Path-Objekt an storage.upload.""" from app.domains.products.cache_service import store_stl_cache stl = tmp_path / "test.stl" stl.write_bytes(b"fake stl") store_stl_cache("abc123", "low", str(stl)) call_args = mock_storage.upload.call_args assert call_args is not None first_arg = call_args[0][0] assert isinstance(first_arg, Path), f"Expected Path, got {type(first_arg)}"