mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
103 lines
3.4 KiB
Python
103 lines
3.4 KiB
Python
from textual.app import App, ComposeResult
|
|
from textual.color import Color
|
|
from textual.containers import Container
|
|
from textual.css.scalar import ScalarOffset
|
|
|
|
|
|
class StyleApp(App[None]):
|
|
CSS = """
|
|
Container {
|
|
border: round green !important;
|
|
outline: round green !important;
|
|
align: right bottom !important;
|
|
content-align: right bottom !important;
|
|
offset: 17 23 !important;
|
|
overflow: hidden hidden !important;
|
|
padding: 10 20 30 40 !important;
|
|
scrollbar-size: 23 42 !important;
|
|
}
|
|
|
|
Container.more-specific {
|
|
border: solid red;
|
|
outline: solid red;
|
|
align: center middle;
|
|
content-align: center middle;
|
|
offset: 0 0;
|
|
overflow: scroll scroll;
|
|
padding: 1 2 3 4;
|
|
scrollbar-size: 1 2;
|
|
}
|
|
"""
|
|
|
|
def compose(self) -> ComposeResult:
|
|
yield Container(classes="more-specific")
|
|
|
|
|
|
async def test_border_importance():
|
|
"""Border without sides should support !important"""
|
|
async with StyleApp().run_test() as pilot:
|
|
border = pilot.app.query_one(Container).styles.border
|
|
desired = ("round", Color.parse("green"))
|
|
assert border.top == desired
|
|
assert border.left == desired
|
|
assert border.bottom == desired
|
|
assert border.right == desired
|
|
|
|
|
|
async def test_outline_importance():
|
|
"""Outline without sides should support !important"""
|
|
async with StyleApp().run_test() as pilot:
|
|
outline = pilot.app.query_one(Container).styles.outline
|
|
desired = ("round", Color.parse("green"))
|
|
assert outline.top == desired
|
|
assert outline.left == desired
|
|
assert outline.bottom == desired
|
|
assert outline.right == desired
|
|
|
|
|
|
async def test_align_importance():
|
|
"""Align without direction should support !important"""
|
|
async with StyleApp().run_test() as pilot:
|
|
assert pilot.app.query_one(Container).styles.align == ("right", "bottom")
|
|
|
|
|
|
async def test_content_align_importance():
|
|
"""Content align without direction should support !important"""
|
|
async with StyleApp().run_test() as pilot:
|
|
assert pilot.app.query_one(Container).styles.content_align == (
|
|
"right",
|
|
"bottom",
|
|
)
|
|
|
|
|
|
async def test_offset_importance():
|
|
"""Offset without direction should support !important"""
|
|
async with StyleApp().run_test() as pilot:
|
|
assert pilot.app.query_one(Container).styles.offset == ScalarOffset.from_offset(
|
|
(17, 23)
|
|
)
|
|
|
|
|
|
async def test_overflow_importance():
|
|
"""Overflow without direction should support !important"""
|
|
async with StyleApp().run_test() as pilot:
|
|
assert pilot.app.query_one(Container).styles.overflow_x == "hidden"
|
|
assert pilot.app.query_one(Container).styles.overflow_y == "hidden"
|
|
|
|
|
|
async def test_padding_importance():
|
|
"""Padding without sides should support !important"""
|
|
async with StyleApp().run_test() as pilot:
|
|
padding = pilot.app.query_one(Container).styles.padding
|
|
assert padding.top == 10
|
|
assert padding.left == 40
|
|
assert padding.bottom == 30
|
|
assert padding.right == 20
|
|
|
|
|
|
async def test_scrollbar_size_importance():
|
|
"""Scrollbar size without direction should support !important"""
|
|
async with StyleApp().run_test() as pilot:
|
|
assert pilot.app.query_one(Container).styles.scrollbar_size_horizontal == 23
|
|
assert pilot.app.query_one(Container).styles.scrollbar_size_vertical == 42
|