35 lines
1.3 KiB
Python
35 lines
1.3 KiB
Python
import runpy
|
|
from pathlib import Path
|
|
|
|
from serato_doctor.crate_parser import load_library_crates
|
|
from serato_doctor.models.crate import CrateKind
|
|
from serato_doctor.models.library import Library
|
|
from serato_doctor.scanner import scan_audio
|
|
|
|
|
|
def test_generated_sample_library_has_expected_scenario(tmp_path):
|
|
generator_path = (
|
|
Path(__file__).parents[1] / "samples" / "small-library" / "generate.py"
|
|
)
|
|
build_sample = runpy.run_path(str(generator_path))["build_sample"]
|
|
sample_root = build_sample(tmp_path / "sample")
|
|
|
|
crates = load_library_crates(sample_root / "Serato" / "_Serato_")
|
|
tracks = scan_audio(sample_root / "Music")
|
|
library = Library.from_crates(crates, tracks)
|
|
results = library.reconcile_by_filename()
|
|
missing = {
|
|
result.reference.filename
|
|
for result in results
|
|
if not result.exists_by_filename
|
|
}
|
|
|
|
crate_files = list((sample_root / "Serato").rglob("*.crate"))
|
|
smart_files = list((sample_root / "Serato").rglob("*.scrate"))
|
|
assert len(crate_files) + len(smart_files) == 7
|
|
assert len(library.references) == 13
|
|
assert len(tracks) == 10
|
|
assert missing == {"Missing.mp3", "Old Name.mp3"}
|
|
assert sum(crate.kind is CrateKind.STATIC for crate in crates) == 5
|
|
assert sum(crate.kind is CrateKind.SMART for crate in crates) == 2
|