File: test_inheritance.py

package info (click to toggle)
textual 2.1.2-1.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 55,080 kB
  • sloc: python: 85,423; lisp: 1,669; makefile: 101
file content (39 lines) | stat: -rw-r--r-- 892 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import pytest

from textual.app import App, ComposeResult
from textual.color import Color
from textual.widget import Widget


class Widget1(Widget):
    DEFAULT_CSS = """
    Widget1 {
        background: red;
    }
    """


class Widget2(Widget1):
    DEFAULT_CSS = """
    Widget1 {
        background: green;
    }
    """


# TODO: tie breaker on CSS
@pytest.mark.xfail(
    reason="Overlapping styles should prioritize the most recent widget in the inheritance chain"
)
async def test_inheritance():
    class InheritanceApp(App):
        def compose(self) -> ComposeResult:
            yield Widget1(id="widget1")
            yield Widget2(id="widget2")

    app = InheritanceApp()
    async with app.run_test():
        widget1 = app.query_one("#widget1", Widget1)
        widget2 = app.query_one("#widget2", Widget2)

        assert widget2.styles.background == Color.parse("green")