from unittest.mock import MagicMock, patch
from lib.clients.tmdb.base import BaseTmdbClient
def test_movie_item_adds_trakt_context_actions_when_authenticated():
list_item = MagicMock()
ids = {"tmdb_id": 10, "imdb_id": "tt0010", "tvdb_id": ""}
with patch(
"lib.clients.tmdb.base.add_tmdb_movie_context_menu",
return_value=[("tmdb", "cmd")],
), patch("lib.clients.tmdb.base.is_trakt_auth", return_value=True), patch(
"lib.clients.tmdb.base.add_trakt_watchlist_context_menu",
return_value=[("watchlist", "cmd")],
), patch(
"lib.clients.tmdb.base.add_trakt_watched_context_menu",
return_value=[("watched", "cmd")],
), patch(
"lib.clients.tmdb.base.add_trakt_collection_context_menu",
return_value=[("collection", "cmd")],
), patch(
"lib.clients.tmdb.base.add_trakt_favorites_context_menu",
return_value=[("favorites", "cmd")],
), patch(
"lib.clients.tmdb.base.add_trakt_custom_list_context_menu",
return_value=[("customlist", "cmd")],
), patch("lib.clients.tmdb.base.add_kodi_dir_item"):
BaseTmdbClient.add_media_directory_item(list_item, "movies", "Demo Movie", ids)
list_item.addContextMenuItems.assert_called_once_with(
[
("tmdb", "cmd"),
("watchlist", "cmd"),
("watched", "cmd"),
("collection", "cmd"),
("favorites", "cmd"),
("customlist", "cmd"),
]
)
list_item.setProperty.assert_called_once_with("IsPlayable", "true")
def test_tv_item_skips_trakt_context_actions_when_not_authenticated():
list_item = MagicMock()
ids = {"tmdb_id": 20, "imdb_id": "tt0020", "tvdb_id": 200}
with patch(
"lib.clients.tmdb.base.add_tmdb_show_context_menu",
return_value=[("tmdb-tv", "cmd")],
), patch("lib.clients.tmdb.base.is_trakt_auth", return_value=False), patch(
"lib.clients.tmdb.base.add_kodi_dir_item"
):
BaseTmdbClient.add_media_directory_item(list_item, "tv", "Demo Show", ids)
list_item.addContextMenuItems.assert_called_once_with([("tmdb-tv", "cmd")])