import json from pathlib import Path from midnight_static.gradio_app import ( generate_broadcast, load_showcase_for_ui, on_air_start, radio_shell_for_genre, ) def test_generate_broadcast_returns_audio_and_script(tmp_path: Path): audio_path, script_json = generate_broadcast( "a motel room where the wallpaper whispers", mode="placeholder", writer="fixture", output_dir=str(tmp_path), ) payload = json.loads(script_json) assert Path(audio_path).exists() assert payload["title"].startswith("The Case of") assert payload["genre"] == "weird" def test_generate_broadcast_uses_selected_genre(tmp_path: Path): audio_path, script_json = generate_broadcast( "a saloon piano that predicts tomorrow", mode="placeholder", writer="fixture", genre="western", output_dir=str(tmp_path), ) payload = json.loads(script_json) assert Path(audio_path).exists() assert payload["genre"] == "western" assert payload["music"]["genre"] == "western" def test_radio_shell_tracks_genre_and_showcase(): shell = radio_shell_for_genre("comedy") _, _, showcase_genre, showcase_shell, showcase_status = load_showcase_for_ui( "The Case of A Wedding Where Every Guest Recognizes" ) assert '--ms-needle-left: 75%' in shell assert "LAFF" in shell assert showcase_genre == "comedy" assert "LAFF" in showcase_shell assert "RERUN READY" in showcase_status def test_on_air_start_returns_scanning_state(): shell, status = on_air_start("noir") assert "ms-radio is-scanning" in shell assert "87.9 WRITING" in shell assert "WRITING ... CASTING ... FOLEY ... SCORING ..." in status assert "is-live" in status