From fd05e8a3a53afae850f539a348e209c4770ec430 Mon Sep 17 00:00:00 2001
From: Eddy Pedroni <epedroni@pm.me>
Date: Sun, 23 Feb 2025 09:29:03 +0100
Subject: Session manager tests passing

---
 solo-tool-project/src/solo_tool/session_manager.py | 35 +++++++++++-----------
 solo-tool-project/src/solo_tool/solo_tool.py       |  1 -
 solo-tool-project/test/session_manager_unittest.py |  9 +++---
 solo-tool-project/test/test_session.json           |  4 +--
 4 files changed, 24 insertions(+), 25 deletions(-)

diff --git a/solo-tool-project/src/solo_tool/session_manager.py b/solo-tool-project/src/solo_tool/session_manager.py
index a4dabc0..9744b57 100644
--- a/solo-tool-project/src/solo_tool/session_manager.py
+++ b/solo-tool-project/src/solo_tool/session_manager.py
@@ -1,29 +1,30 @@
 import json
+from . import SoloTool
 
-def loadSession(file, songList, abController):
-    jsonStr = file.read()
-    session = json.loads(jsonStr)
+def loadSession(file: str) -> SoloTool:
+    with open(file, "r") as f:
+        session = json.load(f)
 
-    songList.clear()
-    abController.clear()
+    st = SoloTool()
 
-    for entry in session:
+    for i, entry in enumerate(session):
         songPath = entry["path"]
-        abLimits = entry["ab_limits"]
-        songList.append(songPath)
+        keyPoints = entry["key_points"]
 
-        if abLimits is not None:
-            for l in abLimits:
-                abController.storeLimits(l[0], l[1], songPath)
+        st.addSong(songPath)
+        st._keyPoints[i] = keyPoints
+
+    return st
         
-def saveSession(file, songList, abController):
-    session = list()
+def saveSession(soloTool: SoloTool, file: str) -> None:
+    session = []
 
-    for s in songList:
+    for i, song in enumerate(soloTool.songs):
         entry = {
-            "path": s,
-            "ab_limits" : abController.getStoredLimits(s)
+            "path": song,
+            "key_points" : soloTool._keyPoints[i]
         }
         session.append(entry)
 
-    file.write(json.dumps(session))
+    with open(file, "w") as f:
+        json.dump(session, f)
diff --git a/solo-tool-project/src/solo_tool/solo_tool.py b/solo-tool-project/src/solo_tool/solo_tool.py
index 97c3495..147a7b9 100644
--- a/solo-tool-project/src/solo_tool/solo_tool.py
+++ b/solo-tool-project/src/solo_tool/solo_tool.py
@@ -1,6 +1,5 @@
 import os
 
-from .session_manager import loadSession, saveSession
 from .notifier import Notifier
 from .player_vlc import Player
 
diff --git a/solo-tool-project/test/session_manager_unittest.py b/solo-tool-project/test/session_manager_unittest.py
index 0edc252..8658032 100644
--- a/solo-tool-project/test/session_manager_unittest.py
+++ b/solo-tool-project/test/session_manager_unittest.py
@@ -3,8 +3,6 @@ from json import loads
 import pathlib
 import shutil
 
-pytestmark = pytest.mark.skip(reason="not yet implemented")
-
 from solo_tool.session_manager import loadSession, saveSession
 from solo_tool.solo_tool import SoloTool
 
@@ -25,16 +23,17 @@ def test_loadSession(prepared_tmp_path):
     assert soloTool.songs == ["test.flac", "test.mp3"]
 
     soloTool.song = 0
-    assert soloTool.keyPositions == []
+    assert soloTool.keyPoints == []
 
     soloTool.song = 1
-    assert soloTool.keyPositions == [0.1, 0.3]
+    assert soloTool.keyPoints == [0.1, 0.3]
 
 def test_saveSession(prepared_tmp_path):
     soloTool = SoloTool()
     soloTool.addSong("test.flac")
     soloTool.addSong("test.mp3")
-    soloTool.keyPositions = [0.1, 0.3]
+    soloTool.song = 1
+    soloTool.keyPoints = [0.1, 0.3]
 
     testFile = prepared_tmp_path / "test_session_saved.json"
     saveSession(soloTool, testFile)
diff --git a/solo-tool-project/test/test_session.json b/solo-tool-project/test/test_session.json
index aed1e11..49c2d42 100644
--- a/solo-tool-project/test/test_session.json
+++ b/solo-tool-project/test/test_session.json
@@ -1,10 +1,10 @@
 [
     {
         "path" : "test.flac",
-        "key_positions" : null
+        "key_points" : []
     },
     {
         "path" : "test.mp3",
-        "key_positions" : [0.1, 0.3]
+        "key_points" : [0.1, 0.3]
     }
 ]
-- 
cgit v1.2.3