"""GET /api/settings/{key} defaults when row missing."""

from __future__ import annotations

from unittest.mock import AsyncMock, MagicMock, patch

import pytest
from fastapi import HTTPException

from server.api.settings import SETTING_DEFAULTS, get_setting


@pytest.mark.asyncio
async def test_get_push_complete_sound_default_when_missing():
    admin = MagicMock()
    db = AsyncMock()
    with patch("server.api.settings.SettingRepositoryImpl") as repo_cls:
        repo_cls.return_value.get = AsyncMock(return_value=None)
        out = await get_setting("push_complete_sound", admin=admin, db=db)
    assert out["key"] == "push_complete_sound"
    assert out["value"] == SETTING_DEFAULTS["push_complete_sound"]


@pytest.mark.asyncio
async def test_get_unknown_key_still_404():
    admin = MagicMock()
    db = AsyncMock()
    with patch("server.api.settings.SettingRepositoryImpl") as repo_cls:
        repo_cls.return_value.get = AsyncMock(return_value=None)
        with pytest.raises(HTTPException) as exc:
            await get_setting("nonexistent_setting_key", admin=admin, db=db)
    assert exc.value.status_code == 404
