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"
 | |
|         )
 | 
