import pytest from json import loads import os from solo_tool.session_manager import loadSession, saveSession from fixtures import songPool, soloTool, mockPlayer, testSongs @pytest.fixture def testSessionFile(tmp_path, testSongs): contents = """[ { "path" : "test.flac", "key_points" : [] }, { "path" : "test.mp3", "key_points" : [0.1, 0.3] } ]""" basePath = tmp_path / "sessions" sessionFile = basePath / "test-session.json" os.mkdir(basePath) with open(sessionFile, "w") as f: f.write(contents) return sessionFile def test_loadSession(songPool, testSessionFile, mockPlayer): soloTool = loadSession(testSessionFile, songPool, player=mockPlayer) assert soloTool.songs == ["test.flac", "test.mp3"] soloTool.song = 0 assert soloTool.keyPoints == [] soloTool.song = 1 assert soloTool.keyPoints == [0.1, 0.3] def test_saveSession(soloTool, testSessionFile, tmp_path): soloTool.addSong("test.flac") soloTool.addSong("test.mp3") soloTool.song = 1 soloTool.keyPoints = [0.1, 0.3] testFile = tmp_path / "test_session_saved.json" saveSession(soloTool, testFile) with open(testFile, "r") as f: savedSession = loads(f.read()) with open(testSessionFile, "r") as f: testSession = loads(f.read()) assert savedSession == testSession def test_loadAndSaveEmptySession(songPool, soloTool, tmp_path): emptyFile = tmp_path / "empty_session.json" saveSession(soloTool, emptyFile) reloadedTool = loadSession(emptyFile, songPool) assert reloadedTool.songs == []