Files
micronomicon/backend/uframe/tests/test_navigation.py
2026-04-03 10:15:30 +02:00

192 lines
5.2 KiB
Python

"""Tests for HNav and VNav navigation components."""
import uframe
# ---------------------------------------------------------------------------
# HNav — Horizontal Navigation
# ---------------------------------------------------------------------------
def test_hnav_bar():
source = '''page "Test" 60
hnav bar
item "Home" "/page/index.mu" active
item "About" "/page/about.mu"
item "Settings" "/page/settings.mu"'''
result = uframe.compile(source)
assert "Home" in result.ascii
assert "About" in result.ascii
assert "Settings" in result.ascii
# Bar style has borders
assert "" in result.ascii or "" in result.ascii
def test_hnav_tabs():
source = '''page "Test" 60
hnav tabs
item "Dashboard" "/page/dash.mu" active
item "Logs" "/page/logs.mu"'''
result = uframe.compile(source)
assert "Dashboard" in result.ascii
assert "Logs" in result.ascii
def test_hnav_pills():
source = '''page "Test" 60
hnav pills
item "All" "/page/all.mu" active
item "Active" "/page/active.mu"
item "Stale" "/page/stale.mu"'''
result = uframe.compile(source)
assert "All" in result.ascii
assert "Active" in result.ascii
assert "Stale" in result.ascii
def test_hnav_breadcrumb():
source = '''page "Test" 60
hnav breadcrumb
item "Home" "/page/index.mu"
item "Network" "/page/network.mu"
item "Node Alpha" "/page/alpha.mu" active'''
result = uframe.compile(source)
assert "Home" in result.ascii
assert "Network" in result.ascii
assert "Node Alpha" in result.ascii
# Breadcrumb uses ▸ separator
assert "" in result.ascii
def test_hnav_underline():
source = '''page "Test" 60
hnav underline
item "Overview" "/page/overview.mu" active
item "Details" "/page/details.mu"'''
result = uframe.compile(source)
assert "Overview" in result.ascii
assert "Details" in result.ascii
# Active item has underline
assert "" in result.ascii
def test_hnav_with_separator():
source = '''page "Test" 60
hnav bar
item "Home" "/page/index.mu" active
separator
item "Help" "/page/help.mu"'''
result = uframe.compile(source)
assert "Home" in result.ascii
assert "Help" in result.ascii
def test_hnav_micron_links():
source = '''page "Test" 60
hnav bar
item "Home" "/page/index.mu"
item "About" "/page/about.mu"'''
result = uframe.compile(source)
assert "index.mu" in result.micron
assert "about.mu" in result.micron
# ---------------------------------------------------------------------------
# VNav — Vertical Navigation
# ---------------------------------------------------------------------------
def test_vnav_list():
source = '''page "Test" 60
vnav list
item "Dashboard" "/page/dash.mu" active
item "Peers" "/page/peers.mu"
item "Routes" "/page/routes.mu"'''
result = uframe.compile(source)
assert "Dashboard" in result.ascii
assert "Peers" in result.ascii
assert "Routes" in result.ascii
# Active item has marker
assert "" in result.ascii
def test_vnav_boxed():
source = '''page "Test" 60
vnav boxed
item "Home" "/page/index.mu" active
item "Settings" "/page/settings.mu"'''
result = uframe.compile(source)
assert "Home" in result.ascii
assert "Settings" in result.ascii
# Boxed style has borders
assert "" in result.ascii
assert "" in result.ascii
def test_vnav_tree():
source = '''page "Test" 60
vnav tree
item "Root" "/page/root.mu" active
item "Child A" "/page/a.mu"
item "Child B" "/page/b.mu"'''
result = uframe.compile(source)
assert "Root" in result.ascii
assert "Child A" in result.ascii
assert "Child B" in result.ascii
# Tree style has connectors
assert "" in result.ascii or "" in result.ascii
def test_vnav_sidebar():
source = '''page "Test" 60
vnav sidebar
item "Overview" "/page/overview.mu" active
item "Metrics" "/page/metrics.mu"
item "Alerts" "/page/alerts.mu"'''
result = uframe.compile(source)
assert "Overview" in result.ascii
assert "Metrics" in result.ascii
assert "Alerts" in result.ascii
def test_vnav_minimal():
source = '''page "Test" 60
vnav minimal
item "Page 1" "/page/1.mu"
item "Page 2" "/page/2.mu" active
item "Page 3" "/page/3.mu"'''
result = uframe.compile(source)
assert "Page 1" in result.ascii
assert "Page 2" in result.ascii
assert "Page 3" in result.ascii
def test_vnav_with_separator():
source = '''page "Test" 60
vnav list
item "Home" "/page/index.mu" active
separator
item "Help" "/page/help.mu"'''
result = uframe.compile(source)
assert "Home" in result.ascii
assert "Help" in result.ascii
assert "" in result.ascii
def test_vnav_with_width():
source = '''page "Test" 60
vnav boxed 25
item "Nav Item" "/page/nav.mu" active'''
result = uframe.compile(source)
assert "Nav Item" in result.ascii
def test_vnav_micron_links():
source = '''page "Test" 60
vnav list
item "Home" "/page/index.mu"
item "About" "/page/about.mu"'''
result = uframe.compile(source)
assert "index.mu" in result.micron
assert "about.mu" in result.micron