From c5bd187c2d6db836a3bb3c19327b59d86b6be389 Mon Sep 17 00:00:00 2001 From: Pavel Kirilin <win10@list.ru> Date: Sun, 28 Jun 2020 05:06:46 +0400 Subject: [PATCH] Testing and fixes. Description: - Fixed blyaficate function. - Added pytests. Signed-off-by: Pavel Kirilin <win10@list.ru> --- Makefile | 2 +- requirements/requirements.test.txt | 2 ++ src/actions/fun.py | 5 +++-- tests/__init__.py | 13 +++++++++++++ tests/conftest.py | 28 ++++++++++++++++++++++++++++ tests/test_fun.py | 18 ++++++++++++++++++ 6 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 tests/__init__.py create mode 100644 tests/conftest.py create mode 100644 tests/test_fun.py diff --git a/Makefile b/Makefile index 80b8baa..9332b70 100644 --- a/Makefile +++ b/Makefile @@ -12,4 +12,4 @@ clean_test: _test: pre-commit run -a - echo "Python tests coming soon..." + pytest diff --git a/requirements/requirements.test.txt b/requirements/requirements.test.txt index 2973bde..ef00d8b 100644 --- a/requirements/requirements.test.txt +++ b/requirements/requirements.test.txt @@ -4,3 +4,5 @@ docker-compose==1.26.0 flake8==3.8.3 isort==4.3.21 pre-commit==2.5.1 +pytest==5.4.3 +pytest-asyncio==0.14.0 diff --git a/src/actions/fun.py b/src/actions/fun.py index c7298e6..2446f69 100644 --- a/src/actions/fun.py +++ b/src/actions/fun.py @@ -25,7 +25,7 @@ swearing = [ @config.telegram_client.on(events.NewMessage(pattern=r"^\.bl (.*)", forwards=False)) async def blyaficate(event: events.NewMessage.Event): - message = event.pattern_match.group(1).strip() + message = event.message.lstrip(".bl ").strip() response = "" for symbol in message: if symbol == ",": @@ -37,11 +37,12 @@ async def blyaficate(event: events.NewMessage.Event): ", нахуй,", ", еб твою мать,", ", разрази Ð¼ÐµÐ½Ñ Ð³Ñ€Ð¾Ð¼,", - ", ёбнутьÑÑ,", + ", пиздец,", ] ) else: response += symbol + response = response.lstrip(",").rstrip(",") await event.reply(response) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e745c0d --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1,13 @@ +from unittest.mock import MagicMock + + +def patch_client(): + from src.config import config + + client_mock = MagicMock() + print("Updating config") + client_mock.on = lambda x: lambda f: f + config.telegram_client = client_mock + + +patch_client() diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..f93d085 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,28 @@ +from unittest.mock import MagicMock + + +class NewMessageTestEvent(object): + def __init__(self, message: str, forwarded=False): + self._msg = message + self._fwd = forwarded + self._res = None + + async def reply(self, response): + self._res = response + + async def respond(self, response): + self._res = response + + @property + def pattern_match(self): + mock = MagicMock() + mock.group = MagicMock(return_value=self._msg) + return mock + + @property + def result(self): + return self._res + + @property + def message(self): + return self._msg diff --git a/tests/test_fun.py b/tests/test_fun.py new file mode 100644 index 0000000..1d3acd2 --- /dev/null +++ b/tests/test_fun.py @@ -0,0 +1,18 @@ +import pytest + +from src.actions import fun +from tests.conftest import NewMessageTestEvent + + +@pytest.mark.asyncio +async def test_bl_trailing_comma(): + event_mock = NewMessageTestEvent("test,") + await fun.blyaficate(event_mock) + assert not event_mock.result.endswith(",") + + +@pytest.mark.asyncio +async def test_bl_starting_comma(): + event_mock = NewMessageTestEvent(",test.") + await fun.blyaficate(event_mock) + assert not event_mock.result.startswith(",") -- GitLab