mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
102 lines
3.1 KiB
Python
102 lines
3.1 KiB
Python
from rich.console import Console
|
|
from textual.app import App
|
|
from textual.widgets import Input
|
|
|
|
|
|
async def test_input_value_visible_on_instantiation():
|
|
"""Check if the full input value is rendered if the input is instantiated with it."""
|
|
|
|
class MyApp(App):
|
|
def compose(self):
|
|
yield Input(value="value")
|
|
|
|
app = MyApp()
|
|
async with app.run_test():
|
|
console = Console(width=5)
|
|
with console.capture() as capture:
|
|
console.print(app.query_one(Input).render())
|
|
assert capture.get() == "value"
|
|
|
|
|
|
async def test_input_value_visible_after_value_assignment():
|
|
"""Check if the full input value is rendered if the value is assigned to programmatically."""
|
|
|
|
class MyApp(App):
|
|
def compose(self):
|
|
yield Input()
|
|
|
|
def on_mount(self):
|
|
self.query_one(Input).value = "value"
|
|
|
|
app = MyApp()
|
|
async with app.run_test():
|
|
console = Console(width=5)
|
|
with console.capture() as capture:
|
|
console.print(app.query_one(Input).render())
|
|
assert capture.get() == "value"
|
|
|
|
|
|
async def test_input_value_visible_if_mounted_later():
|
|
"""Check if full input value is rendered if the widget is mounted later."""
|
|
|
|
class MyApp(App):
|
|
BINDINGS = [("a", "add_input", "add_input")]
|
|
|
|
async def action_add_input(self):
|
|
await self.mount(Input(value="value"))
|
|
|
|
app = MyApp()
|
|
async with app.run_test() as pilot:
|
|
await pilot.press("a")
|
|
await pilot.pause()
|
|
console = Console(width=5)
|
|
with console.capture() as capture:
|
|
console.print(app.query_one(Input).render())
|
|
assert capture.get() == "value"
|
|
|
|
|
|
async def test_input_value_visible_if_mounted_later_and_focused():
|
|
"""Check if full input value is rendered if the widget is mounted later and immediately focused."""
|
|
|
|
class MyApp(App):
|
|
BINDINGS = [("a", "add_input", "add_input")]
|
|
|
|
async def action_add_input(self):
|
|
inp = Input(value="value")
|
|
await self.mount(inp)
|
|
inp.focus()
|
|
|
|
app = MyApp()
|
|
async with app.run_test() as pilot:
|
|
await pilot.press("a")
|
|
await pilot.pause()
|
|
console = Console(width=5)
|
|
with console.capture() as capture:
|
|
console.print(app.query_one(Input).render())
|
|
assert capture.get() == "value"
|
|
|
|
|
|
async def test_input_value_visible_if_mounted_later_and_assigned_after():
|
|
"""Check if full value rendered if the widget is mounted later and the value is then assigned to."""
|
|
|
|
class MyApp(App):
|
|
BINDINGS = [
|
|
("a", "add_input", "add_input"),
|
|
("v", "set_value", "set_value"),
|
|
]
|
|
|
|
async def action_add_input(self):
|
|
await self.mount(Input())
|
|
|
|
def action_set_value(self):
|
|
self.query_one(Input).value = "value"
|
|
|
|
app = MyApp()
|
|
async with app.run_test() as pilot:
|
|
await pilot.press("a")
|
|
await pilot.press("v")
|
|
console = Console(width=5)
|
|
with console.capture() as capture:
|
|
console.print(app.query_one(Input).render())
|
|
assert capture.get() == "value"
|