# SPDX-License-Identifier: AGPL-3.0-only # Copyright (c) 2026 sol pbc import json from pathlib import Path import pytest from solstone.convey import create_app @pytest.fixture(autouse=True) def _temp_journal(monkeypatch, tmp_path): journal_root = tmp_path / "journal" journal_root.mkdir() config_dir = journal_root / "config" config_dir.mkdir() (config_dir / "journal.json").write_text( json.dumps( { "setup": {"completed_at": 1700000000000}, } ), encoding="utf-8", ) monkeypatch.setenv("SOLSTONE_JOURNAL", str(journal_root)) return journal_root @pytest.fixture def client(_temp_journal): app = create_app(str(_temp_journal)) return app.test_client() def _write_import_detail( journal_root: Path, timestamp: str, *, imported_json: dict | None = None, import_json: dict | None = None, ) -> Path: import_dir = journal_root / "imports" / timestamp import_dir.mkdir(parents=True) if import_json is not None: (import_dir / "import.json").write_text( json.dumps(import_json), encoding="utf-8", ) if imported_json is not None: (import_dir / "imported.json").write_text( json.dumps(imported_json), encoding="utf-8", ) return import_dir def test_import_sources_include_journal_archive(client): response = client.get("/app/import/api/sources") assert response.status_code == 200 data = response.get_json() assert data["total"] == len(data["items"]) journal_source = next( item for item in data["items"] if item["name"] == "journal_archive" ) assert journal_source["display_name"] == "journal" assert "emoji" not in journal_source assert journal_source["icon"] == "book" assert "