Skip to content

Commit a20fe00

Browse files
Fix tests
1 parent 0e3090b commit a20fe00

4 files changed

Lines changed: 139 additions & 97 deletions

File tree

mediux_posters/__main__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -653,5 +653,6 @@ def set_posters(
653653
kometa_integration=settings.kometa_integration,
654654
)
655655

656+
656657
if __name__ == "__main__":
657658
app(prog_name="Mediux-Posters")

tests/jellyfin_test.py

Lines changed: 58 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,10 @@ def test_list_shows(jellyfin_session: Jellyfin | None, httpx_mock: HTTPXMock) ->
2626
json=json.loads(Path("tests/resources/jellyfin/list-shows.json").read_text()),
2727
is_reusable=True,
2828
)
29-
httpx_mock.add_response(
30-
url=re.compile("http://localhost/Shows/.*/Seasons.*"),
31-
json=json.loads(Path("tests/resources/jellyfin/list-seasons.json").read_text()),
32-
is_reusable=True,
33-
)
34-
httpx_mock.add_response(
35-
url=re.compile("http://localhost/Shows/.*/Episodes.*"),
36-
json=json.loads(Path("tests/resources/jellyfin/list-episodes.json").read_text()),
37-
is_reusable=True,
38-
)
3929

4030
results = jellyfin_session.list_shows()
4131
assert len(results) != 0
32+
4233
result = next(iter(x for x in results if x.tmdb_id == 33907), None)
4334
assert result is not None
4435

@@ -60,16 +51,6 @@ def test_get_series(jellyfin_session: Jellyfin | None, httpx_mock: HTTPXMock) ->
6051
json=json.loads(Path("tests/resources/jellyfin/get-show.json").read_text()),
6152
is_reusable=True,
6253
)
63-
httpx_mock.add_response(
64-
url=re.compile("http://localhost/Shows/.*/Seasons.*"),
65-
json=json.loads(Path("tests/resources/jellyfin/list-seasons.json").read_text()),
66-
is_reusable=True,
67-
)
68-
httpx_mock.add_response(
69-
url=re.compile("http://localhost/Shows/.*/Episodes.*"),
70-
json=json.loads(Path("tests/resources/jellyfin/list-episodes.json").read_text()),
71-
is_reusable=True,
72-
)
7354

7455
result = jellyfin_session.get_show(tmdb_id=33907)
7556
assert result is not None
@@ -83,26 +64,62 @@ def test_get_series(jellyfin_session: Jellyfin | None, httpx_mock: HTTPXMock) ->
8364
assert result.tv_rage_id == 26615
8465
assert result.tvdb_id == 193131
8566
assert result.year == 2010
86-
assert len(result.seasons) != 0
87-
assert result.seasons[1].id == "759a122515cb24b264e906bb80f3f06a"
88-
assert result.seasons[1].imdb_id is None
89-
assert result.seasons[1].name == "Season 1"
90-
assert result.seasons[1].number == 1
91-
assert result.seasons[1].premiere_date == date(2010, 9, 26)
92-
assert result.seasons[1].tmdb_id is None
93-
assert result.seasons[1].tv_maze_id is None
94-
assert result.seasons[1].tv_rage_id is None
95-
assert result.seasons[1].tvdb_id == 324521
96-
assert len(result.seasons[1].episodes) != 0
97-
assert result.seasons[1].episodes[0].id == "d26bb397376eb1e63b2621eaa3ff9add"
98-
assert result.seasons[1].episodes[0].imdb_id == "tt1608844"
99-
assert result.seasons[1].episodes[0].name == "Episode 1"
100-
assert result.seasons[1].episodes[0].number == 1
101-
assert result.seasons[1].episodes[0].premiere_date == date(2010, 9, 26)
102-
assert result.seasons[1].episodes[0].tmdb_id is None
103-
assert result.seasons[1].episodes[0].tv_maze_id is None
104-
assert result.seasons[1].episodes[0].tv_rage_id is None
105-
assert result.seasons[1].episodes[0].tvdb_id == 2887371
67+
68+
69+
@pytest.mark.httpx_mock(
70+
should_mock=lambda request: request.url.host == "localhost",
71+
assert_all_responses_were_requested=False,
72+
)
73+
def test_list_seasons(jellyfin_session: Jellyfin | None, httpx_mock: HTTPXMock) -> None:
74+
if jellyfin_session is None:
75+
jellyfin_session = Jellyfin(base_url="http://localhost", token="INVALID") # noqa: S106
76+
httpx_mock.add_response(
77+
url=re.compile("http://localhost/Shows/.*/Seasons.*"),
78+
json=json.loads(Path("tests/resources/jellyfin/list-seasons.json").read_text()),
79+
is_reusable=True,
80+
)
81+
82+
results = jellyfin_session.list_seasons(show_id="375ad80948bb3e9bd78684d915430bfa")
83+
assert len(results) != 0
84+
85+
assert results[1].id == "759a122515cb24b264e906bb80f3f06a"
86+
assert results[1].imdb_id is None
87+
assert results[1].name == "Season 1"
88+
assert results[1].number == 1
89+
assert results[1].premiere_date == date(2010, 9, 26)
90+
assert results[1].tmdb_id is None
91+
assert results[1].tv_maze_id is None
92+
assert results[1].tv_rage_id is None
93+
assert results[1].tvdb_id == 324521
94+
95+
96+
@pytest.mark.httpx_mock(
97+
should_mock=lambda request: request.url.host == "localhost",
98+
assert_all_responses_were_requested=False,
99+
)
100+
def test_list_episodes(jellyfin_session: Jellyfin | None, httpx_mock: HTTPXMock) -> None:
101+
if jellyfin_session is None:
102+
jellyfin_session = Jellyfin(base_url="http://localhost", token="INVALID") # noqa: S106
103+
httpx_mock.add_response(
104+
url=re.compile("http://localhost/Shows/.*/Episodes.*"),
105+
json=json.loads(Path("tests/resources/jellyfin/list-episodes.json").read_text()),
106+
is_reusable=True,
107+
)
108+
109+
results = jellyfin_session.list_episodes(
110+
show_id="375ad80948bb3e9bd78684d915430bfa", season_id="759a122515cb24b264e906bb80f3f06a"
111+
)
112+
assert len(results) != 0
113+
114+
assert results[0].id == "d26bb397376eb1e63b2621eaa3ff9add"
115+
assert results[0].imdb_id == "tt1608844"
116+
assert results[0].name == "Episode 1"
117+
assert results[0].number == 1
118+
assert results[0].premiere_date == date(2010, 9, 26)
119+
assert results[0].tmdb_id is None
120+
assert results[0].tv_maze_id is None
121+
assert results[0].tv_rage_id is None
122+
assert results[0].tvdb_id == 2887371
106123

107124

108125
@pytest.mark.httpx_mock(
@@ -143,7 +160,7 @@ def test_get_movie(jellyfin_session: Jellyfin | None, httpx_mock: HTTPXMock) ->
143160
)
144161
httpx_mock.add_response(
145162
url=re.compile("http://localhost/Items.*IncludeItemTypes=Movie"),
146-
json=json.loads(Path("tests/resources/jellyfin/list-movies.json").read_text()),
163+
json=json.loads(Path("tests/resources/jellyfin/get-movie.json").read_text()),
147164
is_reusable=True,
148165
)
149166

tests/mediux_test.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ def test_list_show_sets(mediux_session: Mediux) -> None:
2626
assert result.show.release_date == date(2010, 9, 26)
2727
assert len(result.show.seasons) != 0
2828
assert len(result.show.seasons[0].episodes) != 0
29-
assert result.show.seasons[0].episodes[0].id == 1018710
30-
assert result.show.seasons[0].episodes[0].number == 6
31-
assert result.show.seasons[0].episodes[0].title == "A Moorland Holiday"
29+
assert result.show.seasons[0].episodes[0].id == 779832
30+
assert result.show.seasons[0].episodes[0].number == 2
31+
assert result.show.seasons[0].episodes[0].title == "Christmas at Downton Abbey"
3232
assert result.show.seasons[0].id == 44727
3333
assert result.show.seasons[0].title == "Specials"
3434
assert result.show.seasons[0].number == 0

tests/plex_test.py

Lines changed: 77 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,10 @@ def test_list_shows(plex_session: Plex | None, httpx_mock: HTTPXMock) -> None:
2626
json=json.loads(Path("tests/resources/plex/list-shows.json").read_text()),
2727
is_reusable=True,
2828
)
29-
httpx_mock.add_response(
30-
url=re.compile(r"http://localhost/library/metadata/.*/children\?includeGuids=1"),
31-
json=json.loads(Path("tests/resources/plex/list-seasons.json").read_text()),
32-
is_reusable=True,
33-
)
34-
httpx_mock.add_response(
35-
url=re.compile(r"http://localhost/library/metadata/.*/children\?includeGuids=1"),
36-
json=json.loads(Path("tests/resources/plex/list-episodes.json").read_text()),
37-
is_reusable=True,
38-
)
3929

4030
results = plex_session.list_shows()
4131
assert results is not None
32+
4233
result = next(iter(x for x in results if x.tmdb_id == 131378), None)
4334
assert result is not None
4435

@@ -60,43 +51,67 @@ def test_get_show(plex_session: Plex | None, httpx_mock: HTTPXMock) -> None:
6051
json=json.loads(Path("tests/resources/plex/get-show.json").read_text()),
6152
is_reusable=True,
6253
)
54+
55+
result = plex_session.get_show(tmdb_id=131378)
56+
assert result is not None
57+
58+
assert result.id == 109436
59+
assert result.imdb_id == "tt15248880"
60+
assert result.name == "Adventure Time: Fionna & Cake"
61+
assert result.premiere_date == date(2023, 8, 31)
62+
assert result.tmdb_id == 131378
63+
assert result.tvdb_id == 408850
64+
assert result.year == 2023
65+
66+
67+
@pytest.mark.httpx_mock(
68+
should_mock=lambda request: request.url.host == "localhost",
69+
assert_all_responses_were_requested=False,
70+
)
71+
def test_list_seasons(plex_session: Plex | None, httpx_mock: HTTPXMock) -> None:
72+
if plex_session is None:
73+
plex_session = Plex(base_url="http://localhost", token="INVALID") # noqa: S106
6374
httpx_mock.add_response(
6475
url=re.compile(r"http://localhost/library/metadata/.*/children\?includeGuids=1"),
6576
json=json.loads(Path("tests/resources/plex/list-seasons.json").read_text()),
6677
is_reusable=True,
6778
)
79+
80+
results = plex_session.list_seasons(show_id=109436)
81+
assert len(results) != 0
82+
83+
assert results[0].id == 109437
84+
assert results[0].imdb_id is None
85+
assert results[0].name == "Season 1"
86+
assert results[0].number == 1
87+
assert results[0].premiere_date is None
88+
assert results[0].tmdb_id == 206322
89+
assert results[0].tvdb_id == 1950683
90+
91+
92+
@pytest.mark.httpx_mock(
93+
should_mock=lambda request: request.url.host == "localhost",
94+
assert_all_responses_were_requested=False,
95+
)
96+
def test_list_episodes(plex_session: Plex | None, httpx_mock: HTTPXMock) -> None:
97+
if plex_session is None:
98+
plex_session = Plex(base_url="http://localhost", token="INVALID") # noqa: S106
6899
httpx_mock.add_response(
69100
url=re.compile(r"http://localhost/library/metadata/.*/children\?includeGuids=1"),
70101
json=json.loads(Path("tests/resources/plex/list-episodes.json").read_text()),
71102
is_reusable=True,
72103
)
73104

74-
result = plex_session.get_show(tmdb_id=131378)
75-
assert result is not None
105+
results = plex_session.list_episodes(show_id=109436, season_id=109437)
106+
assert len(results) != 0
76107

77-
assert result.id == 109436
78-
assert result.imdb_id == "tt15248880"
79-
assert result.name == "Adventure Time: Fionna & Cake"
80-
assert result.premiere_date == date(2023, 8, 31)
81-
assert result.tmdb_id == 131378
82-
assert result.tvdb_id == 408850
83-
assert result.year == 2023
84-
assert len(result.seasons) != 0
85-
assert result.seasons[0].id == 109437
86-
assert result.seasons[0].imdb_id is None
87-
assert result.seasons[0].name == "Season 1"
88-
assert result.seasons[0].number == 1
89-
assert result.seasons[0].premiere_date is None
90-
assert result.seasons[0].tmdb_id == 206322
91-
assert result.seasons[0].tvdb_id == 1950683
92-
assert len(result.seasons[0].episodes) != 0
93-
assert result.seasons[0].episodes[0].id == 109438
94-
assert result.seasons[0].episodes[0].imdb_id == "tt15251002"
95-
assert result.seasons[0].episodes[0].name == "Fionna Campbell"
96-
assert result.seasons[0].episodes[0].number == 1
97-
assert result.seasons[0].episodes[0].premiere_date == date(2023, 8, 31)
98-
assert result.seasons[0].episodes[0].tmdb_id == 4582728
99-
assert result.seasons[0].episodes[0].tvdb_id == 8619274
108+
assert results[0].id == 109438
109+
assert results[0].imdb_id == "tt15251002"
110+
assert results[0].name == "Fionna Campbell"
111+
assert results[0].number == 1
112+
assert results[0].premiere_date == date(2023, 8, 31)
113+
assert results[0].tmdb_id == 4582728
114+
assert results[0].tvdb_id == 8619274
100115

101116

102117
@pytest.mark.httpx_mock(
@@ -121,14 +136,10 @@ def test_list_collections(plex_session: Plex | None, httpx_mock: HTTPXMock) -> N
121136
json=json.loads(Path("tests/resources/plex/get-collection.json").read_text()),
122137
is_reusable=True,
123138
)
124-
httpx_mock.add_response(
125-
url=re.compile(r"http://localhost/library/metadata/.*/children\?includeGuids=1"),
126-
json=json.loads(Path("tests/resources/plex/list-collection-movies.json").read_text()),
127-
is_reusable=True,
128-
)
129139

130140
results = plex_session.list_collections()
131141
assert len(results) != 0
142+
132143
result = next(iter(x for x in results if x.tmdb_id == 125574), None)
133144
assert result is not None
134145

@@ -155,26 +166,38 @@ def test_get_collection(plex_session: Plex | None, httpx_mock: HTTPXMock) -> Non
155166
json=json.loads(Path("tests/resources/plex/get-collection.json").read_text()),
156167
is_reusable=True,
157168
)
158-
httpx_mock.add_response(
159-
url=re.compile(r"http://localhost/library/metadata/.*/children\?includeGuids=1"),
160-
json=json.loads(Path("tests/resources/plex/list-collection-movies.json").read_text()),
161-
is_reusable=True,
162-
)
163169

164170
result = plex_session.get_collection(tmdb_id=125574)
165171
assert result is not None
166172

167173
assert result.id == 120713
168174
assert result.name == "The Amazing Spider-Man Collection"
169175
assert result.tmdb_id == 125574
170-
assert len(result.movies) != 0
171-
assert result.movies[0].id == 120717
172-
assert result.movies[0].imdb_id == "tt0948470"
173-
assert result.movies[0].name == "The Amazing Spider-Man"
174-
assert result.movies[0].premiere_date == date(2012, 6, 28)
175-
assert result.movies[0].tmdb_id == 1930
176-
assert result.movies[0].tvdb_id == 473
177-
assert result.movies[0].year == 2012
176+
177+
178+
@pytest.mark.httpx_mock(
179+
should_mock=lambda request: request.url.host == "localhost",
180+
assert_all_responses_were_requested=False,
181+
)
182+
def test_list_collection_movies(plex_session: Plex | None, httpx_mock: HTTPXMock) -> None:
183+
if plex_session is None:
184+
plex_session = Plex(base_url="http://localhost", token="INVALID") # noqa: S106
185+
httpx_mock.add_response(
186+
url=re.compile(r"http://localhost/library/metadata/.*/children\?includeGuids=1"),
187+
json=json.loads(Path("tests/resources/plex/list-collection-movies.json").read_text()),
188+
is_reusable=True,
189+
)
190+
191+
results = plex_session.list_collection_movies(collection_id=120713)
192+
assert len(results) != 0
193+
194+
assert results[0].id == 120717
195+
assert results[0].imdb_id == "tt0948470"
196+
assert results[0].name == "The Amazing Spider-Man"
197+
assert results[0].premiere_date == date(2012, 6, 28)
198+
assert results[0].tmdb_id == 1930
199+
assert results[0].tvdb_id == 473
200+
assert results[0].year == 2012
178201

179202

180203
@pytest.mark.httpx_mock(
@@ -197,6 +220,7 @@ def test_list_movies(plex_session: Plex | None, httpx_mock: HTTPXMock) -> None:
197220

198221
results = plex_session.list_movies()
199222
assert len(results) != 0
223+
200224
result = next(iter(x for x in results if x.tmdb_id == 431580), None)
201225
assert result is not None
202226

0 commit comments

Comments
 (0)