from pathlib import Path import stash_handler EXTS = {".mp4", ".mkv"} def test_is_media_is_case_insensitive(): assert stash_handler.is_media(Path("a.mp4"), EXTS) assert stash_handler.is_media(Path("A.MKV"), EXTS) assert not stash_handler.is_media(Path("notes.txt"), EXTS) def test_walk_media_recurses_and_filters(tmp_path): (tmp_path / "sub").mkdir() (tmp_path / "a.mp4").write_bytes(b"x") (tmp_path / "sub" / "b.mkv").write_bytes(b"x") (tmp_path / "c.txt").write_bytes(b"x") found = {p.name for p in stash_handler.walk_media(tmp_path, EXTS)} assert found == {"a.mp4", "b.mkv"} def test_transfer_copy_preserves_original(tmp_path): src = tmp_path / "src.mp4" src.write_bytes(b"data") dst = tmp_path / "out" / "src.mp4" stash_handler.transfer_file(src, dst, "copy") assert dst.read_bytes() == b"data" assert src.exists() # seeding can continue def test_transfer_hardlink_preserves_original(tmp_path): src = tmp_path / "src.mp4" src.write_bytes(b"data") dst = tmp_path / "out" / "src.mp4" stash_handler.transfer_file(src, dst, "hardlink") assert dst.read_bytes() == b"data" assert src.exists() def test_transfer_move_removes_original(tmp_path): src = tmp_path / "src.mp4" src.write_bytes(b"data") dst = tmp_path / "out" / "src.mp4" stash_handler.transfer_file(src, dst, "move") assert dst.read_bytes() == b"data" assert not src.exists()