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 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
|
from typing import Awaitable, Callable, List
import pytest
from harlequin import Harlequin
@pytest.mark.asyncio
async def test_toggle_sidebar(
app: Harlequin,
app_snapshot: Callable[..., Awaitable[bool]],
wait_for_workers: Callable[[Harlequin], Awaitable[None]],
) -> None:
snap_results: List[bool] = []
async with app.run_test() as pilot:
await wait_for_workers(app)
while app.editor is None or app.data_catalog.database_tree.loading:
await pilot.pause()
# initialization
sidebar = app.data_catalog
assert not sidebar.disabled
assert sidebar.styles.width
assert sidebar.styles.width.value > 0
snap_results.append(await app_snapshot(app, "Initialization"))
await pilot.press("ctrl+b")
assert sidebar.disabled
assert sidebar.styles.width
assert sidebar.styles.width.value == 0
snap_results.append(await app_snapshot(app, "Hidden"))
await pilot.press("ctrl+b")
assert not sidebar.disabled
assert sidebar.styles.width
assert sidebar.styles.width.value > 0
snap_results.append(await app_snapshot(app, "Unhidden"))
await pilot.press("f9")
assert sidebar.disabled
assert sidebar.styles.width
assert sidebar.styles.width.value == 0
snap_results.append(await app_snapshot(app, "Hidden Again"))
assert all(snap_results)
@pytest.mark.asyncio
async def test_toggle_full_screen(
app: Harlequin,
app_snapshot: Callable[..., Awaitable[bool]],
wait_for_workers: Callable[[Harlequin], Awaitable[None]],
) -> None:
snap_results: List[bool] = []
async with app.run_test() as pilot:
await wait_for_workers(app)
while app.editor is None:
await pilot.pause()
# initialization; all visible
app.editor.focus()
assert app.full_screen is False
assert app.sidebar_hidden is False
widgets = [app.data_catalog, app.editor_collection, app.results_viewer]
for w in widgets:
assert not w.disabled
assert w.styles.width
assert w.styles.width.value > 0
snap_results.append(await app_snapshot(app, "Initialization"))
await pilot.press("f10")
# only editor visible
assert not app.editor_collection.disabled
assert not app.editor.disabled
assert not app.run_query_bar.disabled
assert app.editor_collection.styles.width
assert app.editor_collection.styles.width.value > 0
for w in [w for w in widgets if w != app.editor_collection]:
assert w.disabled
assert w.styles.width
assert w.styles.width.value == 0
snap_results.append(await app_snapshot(app, "Editor Full Screen"))
await pilot.press("ctrl+b")
# editor and data catalog should be visible
assert not app.sidebar_hidden
assert not app.data_catalog.disabled
assert app.full_screen
assert not app.editor_collection.disabled
assert not app.editor.disabled
snap_results.append(await app_snapshot(app, "Editor Full Screen with Sidebar"))
await pilot.press("f10")
# all visible
for w in widgets:
assert not w.disabled
assert w.styles.width
assert w.styles.width.value > 0
snap_results.append(
await app_snapshot(app, "Exit Full Screen (sidebar already visible)")
)
await pilot.press("ctrl+b")
# data catalog hidden
assert app.sidebar_hidden
assert app.data_catalog.disabled
assert not app.editor_collection.disabled
assert not app.editor.disabled
snap_results.append(await app_snapshot(app, "Sidebar hidden"))
await pilot.press("f10")
# only editor visible
assert not app.editor_collection.disabled
assert not app.editor.disabled
assert app.data_catalog.disabled
assert app.results_viewer.disabled
snap_results.append(
await app_snapshot(app, "Editor Full Screen (sidebar already hidden)")
)
await pilot.press("f10")
# data catalog should still be hidden
assert not app.editor_collection.disabled
assert not app.editor.disabled
assert not app.run_query_bar.disabled
assert app.data_catalog.disabled
assert not app.results_viewer.disabled
snap_results.append(
await app_snapshot(app, "Exit Full Screen (sidebar remains hidden)")
)
app.editor.text = "select 1"
await pilot.press("ctrl+j")
app.results_viewer.focus()
await pilot.press("f10")
# only results viewer should be visible
assert app.editor_collection.disabled
assert app.run_query_bar.disabled
assert app.data_catalog.disabled
assert not app.results_viewer.disabled
snap_results.append(await app_snapshot(app, "Results Viewer Full Screen"))
await pilot.press("f9")
# results viewer and data catalog should be visible
assert not app.sidebar_hidden
assert not app.data_catalog.disabled
assert app.full_screen
assert app.editor_collection.disabled
assert app.run_query_bar.disabled
assert not app.results_viewer.disabled
snap_results.append(
await app_snapshot(app, "Results Viewer Full Screen with Sidebar")
)
await pilot.press("f10")
# all visible
assert not app.sidebar_hidden
assert not app.full_screen
for w in widgets:
assert not w.disabled
assert w.styles.width
assert w.styles.width.value > 0
snap_results.append(
await app_snapshot(app, "Exit RV Full Screen (sidebar visible)")
)
assert all(snap_results)
|