86 lines
2.4 KiB
Python
86 lines
2.4 KiB
Python
from datetime import datetime
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
from teampulse.memo import generate_memo, save_memo
|
|
from teampulse.models import AuditEntry, AuditWindow
|
|
|
|
|
|
def make_window(**kwargs):
|
|
defaults = dict(
|
|
presenter="Anna Bauer",
|
|
moderator="Oliver Hofmann",
|
|
start_time=datetime(2026, 5, 16, 10, 3, 42),
|
|
end_time=datetime(2026, 5, 16, 10, 47, 15),
|
|
entries=[
|
|
AuditEntry("Thomas Wolf", "t.wolf@company.com"),
|
|
AuditEntry("Klaus Huber", "k.huber@company.com"),
|
|
AuditEntry("Sandra Vogel", "s.vogel@company.com"),
|
|
],
|
|
)
|
|
defaults.update(kwargs)
|
|
return AuditWindow(**defaults)
|
|
|
|
|
|
def test_memo_contains_presenter_name():
|
|
result = generate_memo(make_window())
|
|
assert "Anna Bauer" in result
|
|
|
|
|
|
def test_memo_contains_time_window():
|
|
result = generate_memo(make_window())
|
|
assert "10:03:42" in result
|
|
assert "10:47:15" in result
|
|
|
|
|
|
def test_memo_sorts_entries_by_email():
|
|
result = generate_memo(make_window())
|
|
idx_huber = result.index("k.huber@company.com")
|
|
idx_vogel = result.index("s.vogel@company.com")
|
|
idx_wolf = result.index("t.wolf@company.com")
|
|
assert idx_huber < idx_vogel < idx_wolf
|
|
|
|
|
|
def test_memo_excludes_presenter():
|
|
window = make_window(
|
|
entries=[
|
|
AuditEntry("Anna Bauer", "a.bauer@company.com"),
|
|
AuditEntry("Klaus Huber", "k.huber@company.com"),
|
|
]
|
|
)
|
|
result = generate_memo(window)
|
|
assert "a.bauer@company.com" not in result
|
|
assert "k.huber@company.com" in result
|
|
|
|
|
|
def test_memo_excludes_moderator():
|
|
window = make_window(
|
|
entries=[
|
|
AuditEntry("Oliver Hofmann", "o.hofmann@company.com"),
|
|
AuditEntry("Klaus Huber", "k.huber@company.com"),
|
|
]
|
|
)
|
|
result = generate_memo(window)
|
|
assert "o.hofmann@company.com" not in result
|
|
assert "k.huber@company.com" in result
|
|
|
|
|
|
def test_memo_empty_window():
|
|
window = make_window(entries=[])
|
|
result = generate_memo(window)
|
|
assert "Keine Chat-Aktivität" in result
|
|
|
|
|
|
def test_memo_contains_moderator_note():
|
|
result = generate_memo(make_window())
|
|
assert "Oliver Hofmann" in result
|
|
|
|
|
|
def test_save_memo_writes_file(tmp_path):
|
|
window = make_window()
|
|
path = save_memo(generate_memo(window), directory=tmp_path, timestamp=datetime(2026, 5, 16, 10, 51))
|
|
assert path.exists()
|
|
assert path.name == "audit_20260516_1051.md"
|
|
assert "Anna Bauer" in path.read_text()
|