"""Tests for spens.config."""

import json

import pytest
from spens.config import CONFIG_FILENAME, load_config


def test_returns_none_when_no_config_file(tmp_path) -> None:
    assert load_config(tmp_path) is None


def test_loads_config_file(tmp_path) -> None:
    data = {"env": ["OPENAI_API_KEY"], "addition_capture_urls": ["*example.com*"]}
    (tmp_path / CONFIG_FILENAME).write_text(json.dumps(data), encoding="utf-8")
    assert load_config(tmp_path) == data


def test_accepts_string_workspace(tmp_path) -> None:
    data = {"env": []}
    (tmp_path / CONFIG_FILENAME).write_text(json.dumps(data), encoding="utf-8")
    assert load_config(str(tmp_path)) == data


def test_propagates_invalid_json(tmp_path) -> None:
    (tmp_path / CONFIG_FILENAME).write_text("{not json", encoding="utf-8")
    with pytest.raises(json.JSONDecodeError):
        load_config(tmp_path)
