All checks were successful
CI pipeline / Test & Code Quality (push) Successful in 34s
171 lines
6.8 KiB
Python
171 lines
6.8 KiB
Python
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__])
|