获取和注册一体化修正

This commit is contained in:
UnCLAS-Prommer
2026-02-18 21:34:56 +08:00
parent ccd1be7bed
commit 537b24c24e
3 changed files with 179 additions and 12 deletions

View File

@@ -58,6 +58,7 @@ def _install_stub_modules(monkeypatch):
query_count: int = 0
register_time: object | None = None
image_format: str | None = None
image_bytes: bytes | None = None
@staticmethod
def from_db_instance(_record):
@@ -128,10 +129,17 @@ def _install_stub_modules(monkeypatch):
def flush(self):
pass
def commit(self):
pass
def get_db_session():
return _DummySession()
def get_db_session_manual():
return _DummySession()
db_mod.get_db_session = get_db_session
db_mod.get_db_session_manual = get_db_session_manual
# src.common.utils.utils_image
image_utils_mod = _stub_module("src.common.utils.utils_image")
@@ -236,6 +244,15 @@ def import_emoji_manager_new(monkeypatch):
module = importlib.util.module_from_spec(spec)
monkeypatch.setitem(sys.modules, "emoji_manager_new", module)
spec.loader.exec_module(module)
class _Select:
def filter_by(self, **kwargs):
return self
def limit(self, n):
return self
module.select = lambda _model: _Select()
return module
@@ -763,6 +780,12 @@ def test_register_emoji_to_db_db_error(monkeypatch):
def flush(self):
pass
def exec(self, _statement):
return self
def first(self):
return None
def _get_db_session():
return _Session()
@@ -821,6 +844,12 @@ def test_register_emoji_to_db_success(monkeypatch, tmp_path):
def flush(self):
pass
def exec(self, _statement):
return self
def first(self):
return None
def _get_db_session():
return _Session()
@@ -858,6 +887,7 @@ def test_delete_emoji_file_missing_and_db_record_missing(monkeypatch):
class _Select:
def filter_by(self, **_kwargs):
return self
def limit(self, _num):
return self
@@ -948,7 +978,7 @@ def test_delete_emoji_db_error_file_still_exists(monkeypatch):
class _Select:
def filter_by(self, **_kwargs):
return self
def limit(self, _num):
return self
@@ -1006,6 +1036,7 @@ def test_delete_emoji_success(monkeypatch):
class _Select:
def filter_by(self, **_kwargs):
return self
def limit(self, _num):
return self
@@ -1056,6 +1087,7 @@ def test_delete_emoji_success(monkeypatch):
assert any("成功删除表情包文件" in m for m in _messages(logger.info_calls))
assert any("成功修改数据库中的表情包记录" in m for m in _messages(logger.info_calls))
def test_delete_emoji_no_desc_deletes_record(monkeypatch):
emoji_manager_new = import_emoji_manager_new(monkeypatch)
logger = emoji_manager_new.logger
@@ -1133,6 +1165,7 @@ def test_update_emoji_usage_success(monkeypatch):
class _Select:
def filter_by(self, **_kwargs):
return self
def limit(self, _num):
return self
@@ -1143,6 +1176,7 @@ def test_update_emoji_usage_success(monkeypatch):
def __init__(self):
self.query_count = 2
self.last_used_time = None
record = _Record()
class _Result:
@@ -1237,6 +1271,7 @@ def test_update_emoji_usage_execute_error(monkeypatch):
class _Select:
def filter_by(self, **_kwargs):
return self
def limit(self, _num):
return self
@@ -2254,6 +2289,38 @@ async def test_register_emoji_by_filename_hash_format_failed(monkeypatch, tmp_pa
async def calculate_hash_format(self):
return False
class _Session:
def __enter__(self):
return self
def __exit__(self, exc_type, exc, tb):
return False
def exec(self, _statement):
return self
def first(self):
return None
class _Select:
def __init__(self) -> None:
pass
def filter_by(self, **_kwargs):
return self
def limit(self, _num):
return self
def _get_db_session_manual():
return _Session()
def _get_db_session():
return _Session()
monkeypatch.setattr(emoji_manager_new, "get_db_session_manual", _get_db_session_manual)
monkeypatch.setattr(emoji_manager_new, "get_db_session", _get_db_session)
monkeypatch.setattr(emoji_manager_new, "select", lambda _model: _Select())
monkeypatch.setattr(emoji_manager_new, "MaiEmoji", _Emoji)
result = await manager.register_emoji_by_filename(file_path)