Skip to content

Commit ee52930

Browse files
committed
feat: complete coverage on labels
1 parent 221c47e commit ee52930

File tree

1 file changed

+108
-0
lines changed

1 file changed

+108
-0
lines changed

tests/test_label.py

+108
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
import pytest
2+
from tests import MockResponse
3+
from deluge_web_client import DelugeWebClientError
4+
5+
6+
def test_get_labels(client_mock):
7+
client, mock_post = client_mock
8+
9+
mock_post.side_effect = (
10+
MockResponse(
11+
{"result": ["movies", "shows"], "error": None, "id": 0},
12+
ok=True,
13+
status_code=200,
14+
),
15+
)
16+
17+
response = client.get_labels()
18+
assert response.result == ["movies", "shows"]
19+
assert mock_post.called
20+
assert mock_post.call_count == 1
21+
assert mock_post.call_args[1]["json"]["method"] == "label.get_labels"
22+
23+
24+
def test_set_label(client_mock):
25+
client, mock_post = client_mock
26+
27+
mock_post.side_effect = (
28+
MockResponse(
29+
{"result": None, "error": None, "id": 0},
30+
ok=True,
31+
status_code=200,
32+
),
33+
)
34+
35+
response = client.set_label("ea5e27b8f2662a5xxxxxxxx214c94190xxxxxxxx", "movies")
36+
assert response.result is None
37+
assert mock_post.called
38+
assert mock_post.call_count == 1
39+
assert mock_post.call_args[1]["json"]["params"] == [
40+
"ea5e27b8f2662a5xxxxxxxx214c94190xxxxxxxx",
41+
"movies",
42+
]
43+
assert mock_post.call_args[1]["json"]["method"] == "label.set_torrent"
44+
45+
46+
def test_add_label_success(client_mock):
47+
client, mock_post = client_mock
48+
49+
mock_post.side_effect = (
50+
MockResponse(
51+
{"result": None, "error": None, "id": 0},
52+
ok=True,
53+
status_code=200,
54+
),
55+
)
56+
57+
response = client.add_label("movies")
58+
assert response.result is None
59+
assert mock_post.called
60+
assert mock_post.call_count == 1
61+
assert mock_post.call_args[1]["json"]["method"] == "label.add"
62+
63+
64+
def test_add_label_already_exists(client_mock):
65+
client, mock_post = client_mock
66+
67+
already_exists_info = {
68+
"result": None,
69+
"error": {
70+
"message": "Label already exists",
71+
"code": 4,
72+
},
73+
"id": 1,
74+
}
75+
mock_post.side_effect = (
76+
MockResponse(
77+
already_exists_info,
78+
ok=True,
79+
status_code=200,
80+
),
81+
)
82+
83+
response = client.add_label("movies")
84+
assert response.result is None
85+
assert isinstance(response.error, dict)
86+
assert "Label already exists" in response.error.get("message", "")
87+
assert mock_post.called
88+
assert mock_post.call_count == 1
89+
assert mock_post.call_args[1]["json"]["method"] == "label.add"
90+
91+
92+
def test_add_label_raises_error(client_mock):
93+
client, mock_post = client_mock
94+
95+
mock_post.side_effect = (
96+
MockResponse(
97+
{
98+
"result": None,
99+
"error": "Random error",
100+
"id": 2,
101+
},
102+
ok=True,
103+
status_code=200,
104+
),
105+
)
106+
107+
with pytest.raises(DelugeWebClientError, match="Error adding label:\nRandom error"):
108+
client.add_label("movies")

0 commit comments

Comments
 (0)