baodan/tests/ppt_admin_list_test.py
2026-08-02 19:59:10 +08:00

80 lines
2.5 KiB
Python

import sys
from pathlib import Path
from flask import Flask
sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "api"))
def _app():
from insurance.db.database import db
import insurance.models # noqa: F401
app = Flask(__name__)
app.config.update(
SQLALCHEMY_DATABASE_URI="sqlite:///:memory:",
SQLALCHEMY_TRACK_MODIFICATIONS=False,
)
db.init_app(app)
return app
def test_list_companies_uses_company_ordering_only():
from insurance.admin.ppt_admin_service import PptAdminService
from insurance.db.compat import db
from insurance.models.ppt_config import PptCompany
app = _app()
with app.app_context():
db.create_all()
db.session.add_all([
PptCompany(id="beta", display_name="Beta", sort_order=2),
PptCompany(id="zeta", display_name="Zeta", sort_order=1),
PptCompany(id="alpha", display_name="Alpha", sort_order=1),
])
db.session.commit()
result = PptAdminService().list_companies({"page": 1, "page_size": 20})
assert result["code"] == 0
assert [item["id"] for item in result["data"]["items"]] == [
"alpha", "zeta", "beta",
]
def test_list_templates_has_deterministic_ordering():
from insurance.admin.ppt_admin_service import PptAdminService
from insurance.db.compat import db
from insurance.models.ppt_config import PptTemplate
app = _app()
with app.app_context():
db.create_all()
db.session.add_all([
PptTemplate(
id="savings-a-v1", plan_type="savings", scenario_tag="a",
asset_version=1, style_preset="broker",
),
PptTemplate(
id="savings-b-v5", plan_type="savings", scenario_tag="b",
asset_version=5, style_preset="broker",
),
PptTemplate(
id="ci-z-v1", plan_type="ci", scenario_tag="z",
asset_version=1, style_preset="broker",
),
PptTemplate(
id="savings-a-v2", plan_type="savings", scenario_tag="a",
asset_version=2, style_preset="broker",
),
])
db.session.commit()
result = PptAdminService().list_templates({"page": 1, "page_size": 20})
assert result["code"] == 0
assert [item["id"] for item in result["data"]["items"]] == [
"ci-z-v1", "savings-a-v2", "savings-a-v1", "savings-b-v5",
]