6f1a71e8bd
Deploy / Build Production Runtime Images (push) Successful in 9m5s
Deploy / Deploy Production (push) Successful in 46s
Deploy / Production Browser E2E (push) Failing after 3m39s
CI/CD Pipeline / Validate Code Quality And Tests (push) Has been cancelled
Deploy / Deploy Staging (push) Has been skipped
53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
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) == []
|