File: test_help_text.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 (127 lines) | stat: -rw-r--r-- 4,015 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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import pytest

from tests.utilities.render import render
from textual.css._help_text import (
    align_help_text,
    border_property_help_text,
    color_property_help_text,
    fractional_property_help_text,
    layout_property_help_text,
    offset_property_help_text,
    offset_single_axis_help_text,
    scalar_help_text,
    spacing_invalid_value_help_text,
    spacing_wrong_number_of_values_help_text,
    string_enum_help_text,
    style_flags_property_help_text,
)


@pytest.fixture(params=["css", "inline"])
def styling_context(request):
    return request.param


def test_help_text_examples_are_contextualized():
    """Ensure that if the user is using CSS, they see CSS-specific examples
    and if they're using inline styles they see inline-specific examples."""
    rendered_inline = render(spacing_invalid_value_help_text("padding", "inline"))
    assert "widget.styles.padding" in rendered_inline

    rendered_css = render(spacing_invalid_value_help_text("padding", "css"))
    assert "padding:" in rendered_css


def test_spacing_wrong_number_of_values(styling_context):
    rendered = render(
        spacing_wrong_number_of_values_help_text("margin", 3, styling_context)
    )
    assert "Invalid number of values" in rendered
    assert "margin" in rendered
    assert "3" in rendered


def test_spacing_invalid_value(styling_context):
    rendered = render(spacing_invalid_value_help_text("padding", styling_context))
    assert "Invalid value for" in rendered
    assert "padding" in rendered


def test_scalar_help_text(styling_context):
    rendered = render(scalar_help_text("max-width", styling_context))
    assert "Invalid value for" in rendered

    # Ensure property name is contextualised to inline/css styling
    if styling_context == "css":
        assert "max-width" in rendered
    elif styling_context == "inline":
        assert "max_width" in rendered


def test_string_enum_help_text(styling_context):
    rendered = render(
        string_enum_help_text("display", ["none", "hidden"], styling_context)
    )
    assert "Invalid value for" in rendered

    # Ensure property name is mentioned
    assert "display" in rendered

    # Ensure each valid value is mentioned
    assert "hidden" in rendered
    assert "none" in rendered


def test_color_property_help_text(styling_context):
    rendered = render(color_property_help_text("background", styling_context))
    assert "Invalid value for" in rendered
    assert "background" in rendered


def test_border_property_help_text(styling_context):
    rendered = render(border_property_help_text("border", styling_context))
    assert "Invalid value for" in rendered
    assert "border" in rendered


def test_layout_property_help_text(styling_context):
    rendered = render(layout_property_help_text("layout", styling_context))
    assert "Invalid value for" in rendered
    assert "layout" in rendered


def test_fractional_property_help_text(styling_context):
    rendered = render(fractional_property_help_text("opacity", styling_context))
    assert "Invalid value for" in rendered
    assert "opacity" in rendered


def test_offset_property_help_text(styling_context):
    rendered = render(offset_property_help_text(styling_context))
    assert "Invalid value for" in rendered
    assert "offset" in rendered


def test_align_help_text():
    rendered = render(align_help_text())
    assert "Invalid value for" in rendered
    assert "align" in rendered


def test_offset_single_axis_help_text():
    rendered = render(offset_single_axis_help_text("offset-x"))
    assert "Invalid value for" in rendered
    assert "offset-x" in rendered


def test_style_flags_property_help_text(styling_context):
    rendered = render(
        style_flags_property_help_text("text-style", "notavalue b", styling_context)
    )
    assert "Invalid value" in rendered
    assert "notavalue" in rendered

    if styling_context == "css":
        assert "text-style" in rendered
    else:
        assert "text_style" in rendered