mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
141 lines
3.4 KiB
Python
141 lines
3.4 KiB
Python
from textual.app import App
|
|
from textual.screen import Screen
|
|
from textual.widgets import Header, Static
|
|
|
|
|
|
async def test_screen_title_none_is_ignored():
|
|
class MyScreen(Screen):
|
|
def compose(self):
|
|
yield Header()
|
|
|
|
class MyApp(App):
|
|
TITLE = "app title"
|
|
|
|
def on_mount(self):
|
|
self.push_screen(MyScreen())
|
|
|
|
app = MyApp()
|
|
async with app.run_test():
|
|
assert app.screen.query_one("HeaderTitle", Static).content == "app title"
|
|
|
|
|
|
async def test_screen_title_overrides_app_title():
|
|
class MyScreen(Screen):
|
|
TITLE = "screen title"
|
|
|
|
def compose(self):
|
|
yield Header()
|
|
|
|
class MyApp(App):
|
|
TITLE = "app title"
|
|
|
|
def on_mount(self):
|
|
self.push_screen(MyScreen())
|
|
|
|
app = MyApp()
|
|
async with app.run_test():
|
|
assert app.screen.query_one("HeaderTitle", Static).content == "screen title"
|
|
|
|
|
|
async def test_screen_title_reactive_updates_title():
|
|
class MyScreen(Screen):
|
|
TITLE = "screen title"
|
|
|
|
def compose(self):
|
|
yield Header()
|
|
|
|
class MyApp(App):
|
|
TITLE = "app title"
|
|
|
|
def on_mount(self):
|
|
self.push_screen(MyScreen())
|
|
|
|
app = MyApp()
|
|
async with app.run_test() as pilot:
|
|
app.screen.title = "new screen title"
|
|
await pilot.pause()
|
|
assert app.screen.query_one("HeaderTitle", Static).content == "new screen title"
|
|
|
|
|
|
async def test_app_title_reactive_does_not_update_title_when_screen_title_is_set():
|
|
class MyScreen(Screen):
|
|
TITLE = "screen title"
|
|
|
|
def compose(self):
|
|
yield Header()
|
|
|
|
class MyApp(App):
|
|
TITLE = "app title"
|
|
|
|
def on_mount(self):
|
|
self.push_screen(MyScreen())
|
|
|
|
app = MyApp()
|
|
async with app.run_test() as pilot:
|
|
app.title = "new app title"
|
|
await pilot.pause()
|
|
assert app.screen.query_one("HeaderTitle", Static).content == "screen title"
|
|
|
|
|
|
async def test_screen_sub_title_none_is_ignored():
|
|
class MyScreen(Screen):
|
|
def compose(self):
|
|
yield Header()
|
|
|
|
class MyApp(App):
|
|
SUB_TITLE = "app sub-title"
|
|
|
|
def on_mount(self):
|
|
self.push_screen(MyScreen())
|
|
|
|
app = MyApp()
|
|
async with app.run_test():
|
|
assert (
|
|
app.screen.query_one("HeaderTitle", Static).content
|
|
== "MyApp — app sub-title"
|
|
)
|
|
|
|
|
|
async def test_screen_sub_title_overrides_app_sub_title():
|
|
class MyScreen(Screen):
|
|
SUB_TITLE = "screen sub-title"
|
|
|
|
def compose(self):
|
|
yield Header()
|
|
|
|
class MyApp(App):
|
|
SUB_TITLE = "app sub-title"
|
|
|
|
def on_mount(self):
|
|
self.push_screen(MyScreen())
|
|
|
|
app = MyApp()
|
|
async with app.run_test():
|
|
assert (
|
|
app.screen.query_one("HeaderTitle", Static).content
|
|
== "MyApp — screen sub-title"
|
|
)
|
|
|
|
|
|
async def test_screen_sub_title_reactive_updates_sub_title():
|
|
class MyScreen(Screen):
|
|
SUB_TITLE = "screen sub-title"
|
|
|
|
def compose(self):
|
|
yield Header()
|
|
|
|
class MyApp(App):
|
|
SUB_TITLE = "app sub-title"
|
|
|
|
def on_mount(self):
|
|
self.push_screen(MyScreen())
|
|
|
|
app = MyApp()
|
|
async with app.run_test() as pilot:
|
|
app.screen.sub_title = "new screen sub-title"
|
|
await pilot.pause()
|
|
assert (
|
|
app.screen.query_one("HeaderTitle", Static).content
|
|
== "MyApp — new screen sub-title"
|
|
)
|