新功能

This commit is contained in:
UnCLAS-Prommer
2026-02-15 13:29:56 +08:00
parent 6dc33e9e86
commit 5799ce7efe
2 changed files with 204 additions and 3 deletions

View File

@@ -1015,13 +1015,14 @@ def test_update_emoji_usage_success(monkeypatch):
def __init__(self):
self.query_count = 2
self.last_used_time = None
record = _Record()
class _Result:
def scalars(self):
return self
def first(self):
return _Record()
return record
class _Session:
def __enter__(self):
@@ -1048,6 +1049,8 @@ def test_update_emoji_usage_success(monkeypatch):
result = manager.update_emoji_usage(emoji)
assert result is True
assert emoji.query_count == 1
assert record.query_count == 1
assert any("成功记录表情包使用" in m for m in _messages(logger.info_calls))
@@ -1156,6 +1159,169 @@ def test_update_emoji_usage_get_db_session_error(monkeypatch):
assert any("记录使用时出错" in m for m in _messages(logger.error_calls))
def test_update_emoji_success(monkeypatch):
emoji_manager_new = import_emoji_manager_new(monkeypatch)
logger = emoji_manager_new.logger
manager = emoji_manager_new.EmojiManager()
class _Select:
def filter_by(self, **_kwargs):
return self
def limit(self, _num):
return self
def _select(_model):
return _Select()
class _Record:
def __init__(self):
self.description = None
self.emotion = None
class _Result:
def scalars(self):
return self
def first(self):
return _Record()
class _Session:
def __enter__(self):
return self
def __exit__(self, exc_type, exc, tb):
return False
def exec(self, _statement):
return _Result()
def add(self, _record):
self.added = True
def _get_db_session():
return _Session()
monkeypatch.setattr(emoji_manager_new, "select", _select)
monkeypatch.setattr(emoji_manager_new, "get_db_session", _get_db_session)
emoji = emoji_manager_new.MaiEmoji()
emoji.file_hash = "hash-update"
emoji.description = "new-desc"
emoji.emotion = ["a", "b"]
result = manager.update_emoji(emoji)
assert result is True
assert any("成功更新表情包信息" in m for m in _messages(logger.info_calls))
def test_update_emoji_missing_record(monkeypatch):
emoji_manager_new = import_emoji_manager_new(monkeypatch)
logger = emoji_manager_new.logger
manager = emoji_manager_new.EmojiManager()
class _Select:
def filter_by(self, **_kwargs):
return self
def limit(self, _num):
return self
def _select(_model):
return _Select()
class _Result:
def scalars(self):
return self
def first(self):
return None
class _Session:
def __enter__(self):
return self
def __exit__(self, exc_type, exc, tb):
return False
def exec(self, _statement):
return _Result()
def _get_db_session():
return _Session()
monkeypatch.setattr(emoji_manager_new, "select", _select)
monkeypatch.setattr(emoji_manager_new, "get_db_session", _get_db_session)
emoji = emoji_manager_new.MaiEmoji()
emoji.file_hash = "hash-missing"
result = manager.update_emoji(emoji)
assert result is False
assert any("未找到表情包记录" in m for m in _messages(logger.error_calls))
def test_update_emoji_execute_error(monkeypatch):
emoji_manager_new = import_emoji_manager_new(monkeypatch)
logger = emoji_manager_new.logger
manager = emoji_manager_new.EmojiManager()
class _Select:
def filter_by(self, **_kwargs):
return self
def limit(self, _num):
return self
def _select(_model):
return _Select()
class _Session:
def __enter__(self):
return self
def __exit__(self, exc_type, exc, tb):
return False
def exec(self, _statement):
raise RuntimeError("execute failed")
def _get_db_session():
return _Session()
monkeypatch.setattr(emoji_manager_new, "select", _select)
monkeypatch.setattr(emoji_manager_new, "get_db_session", _get_db_session)
emoji = emoji_manager_new.MaiEmoji()
emoji.file_hash = "hash-execute"
result = manager.update_emoji(emoji)
assert result is False
assert any("更新数据库记录时出错" in m for m in _messages(logger.error_calls))
def test_update_emoji_get_db_session_error(monkeypatch):
emoji_manager_new = import_emoji_manager_new(monkeypatch)
logger = emoji_manager_new.logger
manager = emoji_manager_new.EmojiManager()
def _get_db_session():
raise RuntimeError("get_db_session failed")
monkeypatch.setattr(emoji_manager_new, "get_db_session", _get_db_session)
emoji = emoji_manager_new.MaiEmoji()
emoji.file_hash = "hash-session"
result = manager.update_emoji(emoji)
assert result is False
assert any("更新数据库记录时出错" in m for m in _messages(logger.error_calls))
@pytest.mark.asyncio
async def test_get_emoji_for_emotion_empty_list(monkeypatch):
emoji_manager_new = import_emoji_manager_new(monkeypatch)