Files
telegram-helper-bot/tests/test_voice_constants.py
2026-02-02 00:13:33 +03:00

171 lines
6.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import pytest
from helper_bot.handlers.voice.constants import (
BTN_LISTEN,
BTN_SPEAK,
BUTTON_COMMAND_MAPPING,
CALLBACK_COMMAND_MAPPING,
CALLBACK_DELETE,
CALLBACK_SAVE,
CMD_EMOJI,
CMD_HELP,
CMD_REFRESH,
CMD_RESTART,
CMD_START,
COMMAND_MAPPING,
STATE_STANDUP_WRITE,
STATE_START,
VOICE_BOT_NAME,
)
class TestVoiceConstants:
"""Тесты для констант voice модуля"""
def test_button_command_mapping_structure(self):
"""Тест структуры BUTTON_COMMAND_MAPPING"""
assert isinstance(BUTTON_COMMAND_MAPPING, dict)
assert len(BUTTON_COMMAND_MAPPING) > 0
# Проверяем, что все значения являются строками
for key, value in BUTTON_COMMAND_MAPPING.items():
assert isinstance(key, str)
assert isinstance(value, str)
def test_button_command_mapping_specific_values(self):
"""Тест конкретных значений в BUTTON_COMMAND_MAPPING"""
assert "🎤Высказаться" in BUTTON_COMMAND_MAPPING
assert "🎧Послушать" in BUTTON_COMMAND_MAPPING
assert BUTTON_COMMAND_MAPPING["🎤Высказаться"] == "voice_speak"
assert BUTTON_COMMAND_MAPPING["🎧Послушать"] == "voice_listen"
def test_command_mapping_structure(self):
"""Тест структуры COMMAND_MAPPING"""
assert isinstance(COMMAND_MAPPING, dict)
assert len(COMMAND_MAPPING) > 0
# Проверяем, что все значения являются строками
for key, value in COMMAND_MAPPING.items():
assert isinstance(key, str)
assert isinstance(value, str)
def test_command_mapping_specific_values(self):
"""Тест конкретных значений в COMMAND_MAPPING"""
assert "start" in COMMAND_MAPPING
assert "help" in COMMAND_MAPPING
assert "restart" in COMMAND_MAPPING
assert "emoji" in COMMAND_MAPPING
assert "refresh" in COMMAND_MAPPING
assert COMMAND_MAPPING["start"] == "voice_start"
assert COMMAND_MAPPING["help"] == "voice_help"
assert COMMAND_MAPPING["restart"] == "voice_restart"
assert COMMAND_MAPPING["emoji"] == "voice_emoji"
assert COMMAND_MAPPING["refresh"] == "voice_refresh"
def test_callback_command_mapping_structure(self):
"""Тест структуры CALLBACK_COMMAND_MAPPING"""
assert isinstance(CALLBACK_COMMAND_MAPPING, dict)
assert len(CALLBACK_COMMAND_MAPPING) > 0
# Проверяем, что все значения являются строками
for key, value in CALLBACK_COMMAND_MAPPING.items():
assert isinstance(key, str)
assert isinstance(value, str)
def test_callback_command_mapping_specific_values(self):
"""Тест конкретных значений в CALLBACK_COMMAND_MAPPING"""
assert "save" in CALLBACK_COMMAND_MAPPING
assert "delete" in CALLBACK_COMMAND_MAPPING
assert CALLBACK_COMMAND_MAPPING["save"] == "voice_save"
assert CALLBACK_COMMAND_MAPPING["delete"] == "voice_delete"
def test_voice_bot_name(self):
"""Тест VOICE_BOT_NAME"""
assert isinstance(VOICE_BOT_NAME, str)
assert len(VOICE_BOT_NAME) > 0
assert "voice" in VOICE_BOT_NAME.lower()
def test_state_constants(self):
"""Тест констант состояний"""
assert isinstance(STATE_START, str)
assert isinstance(STATE_STANDUP_WRITE, str)
assert len(STATE_START) > 0
assert len(STATE_STANDUP_WRITE) > 0
def test_button_constants(self):
"""Тест констант кнопок"""
assert isinstance(BTN_SPEAK, str)
assert isinstance(BTN_LISTEN, str)
assert len(BTN_SPEAK) > 0
assert len(BTN_LISTEN) > 0
def test_command_constants(self):
"""Тест констант команд"""
assert isinstance(CMD_START, str)
assert isinstance(CMD_HELP, str)
assert isinstance(CMD_RESTART, str)
assert isinstance(CMD_EMOJI, str)
assert isinstance(CMD_REFRESH, str)
assert CMD_START == "start"
assert CMD_HELP == "help"
assert CMD_RESTART == "restart"
assert CMD_EMOJI == "emoji"
assert CMD_REFRESH == "refresh"
def test_callback_constants(self):
"""Тест констант callback"""
assert isinstance(CALLBACK_SAVE, str)
assert isinstance(CALLBACK_DELETE, str)
assert CALLBACK_SAVE == "save"
assert CALLBACK_DELETE == "delete"
def test_mapping_consistency(self):
"""Тест согласованности маппингов"""
# Проверяем, что все ключи в маппингах соответствуют константам
assert "🎤Высказаться" in BUTTON_COMMAND_MAPPING
assert "🎧Послушать" in BUTTON_COMMAND_MAPPING
assert "start" in COMMAND_MAPPING
assert "help" in COMMAND_MAPPING
assert "restart" in COMMAND_MAPPING
assert "emoji" in COMMAND_MAPPING
assert "refresh" in COMMAND_MAPPING
assert "save" in CALLBACK_COMMAND_MAPPING
assert "delete" in CALLBACK_COMMAND_MAPPING
def test_mapping_values_format(self):
"""Тест формата значений в маппингах"""
# Проверяем, что все значения начинаются с 'voice_'
for value in BUTTON_COMMAND_MAPPING.values():
assert value.startswith("voice_")
for value in COMMAND_MAPPING.values():
assert value.startswith("voice_")
for value in CALLBACK_COMMAND_MAPPING.values():
assert value.startswith("voice_")
def test_no_duplicate_values(self):
"""Тест отсутствия дублирующихся значений в пределах каждого маппинга"""
button_values = list(BUTTON_COMMAND_MAPPING.values())
command_values = list(COMMAND_MAPPING.values())
callback_values = list(CALLBACK_COMMAND_MAPPING.values())
# Проверяем, что нет дублирующихся значений в каждом маппинге
assert len(button_values) == len(set(button_values))
assert len(command_values) == len(set(command_values))
assert len(callback_values) == len(set(callback_values))
# Примечание: Дублирование между маппингами допустимо (например, voice_emoji)
# так как одно действие может быть вызвано и командой, и кнопкой
if __name__ == "__main__":
pytest.main([__file__])