from pathlib import Path from fastapi.testclient import TestClient from app.db import Database from app.main import app from app.seed import seed_demo_workflow, seed_nodes WORKSPACE = Path(__file__).resolve().parent.parent.parent def test_seed_nodes_and_demo_workflow(tmp_path) -> None: db = Database(tmp_path / "wov.db") seed_nodes(db, WORKSPACE) node_ids = [node.id for node in db.list_nodes()] assert "echo" in node_ids seed_demo_workflow(db) workflow = db.get_workflow("demo") assert workflow is not None assert workflow["published"] == 1 latest = db.get_latest_workflow_version("demo") assert latest["definition"]["name"] == "视频字幕生成" seed_demo_workflow(db) assert len(db.list_workflow_versions("demo")) == 1 empty_workspace = tmp_path / "empty" (empty_workspace / "wov-node-empty").mkdir(parents=True) seed_nodes(db, empty_workspace) def test_lifespan_with_seed_and_scheduler(monkeypatch) -> None: monkeypatch.setenv("WOV_AUTO_SEED", "1") monkeypatch.setenv("WOV_SCHEDULER_ENABLED", "1") with TestClient(app) as client: apps = client.get("/api/apps") assert apps.status_code == 200 assert any(item["id"] == "demo" for item in apps.json())