mirror of
https://github.com/got-feedBack/feedBack.git
synced 2026-08-14 12:47:10 +00:00
Clean release snapshot
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
"""Unit tests for lib/songmeta.py — metadata file-persistence helpers."""
|
||||
from __future__ import annotations
|
||||
|
||||
# songmeta lives in lib/ which is on PYTHONPATH via conftest / pyproject
|
||||
from songmeta import (
|
||||
_apply_to_sloppak_manifest,
|
||||
_coerce_year,
|
||||
)
|
||||
|
||||
|
||||
class TestCoerceYear:
|
||||
def test_int_passthrough(self):
|
||||
assert _coerce_year(2024) == 2024
|
||||
|
||||
def test_string_digit(self):
|
||||
assert _coerce_year("2024") == 2024
|
||||
|
||||
def test_empty_string_clears(self):
|
||||
# A user clearing the year field sends "" — must map to 0 so the
|
||||
# scanner reads it back as "" (str(0 or "") == "").
|
||||
assert _coerce_year("") == 0
|
||||
|
||||
def test_none_clears(self):
|
||||
assert _coerce_year(None) == 0
|
||||
|
||||
def test_non_numeric_string_clears(self):
|
||||
assert _coerce_year("unknown") == 0
|
||||
|
||||
def test_zero_passthrough(self):
|
||||
assert _coerce_year(0) == 0
|
||||
|
||||
|
||||
class TestApplyToSloppakManifest:
|
||||
def test_set_title(self):
|
||||
manifest = {"title": "Old Title", "artist": "A"}
|
||||
dirty = _apply_to_sloppak_manifest(manifest, {"title": "New Title"})
|
||||
assert dirty
|
||||
assert manifest["title"] == "New Title"
|
||||
assert manifest["artist"] == "A" # untouched
|
||||
|
||||
def test_set_year(self):
|
||||
manifest = {"year": 2000}
|
||||
dirty = _apply_to_sloppak_manifest(manifest, {"year": "2024"})
|
||||
assert dirty
|
||||
assert manifest["year"] == 2024
|
||||
|
||||
def test_clear_year(self):
|
||||
"""Clearing year (empty string) must write 0, not be silently skipped."""
|
||||
manifest = {"year": 2020}
|
||||
dirty = _apply_to_sloppak_manifest(manifest, {"year": ""})
|
||||
assert dirty, "clearing year should mark manifest dirty"
|
||||
assert manifest["year"] == 0
|
||||
|
||||
def test_no_year_key_leaves_existing(self):
|
||||
"""If 'year' is not in fields at all, the existing value is preserved."""
|
||||
manifest = {"year": 2020}
|
||||
dirty = _apply_to_sloppak_manifest(manifest, {"title": "T"})
|
||||
assert dirty
|
||||
assert manifest["year"] == 2020 # untouched
|
||||
|
||||
def test_empty_fields(self):
|
||||
manifest = {"title": "T"}
|
||||
dirty = _apply_to_sloppak_manifest(manifest, {})
|
||||
assert not dirty
|
||||
Reference in New Issue
Block a user