58 lines
1.5 KiB
Python
58 lines
1.5 KiB
Python
from pathlib import Path
|
|
|
|
from serato_doctor.duplicates import find_duplicate_groups
|
|
from serato_doctor.models.duplicate import DuplicateKind
|
|
from serato_doctor.models.track import DiskTrack
|
|
|
|
|
|
def track(path):
|
|
path = Path(path)
|
|
return DiskTrack(path, path.name, 100, path.suffix.lower())
|
|
|
|
|
|
def test_exact_names_in_different_folders_form_a_group():
|
|
groups = find_duplicate_groups(
|
|
[track("/A/Song.mp3"), track("/B/Song.mp3")]
|
|
)
|
|
|
|
assert len(groups) == 1
|
|
assert groups[0].kind is DuplicateKind.EXACT_NAME
|
|
assert groups[0].display_name == "Song.mp3"
|
|
assert groups[0].extra_files == 1
|
|
|
|
|
|
def test_case_only_difference_is_an_exact_name_duplicate():
|
|
groups = find_duplicate_groups(
|
|
[track("/A/SONG.MP3"), track("/B/song.mp3")]
|
|
)
|
|
|
|
assert groups[0].kind is DuplicateKind.EXACT_NAME
|
|
|
|
|
|
def test_numeric_suffixes_form_a_suspected_cloud_conflict_group():
|
|
groups = find_duplicate_groups(
|
|
[
|
|
track("/A/Track.mp3"),
|
|
track("/B/Track 2.mp3"),
|
|
track("/C/Track 3.mp3"),
|
|
]
|
|
)
|
|
|
|
assert len(groups) == 1
|
|
assert groups[0].kind is DuplicateKind.CLOUD_CONFLICT
|
|
assert groups[0].display_name == "Track.mp3"
|
|
assert groups[0].extra_files == 2
|
|
assert [item.path for item in groups[0].tracks] == [
|
|
Path("/A/Track.mp3"),
|
|
Path("/B/Track 2.mp3"),
|
|
Path("/C/Track 3.mp3"),
|
|
]
|
|
|
|
|
|
def test_unrelated_and_single_files_are_not_reported():
|
|
groups = find_duplicate_groups(
|
|
[track("/A/First.mp3"), track("/B/Second.mp3")]
|
|
)
|
|
|
|
assert groups == ()
|