import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "apps" / "api")) from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from packages.adapters.sqlalchemy_impl.models import Base from packages.adapters.sqlalchemy_impl.project_title_repository import SQLAlchemyProjectTitleRepository def _repository(): engine = create_engine("sqlite:///:memory:") Base.metadata.create_all(engine) session = sessionmaker(bind=engine)() return SQLAlchemyProjectTitleRepository(session) def test_project_title_repository_creates_and_lists_titles(): repository = _repository() title = repository.create( workspace_id="workspace-1", project_id="project-1", text=" 3 分钟看懂产品亮点 ", category="marketing", favorite=True, created_by_user_id="user-1", ) assert title.text == "3 分钟看懂产品亮点" assert title.category == "marketing" assert title.favorite is True assert title.usage_count == 0 assert title.is_active is True assert repository.list_by_project("project-1") == [title] def test_project_title_repository_filters_inactive_titles(): repository = _repository() title = repository.create( workspace_id="workspace-1", project_id="project-1", text="停用标题", category="default", created_by_user_id="user-1", ) title.is_active = False repository.update(title) assert repository.list_by_project("project-1", active_only=True) == []