70 lines
2.3 KiB
Python
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()
|