feat: monitor discovery phase + MonitorConfig
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
from lyra_worker.adapters.fakes import FakeMbBrowser
|
||||
from lyra_worker.browser import ReleaseGroupInfo
|
||||
from lyra_worker.monitor import MonitorConfig, discover
|
||||
from tests.conftest import insert_watched_artist
|
||||
|
||||
|
||||
def _releases():
|
||||
return [
|
||||
ReleaseGroupInfo("rg-old", "Old Album", "Album", (), "2001-01-01"),
|
||||
ReleaseGroupInfo("rg-new", "New Album", "Album", (), "2999-01-01"),
|
||||
]
|
||||
|
||||
|
||||
def _monitored_map(conn):
|
||||
with conn.cursor() as cur:
|
||||
cur.execute('SELECT "rgMbid", monitored FROM "MonitoredRelease"')
|
||||
return dict(cur.fetchall())
|
||||
|
||||
|
||||
def test_discover_auto_monitor_future_only_flags_new(conn):
|
||||
aid = insert_watched_artist(conn, mbid="a1", name="John Mayer", auto_monitor_future=True)
|
||||
browser = FakeMbBrowser(releases={"a1": _releases()})
|
||||
inserted = discover(conn, browser, MonitorConfig(enabled=True))
|
||||
assert inserted == 2
|
||||
assert _monitored_map(conn) == {"rg-old": False, "rg-new": True} # only the future one is monitored
|
||||
|
||||
|
||||
def test_discover_default_off_monitors_nothing(conn):
|
||||
insert_watched_artist(conn, mbid="a1", name="X", auto_monitor_future=False)
|
||||
browser = FakeMbBrowser(releases={"a1": _releases()})
|
||||
discover(conn, browser, MonitorConfig(enabled=True))
|
||||
assert _monitored_map(conn) == {"rg-old": False, "rg-new": False}
|
||||
|
||||
|
||||
def test_discover_is_idempotent_and_sets_last_polled(conn):
|
||||
insert_watched_artist(conn, mbid="a1", name="X", auto_monitor_future=True)
|
||||
browser = FakeMbBrowser(releases={"a1": _releases()})
|
||||
assert discover(conn, browser, MonitorConfig(enabled=True)) == 2
|
||||
assert discover(conn, browser, MonitorConfig(enabled=True)) == 0 # lastPolledAt now recent; not re-polled
|
||||
with conn.cursor() as cur:
|
||||
cur.execute('SELECT "lastPolledAt" IS NOT NULL FROM "WatchedArtist" WHERE mbid = %s', ("a1",))
|
||||
assert cur.fetchone()[0] is True
|
||||
|
||||
|
||||
def test_config_from_config_parses_strings():
|
||||
cfg = MonitorConfig.from_config({"monitor.enabled": "true", "monitor.qualityCutoff": "3"})
|
||||
assert cfg.enabled is True and cfg.quality_cutoff == 3
|
||||
assert MonitorConfig.from_config({}).enabled is False
|
||||
Reference in New Issue
Block a user