|
1 | 1 | """Tests for AsyncClient construction and ownership semantics.""" |
2 | 2 |
|
| 3 | +from unittest.mock import patch |
| 4 | + |
3 | 5 | import httpx2 |
4 | 6 | import pytest |
5 | 7 |
|
6 | 8 | from httpware import AsyncClient |
| 9 | +from httpware.client import _build_default_decoders |
| 10 | +from httpware.decoders.msgspec import MsgspecDecoder |
7 | 11 | from httpware.decoders.pydantic import PydanticDecoder |
8 | 12 |
|
9 | 13 |
|
@@ -90,3 +94,38 @@ async def __call__(self, request, next) -> httpx2.Response: # noqa: A002, ANN00 |
90 | 94 | client = AsyncClient(middleware=(_Tag(),)) |
91 | 95 | assert client._user_middleware == (client._user_middleware[0],) # noqa: SLF001 |
92 | 96 | assert len(client._user_middleware) == 1 # noqa: SLF001 |
| 97 | + |
| 98 | + |
| 99 | +def test_build_default_decoders_both_extras_installed() -> None: |
| 100 | + result = _build_default_decoders() |
| 101 | + assert len(result) == 2 # noqa: PLR2004 |
| 102 | + assert isinstance(result[0], PydanticDecoder) |
| 103 | + assert isinstance(result[1], MsgspecDecoder) |
| 104 | + |
| 105 | + |
| 106 | +def test_build_default_decoders_pydantic_only() -> None: |
| 107 | + with patch("httpware._internal.import_checker.is_msgspec_installed", False): |
| 108 | + result = _build_default_decoders() |
| 109 | + assert len(result) == 1 |
| 110 | + assert isinstance(result[0], PydanticDecoder) |
| 111 | + |
| 112 | + |
| 113 | +def test_build_default_decoders_msgspec_only() -> None: |
| 114 | + with patch("httpware._internal.import_checker.is_pydantic_installed", False): |
| 115 | + result = _build_default_decoders() |
| 116 | + assert len(result) == 1 |
| 117 | + assert isinstance(result[0], MsgspecDecoder) |
| 118 | + |
| 119 | + |
| 120 | +def test_build_default_decoders_neither_installed() -> None: |
| 121 | + with ( |
| 122 | + patch("httpware._internal.import_checker.is_pydantic_installed", False), |
| 123 | + patch("httpware._internal.import_checker.is_msgspec_installed", False), |
| 124 | + ): |
| 125 | + result = _build_default_decoders() |
| 126 | + assert result == () |
| 127 | + |
| 128 | + |
| 129 | +def test_build_default_decoders_returns_tuple() -> None: |
| 130 | + result = _build_default_decoders() |
| 131 | + assert isinstance(result, tuple) |
0 commit comments