mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-06 07:50:32 +00:00
More tests (Helper and contextinstance)
This commit is contained in:
parent
22df168042
commit
c824b298c9
5 changed files with 179 additions and 37 deletions
|
|
@ -79,7 +79,7 @@ class HelperMode(Helper):
|
|||
@classmethod
|
||||
def _snake_case(cls, text):
|
||||
"""
|
||||
Transform text to snake cale (Based on SCREAMING_SNAKE_CASE)
|
||||
Transform text to snake case (Based on SCREAMING_SNAKE_CASE)
|
||||
|
||||
:param text:
|
||||
:return:
|
||||
|
|
|
|||
127
tests/test_utils/test_helper.py
Normal file
127
tests/test_utils/test_helper.py
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
import pytest
|
||||
from aiogram.utils.helper import Helper, HelperMode, Item, ListItem, OrderedHelper
|
||||
|
||||
|
||||
class TestHelper:
|
||||
def test_items_all(self):
|
||||
class MyHelper(Helper):
|
||||
A = Item()
|
||||
B = Item()
|
||||
C = Item()
|
||||
D = Item()
|
||||
|
||||
assert set(MyHelper.all()) == {"A", "B", "C", "D"}
|
||||
|
||||
def test_listed_items_all(self):
|
||||
class MyHelper(Helper):
|
||||
A = ListItem()
|
||||
B = ListItem()
|
||||
C = ListItem()
|
||||
D = ListItem()
|
||||
|
||||
assert set(MyHelper.all()) == {"A", "B", "C", "D"}
|
||||
|
||||
def test_listed_items_combinations(self):
|
||||
class MyHelper(Helper):
|
||||
A = ListItem()
|
||||
B = ListItem()
|
||||
C = ListItem()
|
||||
D = ListItem()
|
||||
|
||||
assert (MyHelper.A | MyHelper.B) == ["A", "B"]
|
||||
assert (MyHelper.C & MyHelper.D) == ["C", "D"]
|
||||
assert MyHelper.A.add(MyHelper.D) == ["A", "D"]
|
||||
assert MyHelper.B + MyHelper.D == ["B", "D"]
|
||||
|
||||
def test_wrong_name(self):
|
||||
with pytest.raises(RuntimeError):
|
||||
|
||||
class MyHelper(Helper):
|
||||
kaboom = Item()
|
||||
|
||||
|
||||
class TestHelperMode:
|
||||
def test_helper_mode_all(self):
|
||||
assert set(HelperMode.all()) == {
|
||||
"SCREAMING_SNAKE_CASE",
|
||||
"lowerCamelCase",
|
||||
"CamelCase",
|
||||
"snake_case",
|
||||
"lowercase",
|
||||
}
|
||||
|
||||
def test_screaming_snake_case(self):
|
||||
class MyHelper(Helper):
|
||||
mode = HelperMode.SCREAMING_SNAKE_CASE
|
||||
|
||||
FOO = Item()
|
||||
BAR_BAZ = Item()
|
||||
|
||||
assert MyHelper.FOO == "FOO"
|
||||
assert MyHelper.BAR_BAZ == "BAR_BAZ"
|
||||
|
||||
def test_lower_camel_case(self):
|
||||
class MyHelper(Helper):
|
||||
mode = HelperMode.lowerCamelCase
|
||||
|
||||
FOO = Item()
|
||||
BAR_BAZ = Item()
|
||||
|
||||
assert MyHelper.FOO == "foo"
|
||||
assert MyHelper.BAR_BAZ == "barBaz"
|
||||
|
||||
def test_camel_case(self):
|
||||
class MyHelper(Helper):
|
||||
mode = HelperMode.CamelCase
|
||||
|
||||
FOO = Item()
|
||||
BAR_BAZ = Item()
|
||||
|
||||
assert MyHelper.FOO == "Foo"
|
||||
assert MyHelper.BAR_BAZ == "BarBaz"
|
||||
|
||||
def test_snake_case(self):
|
||||
class MyHelper(Helper):
|
||||
mode = HelperMode.snake_case
|
||||
|
||||
FOO = Item()
|
||||
BAR_BAZ = Item()
|
||||
|
||||
assert MyHelper.FOO == "foo"
|
||||
assert MyHelper.BAR_BAZ == "bar_baz"
|
||||
|
||||
def test_lowercase(self):
|
||||
class MyHelper(Helper):
|
||||
mode = HelperMode.lowercase
|
||||
|
||||
FOO = Item()
|
||||
BAR_BAZ = Item()
|
||||
|
||||
assert MyHelper.FOO == "foo"
|
||||
assert MyHelper.BAR_BAZ == "barbaz"
|
||||
|
||||
def test_extended_converters(self):
|
||||
assert HelperMode.apply("test_text", mode=HelperMode.SCREAMING_SNAKE_CASE) == "TEST_TEXT"
|
||||
assert HelperMode.apply("TestText", mode=HelperMode.SCREAMING_SNAKE_CASE) == "TEST_TEXT"
|
||||
assert HelperMode.apply("test_text", mode=HelperMode.snake_case) == "test_text"
|
||||
assert HelperMode.apply("foo", mode=lambda m: m.upper()) == "FOO"
|
||||
|
||||
|
||||
class TestOrderedHelper:
|
||||
def test_items_are_ordered(self):
|
||||
class MyOrderedHelper(OrderedHelper):
|
||||
A = Item()
|
||||
D = Item()
|
||||
C = Item()
|
||||
B = Item()
|
||||
|
||||
assert MyOrderedHelper.all() == ["A", "D", "C", "B"]
|
||||
|
||||
def test_list_items_are_ordered(self):
|
||||
class MyOrderedHelper(OrderedHelper):
|
||||
A = ListItem()
|
||||
D = ListItem()
|
||||
C = ListItem()
|
||||
B = ListItem()
|
||||
|
||||
assert MyOrderedHelper.all() == ["A", "D", "C", "B"]
|
||||
51
tests/test_utils/test_mixins.py
Normal file
51
tests/test_utils/test_mixins.py
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
import pytest
|
||||
from aiogram.utils.mixins import ContextInstanceMixin, DataMixin
|
||||
|
||||
|
||||
class DataObject(DataMixin):
|
||||
pass
|
||||
|
||||
|
||||
class ContextObject(ContextInstanceMixin):
|
||||
pass
|
||||
|
||||
|
||||
class TestDataMixin:
|
||||
def test_store_value(self):
|
||||
obj = DataObject()
|
||||
obj["foo"] = 42
|
||||
|
||||
assert "foo" in obj
|
||||
assert obj["foo"] == 42
|
||||
assert len(obj.data) == 1
|
||||
|
||||
def test_remove_value(self):
|
||||
obj = DataObject()
|
||||
obj["foo"] = 42
|
||||
del obj["foo"]
|
||||
|
||||
assert "key" not in obj
|
||||
assert len(obj.data) == 0
|
||||
|
||||
def test_getter(self):
|
||||
obj = DataObject()
|
||||
obj["foo"] = 42
|
||||
|
||||
assert obj.get("foo") == 42
|
||||
assert obj.get("bar") is None
|
||||
assert obj.get("baz", "test") == "test"
|
||||
|
||||
|
||||
class TestContextInstanceMixin:
|
||||
def test_empty(self):
|
||||
obj = ContextObject()
|
||||
|
||||
assert obj.get_current(no_error=True) is None
|
||||
with pytest.raises(LookupError):
|
||||
assert obj.get_current(no_error=False)
|
||||
|
||||
def test_set_wrong_type(self):
|
||||
obj = ContextObject()
|
||||
|
||||
with pytest.raises(TypeError, match=r"Value should be instance of 'ContextObject' not '.+'"):
|
||||
obj.set_current(42)
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
from aiogram.utils.mixins import DataMixin
|
||||
|
||||
|
||||
class MyClass(DataMixin):
|
||||
pass
|
||||
|
||||
|
||||
class TestDataMixin:
|
||||
def test_store_value(self):
|
||||
obj = MyClass()
|
||||
obj["foo"] = 42
|
||||
|
||||
assert "foo" in obj
|
||||
assert obj["foo"] == 42
|
||||
assert len(obj.data) == 1
|
||||
|
||||
def test_remove_value(self):
|
||||
obj = MyClass()
|
||||
obj["foo"] = 42
|
||||
del obj["foo"]
|
||||
|
||||
assert "key" not in obj
|
||||
assert len(obj.data) == 0
|
||||
|
||||
def test_getter(self):
|
||||
obj = MyClass()
|
||||
obj["foo"] = 42
|
||||
|
||||
assert obj.get("foo") == 42
|
||||
assert obj.get("bar") is None
|
||||
assert obj.get("baz", "test") == "test"
|
||||
|
||||
|
||||
class TestContextInstanceMixin:
|
||||
def test_instance(self):
|
||||
pass
|
||||
Loading…
Add table
Add a link
Reference in a new issue