import json from pathlib import Path from unittest.mock import MagicMock import pytest from teampulse.resolver import Resolver @pytest.fixture def cache_path(tmp_path): return tmp_path / "cache.json" def test_resolve_returns_email_from_cache(cache_path): cache_path.write_text(json.dumps({"Max Mustermann": "m.mustermann@company.com"})) resolver = Resolver(cache_path=cache_path, page=MagicMock()) assert resolver.resolve("Max Mustermann") == "m.mustermann@company.com" def test_resolve_unknown_name_calls_browser(cache_path): cache_path.write_text(json.dumps({})) mock_page = MagicMock() resolver = Resolver(cache_path=cache_path, page=mock_page) resolver._extract_email_from_profile = MagicMock(return_value="k.huber@company.com") result = resolver.resolve("Klaus Huber") resolver._extract_email_from_profile.assert_called_once_with("Klaus Huber") assert result == "k.huber@company.com" def test_resolve_caches_newly_resolved_email(cache_path): cache_path.write_text(json.dumps({})) resolver = Resolver(cache_path=cache_path, page=MagicMock()) resolver._extract_email_from_profile = MagicMock(return_value="k.huber@company.com") resolver.resolve("Klaus Huber") saved = json.loads(cache_path.read_text()) assert saved["Klaus Huber"] == "k.huber@company.com" def test_resolve_unresolvable_returns_placeholder(cache_path): cache_path.write_text(json.dumps({})) resolver = Resolver(cache_path=cache_path, page=MagicMock()) resolver._extract_email_from_profile = MagicMock(return_value=None) result = resolver.resolve("Unknown Person") assert result == "" def test_resolve_does_not_cache_unresolvable(cache_path): cache_path.write_text(json.dumps({})) resolver = Resolver(cache_path=cache_path, page=MagicMock()) resolver._extract_email_from_profile = MagicMock(return_value=None) resolver.resolve("Unknown Person") saved = json.loads(cache_path.read_text()) assert "Unknown Person" not in saved def test_creates_cache_file_if_missing(tmp_path): cache_path = tmp_path / "nonexistent.json" resolver = Resolver(cache_path=cache_path, page=MagicMock()) resolver._extract_email_from_profile = MagicMock(return_value="a@b.com") resolver.resolve("Test User") assert cache_path.exists()