1+ import tarfile
12from pathlib import Path
23from unittest .mock import MagicMock
34
45import pytest
6+ from zipremove import ZipFile
57
68from perdoo .comic import Comic
7- from perdoo .comic .errors import ComicMetadataError
89from perdoo .comic .metadata import ComicInfo , MetronInfo
910from perdoo .comic .metadata .metron_info import Series
1011from perdoo .settings import Naming
1112
1213
1314@pytest .fixture
14- def cbz_comic (tmp_path : Path ) -> Comic :
15- file_path = tmp_path / "test.cbz "
16- file_path . touch ( )
17- return Comic ( file = file_path )
15+ def image_file (tmp_path : Path ) -> Path :
16+ filepath = tmp_path / "page1.jpg "
17+ filepath . write_bytes ( b"Fake image" )
18+ return filepath
1819
1920
2021@pytest .fixture
21- def cbt_comic (tmp_path : Path ) -> Comic :
22- file_path = tmp_path / "test.cbt"
23- file_path .touch ()
24- return Comic (file = file_path )
22+ def cbz_comic (tmp_path : Path , image_file : Path ) -> Comic :
23+ filepath = tmp_path / "test.cbz"
24+ with ZipFile (filepath , "w" ) as archive :
25+ archive .write (image_file )
26+ return Comic (filepath = filepath )
27+
28+
29+ @pytest .fixture
30+ def cbt_comic (tmp_path : Path , image_file : Path ) -> Comic :
31+ filepath = tmp_path / "test.cbt"
32+ with tarfile .open (filepath , "w:gz" ) as archive :
33+ archive .add (image_file )
34+ return Comic (filepath = filepath )
2535
2636
2737@pytest .fixture
@@ -35,24 +45,19 @@ def comic_info() -> ComicInfo:
3545
3646
3747def test_convert_to_cbz (cbt_comic : Comic ) -> None :
38- cbt_comic .convert (extension = "cbz" )
39- assert cbt_comic .path .suffix == ".cbz"
40-
41-
42- def test_convert_to_cbt (cbz_comic : Comic ) -> None :
43- cbz_comic .convert (extension = "cbt" )
44- assert cbz_comic .path .suffix == ".cbt"
48+ cbt_comic .convert_to (extension = "cbz" )
49+ assert cbt_comic .filepath .suffix == ".cbz"
4550
4651
4752def test_clean_archive (cbz_comic : Comic ) -> None :
48- cbz_comic ._archiver . get_filename_list = MagicMock ( # noqa: SLF001
53+ cbz_comic .archive . list_filenames = MagicMock (
4954 return_value = ["image1.jpg" , "info.txt" , "ComicInfo.xml" , "cover.png" ]
5055 )
51- cbz_comic ._archiver . remove_files = MagicMock () # noqa: SLF001
56+ cbz_comic .archive . remove_file = MagicMock ()
5257
5358 cbz_comic .clean_archive ()
54- cbz_comic ._archiver . remove_files .assert_called_once () # noqa: SLF001
55- cbz_comic ._archiver . remove_files .assert_called_once_with (filename_list = [ "info.txt" ]) # noqa: SLF001
59+ cbz_comic .archive . remove_file .assert_called_once ()
60+ cbz_comic .archive . remove_file .assert_called_once_with (filename = "info.txt" )
5661
5762
5863def test_write_comicinfo (cbz_comic : Comic , comic_info : ComicInfo ) -> None :
@@ -67,13 +72,6 @@ def test_write_metroninfo(cbz_comic: Comic, metron_info: MetronInfo) -> None:
6772 assert cbz_comic .metron_info == metron_info
6873
6974
70- def test_write_null_metadata (cbz_comic : Comic ) -> None :
71- with pytest .raises (ComicMetadataError ):
72- cbz_comic .write_metadata (metadata = None )
73- assert cbz_comic .comic_info is None
74- assert cbz_comic .metron_info is None
75-
76-
7775def test_write_metadata_override (cbz_comic : Comic , metron_info : MetronInfo ) -> None :
7876 metadata_copy = metron_info .model_copy (deep = True )
7977 metadata_copy .series .volume = 2
@@ -87,5 +85,5 @@ def test_write_metadata_override(cbz_comic: Comic, metron_info: MetronInfo) -> N
8785
8886def test_rename (cbz_comic : Comic , metron_info : MetronInfo ) -> None :
8987 cbz_comic .write_metadata (metadata = metron_info )
90- cbz_comic .rename (naming = Naming (), output_folder = cbz_comic .path .parent )
91- assert cbz_comic .path .name == "Test-Series-v1_#.cbz"
88+ cbz_comic .rename (naming = Naming (), output_folder = cbz_comic .filepath .parent )
89+ assert cbz_comic .filepath .name == "Test-Series-v1_#.cbz"
0 commit comments