refactor: restructure into package layout and split large modules

This commit is contained in:
2026-02-18 02:43:45 +01:00
parent bc24439da8
commit 8e73e45e2d
51 changed files with 1970 additions and 1848 deletions

View File

@@ -1,63 +1,35 @@
import json
from dataclasses import dataclass, field
from pathlib import Path
import pytest
from auditui import ui
@dataclass(slots=True)
class DummyApp:
client: object | None = None
auth: object | None = None
library_client: object | None = None
all_items: list[dict] = field(default_factory=list)
BINDINGS: list[tuple[str, str, str]] = field(default_factory=list)
@pytest.fixture
def dummy_app() -> DummyApp:
return DummyApp()
from auditui.stats.email import (
find_email_in_data,
get_email_from_auth,
get_email_from_auth_file,
get_email_from_config,
)
def test_find_email_in_data() -> None:
screen = ui.StatsScreen()
data = {"a": {"b": ["nope", "user@example.com"]}}
assert screen._find_email_in_data(data) == "user@example.com"
assert find_email_in_data(data) == "user@example.com"
def test_get_email_from_config(
tmp_path: Path, monkeypatch: pytest.MonkeyPatch, dummy_app: DummyApp
) -> None:
screen = ui.StatsScreen()
def test_get_email_from_config(tmp_path: Path) -> None:
config_path = tmp_path / "config.json"
config_path.write_text(json.dumps({"email": "config@example.com"}))
monkeypatch.setattr(ui, "CONFIG_PATH", config_path)
email = screen._get_email_from_config(dummy_app)
assert email == "config@example.com"
assert get_email_from_config(config_path) == "config@example.com"
def test_get_email_from_auth_file(
tmp_path: Path, monkeypatch: pytest.MonkeyPatch, dummy_app: DummyApp
) -> None:
screen = ui.StatsScreen()
def test_get_email_from_auth_file(tmp_path: Path) -> None:
auth_path = tmp_path / "auth.json"
auth_path.write_text(json.dumps({"email": "auth@example.com"}))
monkeypatch.setattr(ui, "AUTH_PATH", auth_path)
email = screen._get_email_from_auth_file(dummy_app)
assert email == "auth@example.com"
assert get_email_from_auth_file(auth_path) == "auth@example.com"
def test_get_email_from_auth(dummy_app: DummyApp) -> None:
screen = ui.StatsScreen()
def test_get_email_from_auth() -> None:
class Auth:
username = "user@example.com"
login = None
email = None
dummy_app.auth = Auth()
assert screen._get_email_from_auth(dummy_app) == "user@example.com"
assert get_email_from_auth(Auth()) == "user@example.com"