Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Der-Henning
GitHub Repository: Der-Henning/tgtg
Path: blob/main/tests/test_favorites.py
725 views
1
from unittest.mock import MagicMock, call
2
3
import pytest
4
5
from tgtg_scanner.errors import TgtgAPIError
6
from tgtg_scanner.models.favorites import Favorites
7
8
9
@pytest.fixture
10
def favorites():
11
mock_client = MagicMock()
12
return Favorites(mock_client)
13
14
15
def test_is_item_favorite(favorites: Favorites, tgtg_item: dict):
16
favorites.client.get_favorites.return_value = [] # type: ignore[attr-defined]
17
is_favorite = favorites.is_item_favorite(tgtg_item.get("item", {}).get("item_id"))
18
assert is_favorite == tgtg_item.get("favorite")
19
20
is_favorite = favorites.is_item_favorite("123")
21
assert is_favorite is False
22
23
24
def test_get_item_by_id(favorites: Favorites, tgtg_item: dict):
25
item_id = tgtg_item.get("item", {}).get("item_id")
26
27
def side_effect(x):
28
if x == item_id:
29
return tgtg_item
30
raise TgtgAPIError()
31
32
favorites.client.get_item.side_effect = side_effect # type: ignore[attr-defined]
33
item = favorites.get_item_by_id(item_id)
34
assert item.item_id == item_id
35
assert item.display_name == tgtg_item.get("display_name")
36
assert item.items_available == tgtg_item.get("items_available")
37
38
item = favorites.get_item_by_id("123")
39
assert not item.item_id
40
assert item.display_name == "-"
41
assert item.items_available == 0
42
43
44
def test_get_favorites(favorites: Favorites, tgtg_item: dict):
45
favorites.client.get_favorites.return_value = [tgtg_item] # type: ignore[attr-defined]
46
items = favorites.get_favorites()
47
assert len(items) == 1
48
assert items[0].item_id == tgtg_item.get("item", {}).get("item_id")
49
assert items[0].display_name == tgtg_item.get("display_name")
50
assert items[0].items_available == tgtg_item.get("items_available")
51
52
53
def test_add_favorites(favorites: Favorites):
54
set_favorite_mock = MagicMock()
55
favorites.client.set_favorite = set_favorite_mock # type: ignore[method-assign]
56
favorites.add_favorites(["123", "234"])
57
set_favorite_mock.assert_has_calls([call("123", True), call("234", True)])
58
59
60
def test_remove_favorites(favorites: Favorites):
61
set_favorite_mock = MagicMock()
62
favorites.client.set_favorite = set_favorite_mock # type: ignore[method-assign]
63
favorites.remove_favorite(["123", "234"])
64
set_favorite_mock.assert_has_calls([call("123", False), call("234", False)])
65
66