|
3 | 3 | from dataclasses import dataclass
|
4 | 4 | from typing import Any
|
5 | 5 |
|
6 |
| -from roborock import CleanRecord, CleanSummary, Consumable, DnDTimer, HomeData, S7MaxVStatus, SimpleObject, UserData |
| 6 | +from roborock import CleanRecord, CleanSummary, Consumable, DnDTimer, HomeData, S7MaxVStatus, UserData |
7 | 7 | from roborock.code_mappings import (
|
8 | 8 | RoborockCategory,
|
9 | 9 | RoborockDockErrorCode,
|
|
29 | 29 | )
|
30 | 30 |
|
31 | 31 |
|
| 32 | +@dataclass |
| 33 | +class SimpleObject(RoborockBase): |
| 34 | + """Simple object for testing serialization.""" |
| 35 | + |
| 36 | + name: str | None = None |
| 37 | + value: int | None = None |
| 38 | + |
| 39 | + |
32 | 40 | @dataclass
|
33 | 41 | class ComplexObject(RoborockBase):
|
34 | 42 | """Complex object for testing serialization."""
|
@@ -97,6 +105,23 @@ def test_complex_object() -> None:
|
97 | 105 | assert deserialized.any == "This can be anything"
|
98 | 106 |
|
99 | 107 |
|
| 108 | + |
| 109 | +def test_ignore_unknown_keys() -> None: |
| 110 | + """Test that we don't fail on unknown keys.""" |
| 111 | + data = { |
| 112 | + "ignored_key": "This key should be ignored", |
| 113 | + "simple": {"name": "Nested", "value": 100}, |
| 114 | + "items": ["item1", "item2"], |
| 115 | + |
| 116 | + } |
| 117 | + deserialized = ComplexObject.from_dict(data) |
| 118 | + assert deserialized.simple.name == "Nested" |
| 119 | + assert deserialized.simple.value == 100 |
| 120 | + assert deserialized.items == ["item1", "item2"] |
| 121 | + assert deserialized.value is None |
| 122 | + assert deserialized.any is None |
| 123 | + |
| 124 | + |
100 | 125 | def test_user_data():
|
101 | 126 | ud = UserData.from_dict(USER_DATA)
|
102 | 127 | assert ud.uid == 123456
|
|
0 commit comments