File: test_sync.py

package info (click to toggle)
litestar 2.19.0-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 12,500 kB
  • sloc: python: 70,169; makefile: 254; javascript: 105; sh: 60
file content (105 lines) | stat: -rw-r--r-- 2,732 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
from litestar.utils.sync import ensure_async_callable


async def test_function_wrapper_wraps_method_correctly() -> None:
    class MyClass:
        def __init__(self) -> None:
            self.value = 0

        def my_method(self, value: int) -> None:
            self.value = value

    instance = MyClass()

    wrapped_method = ensure_async_callable(instance.my_method)

    await wrapped_method(1)
    assert instance.value == 1

    await wrapped_method(value=10)
    assert instance.value == 10


async def test_function_wrapper_wraps_async_method_correctly() -> None:
    class MyClass:
        def __init__(self) -> None:
            self.value = 0

        async def my_method(self, value: int) -> None:
            self.value = value

    instance = MyClass()

    wrapped_method = ensure_async_callable(instance.my_method)

    await wrapped_method(1)  # type: ignore[unused-coroutine]
    assert instance.value == 1

    await wrapped_method(value=10)  # type: ignore[unused-coroutine]
    assert instance.value == 10


async def test_function_wrapper_wraps_function_correctly() -> None:
    obj = {"value": 0}

    def my_function(new_value: int) -> None:
        obj["value"] = new_value

    wrapped_function = ensure_async_callable(my_function)

    await wrapped_function(1)
    assert obj["value"] == 1

    await wrapped_function(new_value=10)
    assert obj["value"] == 10


async def test_function_wrapper_wraps_async_function_correctly() -> None:
    obj = {"value": 0}

    async def my_function(new_value: int) -> None:
        obj["value"] = new_value

    wrapped_function = ensure_async_callable(my_function)

    await wrapped_function(1)  # type: ignore[unused-coroutine]
    assert obj["value"] == 1

    await wrapped_function(new_value=10)  # type: ignore[unused-coroutine]
    assert obj["value"] == 10


async def test_function_wrapper_wraps_class_correctly() -> None:
    class MyCallable:
        value = 0

        def __call__(self, new_value: int) -> None:
            self.value = new_value

    instance = MyCallable()

    wrapped_class = ensure_async_callable(instance)

    await wrapped_class(1)
    assert instance.value == 1

    await wrapped_class(new_value=10)
    assert instance.value == 10


async def test_function_wrapper_wraps_async_class_correctly() -> None:
    class MyCallable:
        value = 0

        async def __call__(self, new_value: int) -> None:
            self.value = new_value

    instance = MyCallable()

    wrapped_class = ensure_async_callable(instance)

    await wrapped_class(1)  # type: ignore[unused-coroutine]
    assert instance.value == 1

    await wrapped_class(new_value=10)  # type: ignore[unused-coroutine]
    assert instance.value == 10