teampulse/tests/test_resolver_cache.py
2026-05-16 17:20:17 +02:00

70 lines
2.3 KiB
Python

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 == "<nicht auflösbar>"
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()