Skip to content

Commit 3c4a444

Browse files
authored
Merge pull request #44 from mts-ai/feature/dependency-helper-coverage
coverage for dependency helper
2 parents c83b14c + 666985a commit 3c4a444

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed

tests/test_utils/__init__.py

Whitespace-only changes.
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
from random import choices
2+
from string import ascii_letters
3+
from unittest.mock import AsyncMock
4+
5+
import pytest
6+
from fastapi import (
7+
Depends,
8+
Request,
9+
)
10+
11+
from fastapi_jsonapi.utils.dependency_helper import DependencyHelper
12+
13+
pytestmark = pytest.mark.asyncio
14+
15+
16+
class TestDependencyHelper:
17+
async def test_dependency_helper(self):
18+
header_key = "".join(choices(ascii_letters, k=10))
19+
header_value = "".join(choices(ascii_letters, k=12))
20+
data_1 = object()
21+
data_2 = object()
22+
data_3 = object()
23+
24+
def sub_dependency():
25+
return data_1
26+
27+
def some_dependency(sub_dep_1=Depends(sub_dependency)):
28+
return sub_dep_1
29+
30+
async def some_async_dependency():
31+
return data_3
32+
33+
def some_function(
34+
req: Request,
35+
d1_as_dep=Depends(some_dependency),
36+
d3_as_dep=Depends(some_async_dependency),
37+
):
38+
return d1_as_dep, data_2, d3_as_dep, req.headers.get(header_key)
39+
40+
request = Request(
41+
{
42+
"type": "http",
43+
"path": "/foo/bar",
44+
"headers": [(header_key.lower().encode("latin-1"), header_value.encode("latin-1"))],
45+
"query_string": "",
46+
"fastapi_astack": AsyncMock(),
47+
},
48+
)
49+
# dirty
50+
request._body = b""
51+
52+
# prepare dependency helper
53+
dep_helper = DependencyHelper(request)
54+
# run a function with dependencies
55+
d1, d2, d3, h_value = await dep_helper.run(some_function)
56+
assert d1 is data_1
57+
assert d2 is data_2
58+
assert d3 is data_3
59+
assert h_value == header_value

0 commit comments

Comments
 (0)