1
0
Fork 0
textual-autocomplete/tests/snapshots/test_styling.py
Daniel Baumann 0832c185c0
Adding upstream version 4.0.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-05-04 22:09:41 +02:00

112 lines
3.1 KiB
Python

from __future__ import annotations
from textual.app import App, ComposeResult
from textual.pilot import Pilot
from textual.widgets import Input
from textual_autocomplete import AutoComplete
class StyledAutocomplete(App[None]):
def compose(self) -> ComposeResult:
input = Input(placeholder="Search...")
input.cursor_blink = False
yield input
yield AutoComplete(target=input, candidates=["foo", "bar", "baz", "qux"])
def test_foreground_color_and_text_style(snap_compare):
"""Background color should not be impacted by the text foreground and style."""
StyledAutocomplete.CSS = """
AutoComplete {
& .autocomplete--highlight-match {
color: $text-accent;
text-style: bold italic underline;
}
}
"""
async def run_before(pilot: Pilot) -> None:
await pilot.press(*"ba")
assert snap_compare(StyledAutocomplete(), run_before=run_before)
def test_background_color_and_removed_style(snap_compare):
StyledAutocomplete.CSS = """
AutoComplete {
& .autocomplete--highlight-match {
color: $text-accent;
background: $success-muted;
text-style: not bold;
}
}
"""
async def run_before(pilot: Pilot) -> None:
await pilot.press(*"ba")
assert snap_compare(StyledAutocomplete(), run_before=run_before)
def test_max_height_and_scrolling(snap_compare):
"""We should be scrolled to qux, and the red scrollbar should reflect that."""
StyledAutocomplete.CSS = """
AutoComplete {
& AutoCompleteList {
scrollbar-color: red;
max-height: 2;
}
}
"""
async def run_before(pilot: Pilot) -> None:
await pilot.press("down", "down", "down", "down")
assert snap_compare(StyledAutocomplete(), run_before=run_before)
def test_dropdown_styles_match_textual_theme(snap_compare):
"""Dropdown styles should match the textual theme. In this test, we've swapped the theme to nord."""
StyledAutocomplete.CSS = """
AutoComplete {
& .autocomplete--highlight-match {
color: $text-accent;
}
}
"""
async def run_before(pilot: Pilot) -> None:
pilot.app.theme = "nord"
await pilot.press(*"ba")
assert snap_compare(StyledAutocomplete(), run_before=run_before)
def test_cursor_color_change_and_dropdown_background_change(snap_compare):
"""Checking various interactions between styles. See the test's CSS for info."""
StyledAutocomplete.CSS = """
AutoComplete {
& AutoCompleteList {
color: red;
background: $error-muted;
& > .option-list--option-highlighted {
color: $text-primary;
background: magenta;
text-style: italic;
}
}
& .autocomplete--highlight-match {
color: $text-success;
background: $success-muted;
text-style: underline;
}
}
"""
async def run_before(pilot: Pilot) -> None:
await pilot.press(*"ba")
assert snap_compare(StyledAutocomplete(), run_before=run_before)