import os
import pytest
import json
import tomli_w
from pathlib import Path
from src import paths
from src import project_manager

def test_get_conductor_dir_default():
 paths.reset_resolved()
 # Should return absolute path to "conductor" in project root
 expected = Path(__file__).resolve().parent.parent / "conductor"
 assert paths.get_conductor_dir() == expected

def test_get_conductor_dir_project_specific_with_toml(tmp_path):
 paths.reset_resolved()
 project_root = tmp_path / "my_project"
 project_root.mkdir()
 
 # Create manual_slop.toml with custom conductor dir
 toml_path = project_root / "manual_slop.toml"
 config = {
  "conductor": {
   "dir": "custom_tracks"
  }
 }
 with open(toml_path, "wb") as f:
  f.write(tomli_w.dumps(config).encode())
  
 res = paths.get_conductor_dir(project_path=str(project_root))
 assert res == project_root / "custom_tracks"

def test_get_all_tracks_project_specific(tmp_path):
 paths.reset_resolved()
 project_root = tmp_path / "my_project"
 project_root.mkdir()
 
 # Custom conductor dir
 custom_dir = project_root / "my_conductor"
 custom_dir.mkdir()
 tracks_dir = custom_dir / "tracks"
 tracks_dir.mkdir()
 
 # Create a dummy track
 track_dir = tracks_dir / "test_track_20260312"
 track_dir.mkdir()
 with open(track_dir / "metadata.json", "w") as f:
  json.dump({"id": "test_track", "title": "Test Track"}, f)
  
 # Setup manual_slop.toml
 toml_path = project_root / "manual_slop.toml"
 config = {"conductor": {"dir": "my_conductor"}}
 with open(toml_path, "wb") as f:
  f.write(tomli_w.dumps(config).encode())
  
 # project_manager.get_all_tracks(base_dir) should now find it
 tracks = project_manager.get_all_tracks(str(project_root))
 assert len(tracks) == 1
 assert tracks[0]["title"] == "Test Track"
