Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions tests/e2e/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

import asyncio
import sys
import enum

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This import is unused: the diff does not change this fixture's Telegram mock. Please remove this hunk, or convert ParseMode/ChatType and expose them on telegram_mod if the E2E fixture needs the same direct-import contract.

import uuid
from datetime import datetime, timezone
from types import SimpleNamespace
Expand Down
32 changes: 25 additions & 7 deletions tests/gateway/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
"""

import ast
import enum
import sys
from pathlib import Path
from unittest.mock import MagicMock
Expand All @@ -52,13 +53,30 @@ def _ensure_telegram_mock() -> None:

mod = MagicMock()
mod.ext.ContextTypes.DEFAULT_TYPE = type(None)
mod.constants.ParseMode.MARKDOWN = "Markdown"
mod.constants.ParseMode.MARKDOWN_V2 = "MarkdownV2"
mod.constants.ParseMode.HTML = "HTML"
mod.constants.ChatType.PRIVATE = "private"
mod.constants.ChatType.GROUP = "group"
mod.constants.ChatType.SUPERGROUP = "supergroup"
mod.constants.ChatType.CHANNEL = "channel"

# Use proper str-enums so ``repr(ParseMode.MARKDOWN_V2)`` contains
# "MARKDOWN_V2" — matching what the real python-telegram-bot package
# provides. Plain strings caused test assertions like
# ``assert "MARKDOWN_V2" in repr(sent["parse_mode"])`` to fail because
# ``repr("MarkdownV2")`` is ``"'MarkdownV2'"`` (no enum member name).
class _ParseMode(str, enum.Enum):
MARKDOWN = "Markdown"
MARKDOWN_V2 = "MarkdownV2"
HTML = "HTML"

class _ChatType(str, enum.Enum):
PRIVATE = "private"
GROUP = "group"
SUPERGROUP = "supergroup"
CHANNEL = "channel"

mod.constants.ParseMode = _ParseMode
mod.constants.ChatType = _ChatType
# Also set on ``mod`` directly — ``from telegram.constants import ChatType``
# resolves to ``sys.modules["telegram.constants"].ChatType`` which is
# ``mod.ChatType``, not ``mod.constants.ChatType``.
mod.ParseMode = _ParseMode
mod.ChatType = _ChatType

# Real exception classes so ``except (NetworkError, ...)`` clauses
# in production code don't blow up with TypeError.
Expand Down
22 changes: 17 additions & 5 deletions tests/gateway/test_dm_topics.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

import asyncio
import os
import enum
import sys
from pathlib import Path
from types import SimpleNamespace
Expand All @@ -29,11 +30,22 @@ def _ensure_telegram_mock():
# ``from telegram.constants import ChatType`` resolves to our mock
# with string-valued members (not auto-generated MagicMocks).
constants_mod = MagicMock()
constants_mod.ParseMode.MARKDOWN_V2 = "MarkdownV2"
constants_mod.ChatType.GROUP = "group"
constants_mod.ChatType.SUPERGROUP = "supergroup"
constants_mod.ChatType.CHANNEL = "channel"
constants_mod.ChatType.PRIVATE = "private"
class _ParseMode(str, enum.Enum):
MARKDOWN = "Markdown"
MARKDOWN_V2 = "MarkdownV2"
HTML = "HTML"

class _ChatType(str, enum.Enum):
PRIVATE = "private"
GROUP = "group"
SUPERGROUP = "supergroup"
CHANNEL = "channel"

constants_mod.constants.ParseMode = _ParseMode
constants_mod.constants.ChatType = _ChatType
# Also set directly for ``from telegram.constants import ...``
constants_mod.ParseMode = _ParseMode
constants_mod.ChatType = _ChatType

sys.modules["telegram"] = telegram_mod
sys.modules["telegram.ext"] = telegram_mod.ext
Expand Down
22 changes: 17 additions & 5 deletions tests/gateway/test_send_image_file.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

import asyncio
import os
import enum
import sys
from unittest.mock import AsyncMock, MagicMock, patch

Expand Down Expand Up @@ -70,11 +71,22 @@ def _ensure_telegram_mock():

telegram_mod = MagicMock()
telegram_mod.ext.ContextTypes.DEFAULT_TYPE = type(None)
telegram_mod.constants.ParseMode.MARKDOWN_V2 = "MarkdownV2"
telegram_mod.constants.ChatType.GROUP = "group"
telegram_mod.constants.ChatType.SUPERGROUP = "supergroup"
telegram_mod.constants.ChatType.CHANNEL = "channel"
telegram_mod.constants.ChatType.PRIVATE = "private"
class _ParseMode(str, enum.Enum):
MARKDOWN = "Markdown"
MARKDOWN_V2 = "MarkdownV2"
HTML = "HTML"

class _ChatType(str, enum.Enum):
PRIVATE = "private"
GROUP = "group"
SUPERGROUP = "supergroup"
CHANNEL = "channel"

telegram_mod.constants.ParseMode = _ParseMode
telegram_mod.constants.ChatType = _ChatType
# Also set directly for ``from telegram.constants import ...``
telegram_mod.ParseMode = _ParseMode
telegram_mod.ChatType = _ChatType

for name in ("telegram", "telegram.ext", "telegram.constants", "telegram.request"):
sys.modules.setdefault(name, telegram_mod)
Expand Down
22 changes: 17 additions & 5 deletions tests/gateway/test_send_multiple_images.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

import asyncio
import os
import enum
import sys
from unittest.mock import AsyncMock, MagicMock, patch

Expand Down Expand Up @@ -105,11 +106,22 @@ def _ensure_telegram_mock():
return
telegram_mod = MagicMock()
telegram_mod.ext.ContextTypes.DEFAULT_TYPE = type(None)
telegram_mod.constants.ParseMode.MARKDOWN_V2 = "MarkdownV2"
telegram_mod.constants.ChatType.GROUP = "group"
telegram_mod.constants.ChatType.SUPERGROUP = "supergroup"
telegram_mod.constants.ChatType.CHANNEL = "channel"
telegram_mod.constants.ChatType.PRIVATE = "private"
class _ParseMode(str, enum.Enum):
MARKDOWN = "Markdown"
MARKDOWN_V2 = "MarkdownV2"
HTML = "HTML"

class _ChatType(str, enum.Enum):
PRIVATE = "private"
GROUP = "group"
SUPERGROUP = "supergroup"
CHANNEL = "channel"

telegram_mod.constants.ParseMode = _ParseMode
telegram_mod.constants.ChatType = _ChatType
# Also set directly for ``from telegram.constants import ...``
telegram_mod.ParseMode = _ParseMode
telegram_mod.ChatType = _ChatType
for name in ("telegram", "telegram.ext", "telegram.constants", "telegram.request"):
sys.modules.setdefault(name, telegram_mod)

Expand Down
24 changes: 17 additions & 7 deletions tests/gateway/test_telegram_approval_buttons.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import enum
"""Tests for Telegram inline keyboard approval buttons."""

import asyncio
Expand Down Expand Up @@ -27,13 +28,22 @@ def _ensure_telegram_mock():

mod = MagicMock()
mod.ext.ContextTypes.DEFAULT_TYPE = type(None)
mod.constants.ParseMode.MARKDOWN = "Markdown"
mod.constants.ParseMode.MARKDOWN_V2 = "MarkdownV2"
mod.constants.ParseMode.HTML = "HTML"
mod.constants.ChatType.PRIVATE = "private"
mod.constants.ChatType.GROUP = "group"
mod.constants.ChatType.SUPERGROUP = "supergroup"
mod.constants.ChatType.CHANNEL = "channel"
class _ParseMode(str, enum.Enum):
MARKDOWN = "Markdown"
MARKDOWN_V2 = "MarkdownV2"
HTML = "HTML"

class _ChatType(str, enum.Enum):
PRIVATE = "private"
GROUP = "group"
SUPERGROUP = "supergroup"
CHANNEL = "channel"

mod.constants.ParseMode = _ParseMode
mod.constants.ChatType = _ChatType
# Also set directly for ``from telegram.constants import ...``
mod.ParseMode = _ParseMode
mod.ChatType = _ChatType
# Provide real exception classes so ``except (NetworkError, ...)`` in
# connect() doesn't blow up under xdist when this mock leaks.
mod.error.NetworkError = type("NetworkError", (OSError,), {})
Expand Down
24 changes: 17 additions & 7 deletions tests/gateway/test_telegram_clarify_buttons.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import enum
"""Tests for Telegram inline keyboard clarify buttons.

Mirrors test_telegram_approval_buttons.py for the new ``send_clarify`` and
Expand Down Expand Up @@ -31,13 +32,22 @@ def _ensure_telegram_mock():

mod = MagicMock()
mod.ext.ContextTypes.DEFAULT_TYPE = type(None)
mod.constants.ParseMode.MARKDOWN = "Markdown"
mod.constants.ParseMode.MARKDOWN_V2 = "MarkdownV2"
mod.constants.ParseMode.HTML = "HTML"
mod.constants.ChatType.PRIVATE = "private"
mod.constants.ChatType.GROUP = "group"
mod.constants.ChatType.SUPERGROUP = "supergroup"
mod.constants.ChatType.CHANNEL = "channel"
class _ParseMode(str, enum.Enum):
MARKDOWN = "Markdown"
MARKDOWN_V2 = "MarkdownV2"
HTML = "HTML"

class _ChatType(str, enum.Enum):
PRIVATE = "private"
GROUP = "group"
SUPERGROUP = "supergroup"
CHANNEL = "channel"

mod.constants.ParseMode = _ParseMode
mod.constants.ChatType = _ChatType
# Also set directly for ``from telegram.constants import ...``
mod.ParseMode = _ParseMode
mod.ChatType = _ChatType
mod.error.NetworkError = type("NetworkError", (OSError,), {})
mod.error.TimedOut = type("TimedOut", (OSError,), {})
mod.error.BadRequest = type("BadRequest", (Exception,), {})
Expand Down
22 changes: 17 additions & 5 deletions tests/gateway/test_telegram_conflict.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import asyncio
import sys
import enum
from types import SimpleNamespace
from unittest.mock import AsyncMock, MagicMock

Expand All @@ -14,11 +15,22 @@ def _ensure_telegram_mock():

telegram_mod = MagicMock()
telegram_mod.ext.ContextTypes.DEFAULT_TYPE = type(None)
telegram_mod.constants.ParseMode.MARKDOWN_V2 = "MarkdownV2"
telegram_mod.constants.ChatType.GROUP = "group"
telegram_mod.constants.ChatType.SUPERGROUP = "supergroup"
telegram_mod.constants.ChatType.CHANNEL = "channel"
telegram_mod.constants.ChatType.PRIVATE = "private"
class _ParseMode(str, enum.Enum):
MARKDOWN = "Markdown"
MARKDOWN_V2 = "MarkdownV2"
HTML = "HTML"

class _ChatType(str, enum.Enum):
PRIVATE = "private"
GROUP = "group"
SUPERGROUP = "supergroup"
CHANNEL = "channel"

telegram_mod.constants.ParseMode = _ParseMode
telegram_mod.constants.ChatType = _ChatType
# Also set directly for ``from telegram.constants import ...``
telegram_mod.ParseMode = _ParseMode
telegram_mod.ChatType = _ChatType

# Provide real exception classes so ``except (NetworkError, ...)`` in
# connect() doesn't blow up with "catching classes that do not inherit
Expand Down
22 changes: 17 additions & 5 deletions tests/gateway/test_telegram_documents.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import asyncio
import importlib
import os
import enum
import sys
from types import SimpleNamespace
from unittest.mock import AsyncMock, MagicMock, patch
Expand Down Expand Up @@ -40,11 +41,22 @@ def _ensure_telegram_mock():
telegram_mod = MagicMock()
# ContextTypes needs DEFAULT_TYPE as an actual attribute for the annotation
telegram_mod.ext.ContextTypes.DEFAULT_TYPE = type(None)
telegram_mod.constants.ParseMode.MARKDOWN_V2 = "MarkdownV2"
telegram_mod.constants.ChatType.GROUP = "group"
telegram_mod.constants.ChatType.SUPERGROUP = "supergroup"
telegram_mod.constants.ChatType.CHANNEL = "channel"
telegram_mod.constants.ChatType.PRIVATE = "private"
class _ParseMode(str, enum.Enum):
MARKDOWN = "Markdown"
MARKDOWN_V2 = "MarkdownV2"
HTML = "HTML"

class _ChatType(str, enum.Enum):
PRIVATE = "private"
GROUP = "group"
SUPERGROUP = "supergroup"
CHANNEL = "channel"

telegram_mod.constants.ParseMode = _ParseMode
telegram_mod.constants.ChatType = _ChatType
# Also set directly for ``from telegram.constants import ...``
telegram_mod.ParseMode = _ParseMode
telegram_mod.ChatType = _ChatType

for name in ("telegram", "telegram.ext", "telegram.constants", "telegram.request"):
sys.modules.setdefault(name, telegram_mod)
Expand Down
22 changes: 17 additions & 5 deletions tests/gateway/test_telegram_format.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

import re
import sys
import enum
from types import SimpleNamespace
from unittest.mock import AsyncMock, MagicMock

Expand All @@ -24,11 +25,22 @@ def _ensure_telegram_mock():
return
mod = MagicMock()
mod.ext.ContextTypes.DEFAULT_TYPE = type(None)
mod.constants.ParseMode.MARKDOWN_V2 = "MarkdownV2"
mod.constants.ChatType.GROUP = "group"
mod.constants.ChatType.SUPERGROUP = "supergroup"
mod.constants.ChatType.CHANNEL = "channel"
mod.constants.ChatType.PRIVATE = "private"
class _ParseMode(str, enum.Enum):
MARKDOWN = "Markdown"
MARKDOWN_V2 = "MarkdownV2"
HTML = "HTML"

class _ChatType(str, enum.Enum):
PRIVATE = "private"
GROUP = "group"
SUPERGROUP = "supergroup"
CHANNEL = "channel"

mod.constants.ParseMode = _ParseMode
mod.constants.ChatType = _ChatType
# Also set directly for ``from telegram.constants import ...``
mod.ParseMode = _ParseMode
mod.ChatType = _ChatType
for name in ("telegram", "telegram.ext", "telegram.constants", "telegram.request"):
sys.modules.setdefault(name, mod)

Expand Down
22 changes: 17 additions & 5 deletions tests/gateway/test_telegram_max_doc_bytes.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"""

import sys
import enum
from unittest.mock import MagicMock

from gateway.config import PlatformConfig
Expand All @@ -17,11 +18,22 @@ def _ensure_telegram_mock():

telegram_mod = MagicMock()
telegram_mod.ext.ContextTypes.DEFAULT_TYPE = type(None)
telegram_mod.constants.ParseMode.MARKDOWN_V2 = "MarkdownV2"
telegram_mod.constants.ChatType.GROUP = "group"
telegram_mod.constants.ChatType.SUPERGROUP = "supergroup"
telegram_mod.constants.ChatType.CHANNEL = "channel"
telegram_mod.constants.ChatType.PRIVATE = "private"
class _ParseMode(str, enum.Enum):
MARKDOWN = "Markdown"
MARKDOWN_V2 = "MarkdownV2"
HTML = "HTML"

class _ChatType(str, enum.Enum):
PRIVATE = "private"
GROUP = "group"
SUPERGROUP = "supergroup"
CHANNEL = "channel"

telegram_mod.constants.ParseMode = _ParseMode
telegram_mod.constants.ChatType = _ChatType
# Also set directly for ``from telegram.constants import ...``
telegram_mod.ParseMode = _ParseMode
telegram_mod.ChatType = _ChatType

for name in ("telegram", "telegram.ext", "telegram.constants", "telegram.request"):
sys.modules.setdefault(name, telegram_mod)
Expand Down
Loading
Loading