Skip to content

Commit de7a983

Browse files
authored
Add support for None values in data pattern (#259)
1 parent 15522db commit de7a983

File tree

3 files changed

+29
-4
lines changed

3 files changed

+29
-4
lines changed

respx/patterns.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,9 @@ class Data(MultiItemsMixin, Pattern):
548548
value: MultiItems
549549

550550
def clean(self, value: Dict) -> MultiItems:
551-
return MultiItems(value)
551+
return MultiItems(
552+
(key, "" if value is None else str(value)) for key, value in value.items()
553+
)
552554

553555
def parse(self, request: httpx.Request) -> Any:
554556
data, _ = decode_data(request)

respx/utils.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,18 @@
11
import email
22
from datetime import datetime
33
from email.message import Message
4-
from typing import Dict, List, NamedTuple, Optional, Tuple, Type, TypeVar, Union, cast
4+
from typing import (
5+
Any,
6+
Dict,
7+
List,
8+
NamedTuple,
9+
Optional,
10+
Tuple,
11+
Type,
12+
TypeVar,
13+
Union,
14+
cast,
15+
)
516
from urllib.parse import parse_qsl
617

718
try:
@@ -13,13 +24,13 @@
1324

1425

1526
class MultiItems(dict):
16-
def get_list(self, key: str) -> List[str]:
27+
def get_list(self, key: str) -> List[Any]:
1728
try:
1829
return [self[key]]
1930
except KeyError: # pragma: no cover
2031
return []
2132

22-
def multi_items(self) -> List[Tuple[str, str]]:
33+
def multi_items(self) -> List[Tuple[str, Any]]:
2334
return list(self.items())
2435

2536

tests/test_patterns.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,18 @@ def test_content_pattern(lookup, content, expected):
350350
None,
351351
True,
352352
),
353+
(
354+
Lookup.EQUAL,
355+
{"none_value": None},
356+
None,
357+
True,
358+
),
359+
(
360+
Lookup.EQUAL,
361+
{"non_str": 123},
362+
None,
363+
True,
364+
),
353365
(
354366
Lookup.EQUAL,
355367
{"x": "a"},

0 commit comments

Comments
 (0)