From d903089f1f0266439d1e0afa976decc821befa62 Mon Sep 17 00:00:00 2001 From: blissful Date: Thu, 2 Nov 2023 23:13:47 -0400 Subject: [PATCH] update releases dump output to be reasonable --- rose/releases.py | 11 +------- rose/releases_test.py | 59 ++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 56 insertions(+), 14 deletions(-) diff --git a/rose/releases.py b/rose/releases.py index 58f062a..34a4b7f 100644 --- a/rose/releases.py +++ b/rose/releases.py @@ -9,7 +9,6 @@ import shutil from dataclasses import asdict, dataclass from pathlib import Path -from typing import Any import click import tomli_w @@ -47,16 +46,8 @@ class UnknownArtistRoleError(RoseError): pass -class CustomJSONEncoder(json.JSONEncoder): - def default(self, obj: Any) -> Any: - if isinstance(obj, Path): - return str(obj) - return super().default(obj) - - def dump_releases(c: Config) -> str: - releases = [asdict(r) for r in list_releases(c)] - return json.dumps(releases, cls=CustomJSONEncoder) + return json.dumps([r.dump() for r in list_releases(c)]) def delete_release(c: Config, release_id_or_virtual_dirname: str) -> None: diff --git a/rose/releases_test.py b/rose/releases_test.py index 2df047e..c6c7ee0 100644 --- a/rose/releases_test.py +++ b/rose/releases_test.py @@ -1,3 +1,4 @@ +import json import shutil from pathlib import Path from typing import Any @@ -22,10 +23,6 @@ ) -def test_dump_releases(config: Config) -> None: - assert dump_releases(config) == "[]" - - def test_delete_release(config: Config) -> None: shutil.copytree(TEST_RELEASE_1, config.music_source_dir / TEST_RELEASE_1.name) update_cache(config) @@ -240,6 +237,60 @@ def test_extract_single_release(config: Config) -> None: assert af.album_artists == af.artists +@pytest.mark.usefixtures("seeded_cache") +def test_dump_releases(config: Config) -> None: + assert json.loads(dump_releases(config)) == [ + { + "added_at": "0000-01-01T00:00:00+00:00", + "artists": [ + {"alias": False, "name": "Bass Man", "role": "main"}, + {"alias": False, "name": "Techno Man", "role": "main"}, + ], + "cover_image_path": None, + "formatted_artists": "Techno Man;Bass Man", + "genres": ["Deep House", "Techno"], + "id": "r1", + "labels": ["Silk Music"], + "new": False, + "releasetype": "album", + "source_path": f"{config.music_source_dir}/r1", + "title": "Release 1", + "year": 2023, + }, + { + "added_at": "0000-01-01T00:00:00+00:00", + "artists": [ + {"alias": False, "name": "Conductor Woman", "role": "guest"}, + {"alias": False, "name": "Violin Woman", "role": "main"}, + ], + "cover_image_path": f"{config.music_source_dir}/r2/cover.jpg", + "formatted_artists": "Violin Woman feat. Conductor Woman", + "genres": ["Classical"], + "id": "r2", + "labels": ["Native State"], + "new": False, + "releasetype": "album", + "source_path": f"{config.music_source_dir}/r2", + "title": "Release 2", + "year": 2021, + }, + { + "added_at": "0000-01-01T00:00:00+00:00", + "artists": [], + "cover_image_path": None, + "formatted_artists": "", + "genres": [], + "id": "r3", + "labels": [], + "new": True, + "releasetype": "album", + "source_path": f"{config.music_source_dir}/r3", + "title": "Release 3", + "year": 2021, + }, + ] + + def test_resolve_release_ids(config: Config) -> None: shutil.copytree(TEST_RELEASE_1, config.music_source_dir / TEST_RELEASE_1.name) update_cache(config)