File: test_visible.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 (78 lines) | stat: -rw-r--r-- 2,647 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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
from textual.app import App, ComposeResult
from textual.containers import VerticalScroll
from textual.widget import Widget


async def test_visibility_changes() -> None:
    """Test changing visibility via code and CSS.

    See https://github.com/Textualize/textual/issues/1355 as the motivation for these tests.
    """

    class VisibleTester(App[None]):
        """An app for testing visibility changes."""

        CSS = """
        Widget {
            height: 1fr;
        }
        .hidden {
            visibility: hidden;
        }
        """

        def compose(self) -> ComposeResult:
            yield VerticalScroll(
                Widget(id="keep"), Widget(id="hide-via-code"), Widget(id="hide-via-css")
            )

    async with VisibleTester().run_test() as pilot:
        assert pilot.app.query_one("#keep").visible is True
        assert pilot.app.query_one("#hide-via-code").visible is True
        assert pilot.app.query_one("#hide-via-css").visible is True

        pilot.app.query_one("#hide-via-code").styles.visibility = "hidden"
        await pilot.pause(0)
        assert pilot.app.query_one("#keep").visible is True
        assert pilot.app.query_one("#hide-via-code").visible is False
        assert pilot.app.query_one("#hide-via-css").visible is True

        pilot.app.query_one("#hide-via-css").set_class(True, "hidden")
        await pilot.pause(0)
        assert pilot.app.query_one("#keep").visible is True
        assert pilot.app.query_one("#hide-via-code").visible is False
        assert pilot.app.query_one("#hide-via-css").visible is False


async def test_visible_is_inherited() -> None:
    """Regression test for https://github.com/Textualize/textual/issues/3071"""

    class InheritedVisibilityApp(App[None]):
        CSS = """
        #four {
            visibility: visible;
        }

        #six {
            visibility: hidden;
        }
        """

        def compose(self):
            yield Widget(id="one")
            with VerticalScroll(id="two"):
                yield Widget(id="three")
                with VerticalScroll(id="four"):
                    yield Widget(id="five")
                    with VerticalScroll(id="six"):
                        yield Widget(id="seven")

    app = InheritedVisibilityApp()
    async with app.run_test():
        assert app.query_one("#one").visible
        assert app.query_one("#two").visible
        assert app.query_one("#three").visible
        assert app.query_one("#four").visible
        assert app.query_one("#five").visible
        assert not app.query_one("#six").visible
        assert not app.query_one("#seven").visible