"""Tests for backup status warning checks."""

from local_deep_research.web.warning_checks.backup import (
    check_backup_disabled,
    check_backup_healthy,
    check_no_backups_exist,
)


class TestCheckBackupDisabled:
    """Tests for the backup-disabled warning."""

    def test_returns_warning_when_disabled(self):
        result = check_backup_disabled(backup_enabled=False, dismissed=False)
        assert result is not None
        assert result["type"] == "backup_disabled"
        assert "dismissKey" in result

    def test_returns_none_when_enabled(self):
        result = check_backup_disabled(backup_enabled=True, dismissed=False)
        assert result is None

    def test_returns_none_when_dismissed(self):
        result = check_backup_disabled(backup_enabled=False, dismissed=True)
        assert result is None


class TestCheckNoBackupsExist:
    """Tests for the no-backups-exist warning."""

    def test_returns_warning_when_no_backups(self):
        result = check_no_backups_exist(
            backup_enabled=True, backup_count=0, dismissed=False
        )
        assert result is not None
        assert result["type"] == "no_backups"
        assert "dismissKey" in result

    def test_returns_none_when_backups_exist(self):
        result = check_no_backups_exist(
            backup_enabled=True, backup_count=1, dismissed=False
        )
        assert result is None

    def test_returns_none_when_backups_disabled(self):
        result = check_no_backups_exist(
            backup_enabled=False, backup_count=0, dismissed=False
        )
        assert result is None

    def test_returns_none_when_dismissed(self):
        result = check_no_backups_exist(
            backup_enabled=True, backup_count=0, dismissed=True
        )
        assert result is None


class TestCheckBackupHealthy:
    """Tests for the backup-healthy info message."""

    def test_returns_info_when_backups_exist(self):
        result = check_backup_healthy(
            backup_enabled=True,
            backup_count=1,
            total_size_human="247.0 MB",
            dismissed=False,
        )
        assert result is not None
        assert result["type"] == "backup_info"
        assert "247.0 MB" in result["message"]
        assert "dismissKey" in result

    def test_returns_none_when_disabled(self):
        result = check_backup_healthy(
            backup_enabled=False,
            backup_count=1,
            total_size_human="247.0 MB",
            dismissed=False,
        )
        assert result is None

    def test_returns_none_when_no_backups(self):
        result = check_backup_healthy(
            backup_enabled=True,
            backup_count=0,
            total_size_human="0 B",
            dismissed=False,
        )
        assert result is None

    def test_returns_none_when_dismissed(self):
        result = check_backup_healthy(
            backup_enabled=True,
            backup_count=1,
            total_size_human="247.0 MB",
            dismissed=True,
        )
        assert result is None
