mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 14:03:30 +00:00
test_helpers: Fix POSTRequestMock typing.
The proximal issue here is that in upcoming commits, we're going to
change the type of the `anchor` field in `get_messages_backend` to
support passing either an integer or a string.
Many of our tests using POSTRequestMock currently define a query
object that uses integer values for the integer fields we're going to
pass into it, e.g. {'num_after': 0}. That is the correct type for
that field in the Zulip API, before HTTP encoding turns it into a
string. However, because POSTRequestMock didn't use HTTP encoding at
all (which will convert the 0 into a '0'), it ended up passing an
integer to a function that can't possible receive one as an argument.
Ideally, we'd just get rid of POSTRequestMock, since it's a hack, and
just do real HTTP requests instead.
But since it's used in a lot of places making doing so somewhat
impractical, we can get past this issue by just making POSTRequestMock
convert integers to strings.
This commit is contained in:
@@ -256,7 +256,15 @@ class POSTRequestMock:
|
||||
|
||||
def __init__(self, post_data: Dict[str, Any], user_profile: Optional[UserProfile]) -> None:
|
||||
self.GET = {} # type: Dict[str, Any]
|
||||
self.POST = post_data
|
||||
|
||||
# Convert any integer parameters passed into strings, even
|
||||
# though of course the HTTP API would do so. Ideally, we'd
|
||||
# get rid of this abstraction entirely and just use the HTTP
|
||||
# API directly, but while it exists, we need this code.
|
||||
self.POST = {} # type: Dict[str, str]
|
||||
for key in post_data:
|
||||
self.POST[key] = str(post_data[key])
|
||||
|
||||
self.user = user_profile
|
||||
self._tornado_handler = DummyHandler()
|
||||
self._log_data = {} # type: Dict[str, Any]
|
||||
|
||||
Reference in New Issue
Block a user