|
1 | 1 | """Tests for the FileCache class.""" |
2 | 2 |
|
| 3 | +import dataclasses |
3 | 4 | import pathlib |
4 | 5 | import pickle |
5 | 6 | from unittest.mock import AsyncMock, patch |
6 | 7 |
|
7 | 8 | import pytest |
8 | 9 |
|
| 10 | +from roborock.data import HomeData, NetworkInfo, RoborockProductNickname |
| 11 | +from roborock.device_features import DeviceFeatures |
9 | 12 | from roborock.devices.cache import CacheData |
10 | 13 | from roborock.devices.file_cache import FileCache |
| 14 | +from tests.mock_data import HOME_DATA_RAW, NETWORK_INFO |
11 | 15 |
|
12 | 16 |
|
13 | 17 | @pytest.fixture(name="cache_file") |
@@ -66,3 +70,36 @@ async def test_flush_no_data(cache_file: pathlib.Path) -> None: |
66 | 70 | cache = FileCache(cache_file) |
67 | 71 | await cache.flush() |
68 | 72 | assert not cache_file.exists() |
| 73 | + |
| 74 | + |
| 75 | +def test_serialize_dictionary_cache() -> None: |
| 76 | + data = { |
| 77 | + "home_data": HOME_DATA_RAW, |
| 78 | + "network_info": {"fake_duid": NETWORK_INFO}, |
| 79 | + "home_map_info": { |
| 80 | + "0": { |
| 81 | + "map_flag": 0, |
| 82 | + "name": "", |
| 83 | + "rooms": [ |
| 84 | + {"segment_id": 16, "iot_id": "2537178", "name": "Living room"}, |
| 85 | + {"segment_id": 17, "iot_id": "2537175", "name": "Kitchen"}, |
| 86 | + ], |
| 87 | + } |
| 88 | + }, |
| 89 | + "home_map_content": {}, |
| 90 | + "home_map_content_base64": {"0": "fake_bytes"}, |
| 91 | + "device_features": dataclasses.asdict( |
| 92 | + DeviceFeatures.from_feature_flags( |
| 93 | + new_feature_info=4499197267967999, |
| 94 | + new_feature_info_str="508A977F7EFEFFFF", |
| 95 | + feature_info=[111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125], |
| 96 | + product_nickname=RoborockProductNickname.TANOS, |
| 97 | + ) |
| 98 | + ), |
| 99 | + "trait_data": {"dock_type": 9}, |
| 100 | + } |
| 101 | + cache_data = CacheData.from_dict(data) |
| 102 | + assert isinstance(cache_data, CacheData) |
| 103 | + assert isinstance(cache_data.device_features, DeviceFeatures) |
| 104 | + assert isinstance(cache_data.network_info["fake_duid"], NetworkInfo) |
| 105 | + assert isinstance(cache_data.home_data, HomeData) |
0 commit comments