Web frontend
This commit is contained in:
@@ -7,7 +7,7 @@ from typing import Any
|
||||
import pytest
|
||||
|
||||
from musicmouse.color import ColorRGBW, parse_color
|
||||
from musicmouse.config import ConfigError, build_playlists, load_config
|
||||
from musicmouse.config import ConfigError, load_config
|
||||
from tests.conftest import VALID_CONFIG, write_config
|
||||
|
||||
|
||||
@@ -27,57 +27,29 @@ def test_loads_valid_config(config_dir: Path) -> None:
|
||||
assert config.general.max_volume == 60
|
||||
|
||||
|
||||
def test_figure_folder_resolves_relative_to_the_config_file(config_dir: Path) -> None:
|
||||
def test_library_root_resolves_relative_to_the_config_file(config_dir: Path) -> None:
|
||||
config = load_config(write_config(config_dir, VALID_CONFIG))
|
||||
assert config.general.figure_folder == (config_dir / "music").resolve()
|
||||
assert config.general.library.root == (config_dir / "music").resolve()
|
||||
assert config.general.library.figure_folder == (config_dir / "music" / "Figuren").resolve()
|
||||
assert config.folder_for("fuchs").name == "fuchs"
|
||||
|
||||
|
||||
def test_tag_map_and_playlists(config_dir: Path) -> None:
|
||||
def test_tag_map(config_dir: Path) -> None:
|
||||
config = load_config(write_config(config_dir, VALID_CONFIG))
|
||||
|
||||
assert config.tag_map == {
|
||||
bytes.fromhex("04a1b2c3d4"): "fuchs",
|
||||
bytes.fromhex("04b2c3d4e5"): "eule",
|
||||
}
|
||||
playlists = build_playlists(config)
|
||||
assert [t.path.name for t in playlists["fuchs"].tracks] == [
|
||||
"00 - track.mp3",
|
||||
"01 - track.mp3",
|
||||
"02 - track.mp3",
|
||||
]
|
||||
assert len(playlists["eule"]) == 2
|
||||
|
||||
|
||||
def test_playlist_is_alphabetical_regardless_of_creation_order(config_dir: Path) -> None:
|
||||
folder = config_dir / "music" / "fuchs"
|
||||
for name in ("zz last.mp3", "aa first.mp3"):
|
||||
(folder / name).write_bytes(b"")
|
||||
|
||||
playlists = build_playlists(load_config(write_config(config_dir, VALID_CONFIG)))
|
||||
names = [t.path.name for t in playlists["fuchs"].tracks]
|
||||
assert names == sorted(names)
|
||||
assert names[0] == "00 - track.mp3"
|
||||
|
||||
|
||||
def test_non_audio_files_are_ignored(config_dir: Path) -> None:
|
||||
(config_dir / "music" / "eule" / "cover.jpg").write_bytes(b"")
|
||||
(config_dir / "music" / "eule" / "notes.txt").write_bytes(b"")
|
||||
|
||||
playlists = build_playlists(load_config(write_config(config_dir, VALID_CONFIG)))
|
||||
assert len(playlists["eule"]) == 2
|
||||
|
||||
|
||||
def test_missing_figure_folder_warns_but_does_not_fail(
|
||||
config_dir: Path, caplog: pytest.LogCaptureFixture
|
||||
) -> None:
|
||||
data = copy.deepcopy(VALID_CONFIG)
|
||||
data["figures"]["neu"] = {"id": "0400000001", "colors": ["#111111"] * 4}
|
||||
def test_web_section_is_optional(config_dir: Path) -> None:
|
||||
assert load_config(write_config(config_dir, VALID_CONFIG)).general.web is None
|
||||
|
||||
data = _config(web={"port": 9000, "static_dir": "dist"})
|
||||
config = load_config(write_config(config_dir, data))
|
||||
playlists = build_playlists(config)
|
||||
|
||||
assert len(playlists["neu"]) == 0
|
||||
assert "no media folder" in caplog.text
|
||||
assert config.general.web is not None
|
||||
assert config.general.web.port == 9000
|
||||
assert config.general.web.static_dir == (config_dir / "dist").resolve()
|
||||
|
||||
|
||||
# --------------------------------------------------------------------- error paths
|
||||
@@ -147,9 +119,9 @@ def test_initial_volume_must_lie_in_range(config_dir: Path) -> None:
|
||||
assert "must lie between" in message
|
||||
|
||||
|
||||
def test_missing_figure_folder_is_an_error(config_dir: Path) -> None:
|
||||
message = _error(config_dir, _config(figure_folder="does-not-exist"))
|
||||
assert "general.figure_folder" in message
|
||||
def test_missing_library_root_is_an_error(config_dir: Path) -> None:
|
||||
message = _error(config_dir, _config(library={"root": "does-not-exist"}))
|
||||
assert "general.library.root" in message
|
||||
assert "no such directory" in message
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user