fix(qbittorrent): preserve torrent metadata in incremental updates
This commit is contained in:
@@ -125,13 +125,21 @@ class QbittorrentClientTests(unittest.TestCase):
|
||||
"rid": 10,
|
||||
"full_update": True,
|
||||
"server_state": {"dl_info_speed": 100},
|
||||
"torrents": {"a": {"name": "A", "state": "downloading"}},
|
||||
"torrents": {
|
||||
"a": {
|
||||
"name": "A",
|
||||
"state": "downloading",
|
||||
"size": 1_024,
|
||||
"progress": 0.5,
|
||||
"dlspeed": 100,
|
||||
}
|
||||
},
|
||||
}
|
||||
partial = {
|
||||
"rid": 11,
|
||||
"full_update": False,
|
||||
"server_state": {"dl_info_speed": 200},
|
||||
"torrents": {"a": {"name": "A", "state": "pausedDL"}},
|
||||
"torrents": {"a": {"dlspeed": 200}},
|
||||
}
|
||||
self.session.get.side_effect = [self._get_response(full), self._get_response(partial)]
|
||||
|
||||
@@ -143,7 +151,11 @@ class QbittorrentClientTests(unittest.TestCase):
|
||||
r2 = self.client.maindata()
|
||||
self.assertEqual(self.session.get.call_args_list[1].kwargs["params"].get("rid"), 10)
|
||||
self.assertEqual(r2["server_state"]["dl_info_speed"], 200) # merged
|
||||
self.assertEqual(r2["torrents"]["a"]["state"], "pausedDL") # merged
|
||||
self.assertEqual(r2["torrents"]["a"]["dlspeed"], 200)
|
||||
self.assertEqual(r2["torrents"]["a"]["name"], "A")
|
||||
self.assertEqual(r2["torrents"]["a"]["state"], "downloading")
|
||||
self.assertEqual(r2["torrents"]["a"]["size"], 1_024)
|
||||
self.assertEqual(r2["torrents"]["a"]["progress"], 0.5)
|
||||
|
||||
def test_maindata_caches_concurrent_calls_within_ttl(self) -> None:
|
||||
"""Two calls within the TTL collapse to a single HTTP fetch."""
|
||||
@@ -227,8 +239,8 @@ class QbittorrentClientTests(unittest.TestCase):
|
||||
self.session.post.return_value = self._login_response()
|
||||
self.client._login()
|
||||
call_kwargs = self.session.post.call_args.kwargs
|
||||
assert call_kwargs["timeout"] == (5.0, 5.0)
|
||||
assert not isinstance(call_kwargs["timeout"], int)
|
||||
self.assertEqual(call_kwargs["timeout"], (5.0, 5.0))
|
||||
self.assertNotIsInstance(call_kwargs["timeout"], int)
|
||||
|
||||
def test_login_fails_message_names_bad_credentials(self) -> None:
|
||||
"""'Fails.' body yields a clear 'invalid username or password' error."""
|
||||
|
||||
Reference in New Issue
Block a user