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", ]