mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
test
This commit is contained in:
@@ -3051,10 +3051,13 @@ class App(Generic[ReturnType], DOMNode):
|
||||
Returns:
|
||||
A tuple of (node or None, action name, tuple of parameters).
|
||||
"""
|
||||
print(action, default_namespace)
|
||||
if isinstance(action, tuple):
|
||||
destination, action_name, params = action
|
||||
else:
|
||||
destination, action_name, params = actions.parse(action)
|
||||
|
||||
print("parse action", destination, action_name, params)
|
||||
action_target: DOMNode | None = None
|
||||
if destination:
|
||||
if destination not in self._action_targets:
|
||||
@@ -3101,7 +3104,7 @@ class App(Generic[ReturnType], DOMNode):
|
||||
Returns:
|
||||
True if the event has been handled.
|
||||
"""
|
||||
|
||||
print("r", action, default_namespace)
|
||||
action_target, action_name, params = self._parse_action(
|
||||
action, self if default_namespace is None else default_namespace
|
||||
)
|
||||
|
||||
@@ -3,13 +3,24 @@ from textual.screen import Screen
|
||||
from textual.widgets import Label
|
||||
|
||||
|
||||
async def test_links():
|
||||
async def test_links() -> None:
|
||||
"""Regression test for https://github.com/Textualize/textual/issues/4536"""
|
||||
messages: list[str] = []
|
||||
|
||||
class LinkLabel(Label):
|
||||
def action_bell_message(self, message: str) -> None:
|
||||
nonlocal messages
|
||||
messages.append(f"label {message}")
|
||||
|
||||
class HomeScreen(Screen[None]):
|
||||
def compose(self) -> ComposeResult:
|
||||
yield Label("[@click=app.bell_message('hi')]Ring the bell![/]")
|
||||
yield LinkLabel("[@click=app.bell_message('foo')]Ring the bell![/]")
|
||||
yield LinkLabel("[@click=screen.bell_message('bar')]Ring the bell![/]")
|
||||
yield LinkLabel("[@click=bell_message('baz')]Ring the bell![/]")
|
||||
|
||||
def action_bell_message(self, message: str) -> None:
|
||||
nonlocal messages
|
||||
messages.append(f"screen {message}")
|
||||
|
||||
class ScreenNamespace(App[None]):
|
||||
def get_default_screen(self) -> HomeScreen:
|
||||
@@ -17,8 +28,10 @@ async def test_links():
|
||||
|
||||
def action_bell_message(self, message: str) -> None:
|
||||
nonlocal messages
|
||||
messages.append(message)
|
||||
messages.append(f"app {message}")
|
||||
|
||||
async with ScreenNamespace().run_test() as pilot:
|
||||
await pilot.click(offset=(5, 0))
|
||||
assert messages == ["hi"]
|
||||
await pilot.click(offset=(5, 1))
|
||||
await pilot.click(offset=(5, 2))
|
||||
assert messages == ["app foo", "screen bar", "label baz"]
|
||||
|
||||
Reference in New Issue
Block a user