57 lines
2.0 KiB
Python
57 lines
2.0 KiB
Python
from __future__ import annotations
|
|
|
|
import unittest
|
|
|
|
from sqlalchemy import BigInteger, create_engine
|
|
from sqlalchemy.ext.compiler import compiles
|
|
from sqlalchemy.orm import Session, sessionmaker
|
|
|
|
|
|
@compiles(BigInteger, "sqlite")
|
|
def _compile_bigint_for_sqlite(type_, compiler, **kw) -> str:
|
|
_ = type_, compiler, kw
|
|
return "INTEGER"
|
|
|
|
|
|
import app.models.master_data # noqa: E402,F401
|
|
import app.models.miniapp # noqa: E402,F401
|
|
import app.models.operations # noqa: E402,F401
|
|
import app.models.org # noqa: E402,F401
|
|
import app.models.planning # noqa: E402,F401
|
|
import app.models.sales # noqa: E402,F401
|
|
from app.models.base import Base # noqa: E402
|
|
from app.services.system_config import ( # noqa: E402
|
|
get_smart_operation_report_enabled,
|
|
normalize_enabled_config_value,
|
|
upsert_smart_operation_report_config,
|
|
)
|
|
|
|
|
|
class SmartOperationReportConfigTest(unittest.TestCase):
|
|
def setUp(self) -> None:
|
|
engine = create_engine("sqlite+pysqlite:///:memory:", future=True)
|
|
Base.metadata.create_all(engine)
|
|
self.SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False, future=True)
|
|
self.db: Session = self.SessionLocal()
|
|
|
|
def tearDown(self) -> None:
|
|
self.db.close()
|
|
|
|
def test_defaults_enabled(self) -> None:
|
|
self.assertTrue(get_smart_operation_report_enabled(self.db))
|
|
|
|
def test_normalizes_chinese_values(self) -> None:
|
|
self.assertEqual(normalize_enabled_config_value("开启"), "开启")
|
|
self.assertEqual(normalize_enabled_config_value("关闭"), "关闭")
|
|
self.assertEqual(normalize_enabled_config_value(True), "开启")
|
|
self.assertEqual(normalize_enabled_config_value(False), "关闭")
|
|
|
|
def test_upsert_changes_enabled_state(self) -> None:
|
|
upsert_smart_operation_report_config(self.db, enabled=False, updated_by=1, remark="未购买小程序")
|
|
self.db.commit()
|
|
self.assertFalse(get_smart_operation_report_enabled(self.db))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|