diff --git a/Makefile b/Makefile index 80b8baaaccc53d73f7e22514835e2ae4d59204af..9332b706d37c46a4094d733c9c79aa3ab1381700 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 2973bde044ef966fbb469fadd30c2cefed81b5aa..ef00d8b858fd55634821695dead29d5a95a48bdf 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 c7298e62008bd4326f0a20821052b9ef1be16149..2446f693604554af6b5a154f1ef402c452d2aed7 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 0000000000000000000000000000000000000000..e745c0da8959a1c9ccfa23aeb08adabc9032fc31 --- /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 0000000000000000000000000000000000000000..f93d08519095372475caf3664c253e111de1ad00 --- /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 0000000000000000000000000000000000000000..1d3acd2e584cc77b0cfd5108a8185b429a58c333 --- /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(",")