Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions aiohasupervisor/models/backups.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ class FullBackupOptions(Request):
name: str | None = None
password: str | None = None
compressed: bool | None = None
location: list[str | None] | str | None = DEFAULT # type: ignore[assignment]
location: str | list[str | None] | None = DEFAULT # type: ignore[assignment]
homeassistant_exclude_database: bool | None = None
background: bool | None = None
extra: dict | None = None
Expand All @@ -151,7 +151,7 @@ class FullBackupOptions(Request):
class PartialBackupOptions(FullBackupOptions, PartialBackupRestoreOptions):
"""PartialBackupOptions model."""

addons: set[str] | AddonSet | None = None
addons: AddonSet | set[str] | None = None


@dataclass(frozen=True, slots=True)
Expand Down
45 changes: 45 additions & 0 deletions tests/test_backups.py
Original file line number Diff line number Diff line change
Expand Up @@ -483,3 +483,48 @@ async def test_download_backup(
assert isinstance(result, AsyncIterator)
async for chunk in result:
assert chunk == b"backup test"


@pytest.mark.parametrize(
("options", "as_dict"),
[
(
PartialBackupOptions(name="Test", folders={Folder.SHARE}),
{"name": "Test", "folders": ["share"]},
),
(PartialBackupOptions(addons={"core_ssh"}), {"addons": ["core_ssh"]}),
(PartialBackupOptions(addons=AddonSet.ALL), {"addons": "all"}),
(
PartialBackupOptions(
homeassistant=True, homeassistant_exclude_database=True
),
{"homeassistant": True, "homeassistant_exclude_database": True},
),
(
PartialBackupOptions(
folders={Folder.SSL}, compressed=True, background=True
),
{"folders": ["ssl"], "compressed": True, "background": True},
),
(
PartialBackupOptions(
homeassistant=True, location=[".cloud_backup", "test"]
),
{"homeassistant": True, "location": [".cloud_backup", "test"]},
),
(
PartialBackupOptions(homeassistant=True, location="test"),
{"homeassistant": True, "location": "test"},
),
(
PartialBackupOptions(homeassistant=True, location=None),
{"homeassistant": True, "location": None},
),
],
)
async def test_partial_backup_model(
options: PartialBackupOptions, as_dict: dict[str, Any]
) -> None:
"""Test partial backup model parsing and serializing."""
assert PartialBackupOptions.from_dict(as_dict) == options
assert options.to_dict() == as_dict
Loading