"""Tests for utility/helper functions."""
+import pytest
+
from music_assistant.server.providers.filesystem_local import helpers
# ruff: noqa: S108
album_path = "/tmp/Antonin Dvorak/Album"
artist_name = "Antonín Dvořák"
assert helpers.get_artist_dir(artist_name, album_path) == "/tmp/Antonin Dvorak"
+
+
+@pytest.mark.parametrize(
+ ("album_name", "track_dir", "expected"),
+ [
+ # Test literal match
+ (
+ "Selected Ambient Works 85-92",
+ "/home/user/Music/Aphex Twin/Selected Ambient Works 85-92",
+ "/home/user/Music/Aphex Twin/Selected Ambient Works 85-92",
+ ),
+ # Test artist - album format
+ (
+ "Selected Ambient Works 85-92",
+ "/home/user/Music/Aphex Twin - Selected Ambient Works 85-92",
+ "/home/user/Music/Aphex Twin - Selected Ambient Works 85-92",
+ ),
+ # Test artist - album (version) format
+ (
+ "Selected Ambient Works 85-92",
+ "/home/user/Music/Aphex Twin - Selected Ambient Works 85-92 (Remastered)",
+ "/home/user/Music/Aphex Twin - Selected Ambient Works 85-92 (Remastered)",
+ ),
+ # Test artist - album (version) format
+ (
+ "Selected Ambient Works 85-92",
+ "/home/user/Music/Aphex Twin - Selected Ambient Works 85-92 (Remastered) - WEB",
+ "/home/user/Music/Aphex Twin - Selected Ambient Works 85-92 (Remastered) - WEB",
+ ),
+ # Test album (version) format
+ (
+ "Selected Ambient Works 85-92",
+ "/home/user/Music/Aphex Twin/Selected Ambient Works 85-92 (Remastered)",
+ "/home/user/Music/Aphex Twin/Selected Ambient Works 85-92 (Remastered)",
+ ),
+ # Test album name in dir
+ (
+ "Selected Ambient Works 85-92",
+ "/home/user/Music/RandomDirWithSelected Ambient Works 85-92InIt",
+ "/home/user/Music/RandomDirWithSelected Ambient Works 85-92InIt",
+ ),
+ # Test no match
+ (
+ "NonExistentAlbumName",
+ "/home/user/Music/Aphex Twin/Selected Ambient Works 85-92",
+ None,
+ ),
+ # Test empty album name
+ ("", "/home/user/Music/Aphex Twin/Selected Ambient Works 85-92", None),
+ # Test empty track dir
+ ("Selected Ambient Works 85-92", "", None),
+ ],
+)
+def test_get_album_dir(album_name: str, track_dir: str, expected: str) -> None:
+ """Test the extraction of an album dir."""
+ assert helpers.get_album_dir(track_dir, album_name) == expected