52 lines
2.0 KiB
Python
52 lines
2.0 KiB
Python
from pathlib import Path
|
|
|
|
from src.frontend_bundle import build_frontend
|
|
|
|
|
|
ROOT = Path(__file__).parents[1]
|
|
FRONTEND = ROOT / "frontend"
|
|
|
|
|
|
def test_search_preview_exposes_accessible_plan_ahead_sheet_and_packaged_controller():
|
|
html = (FRONTEND / "index.html").read_text()
|
|
build = build_frontend(FRONTEND)
|
|
|
|
assert 'id="plan-search-result"' in html
|
|
assert 'id="search-week-plan-sheet" role="dialog" aria-modal="true"' in html
|
|
assert 'aria-labelledby="search-week-plan-title"' in html
|
|
assert 'id="search-week-plan-days"' in html
|
|
assert 'id="search-week-plan-estimate"' in html
|
|
assert 'id="confirm-search-week-plan"' in html
|
|
assert 'id="cancel-search-week-plan"' in html
|
|
assert "static/search-week-plan.js" in build.page_sources
|
|
assert b"createSearchWeekPlan" in build.feature_bundles["planning"].runtime_bytes
|
|
|
|
|
|
def test_search_plan_ahead_ui_connects_eligibility_preview_and_truthful_outcomes():
|
|
dashboard = (FRONTEND / "dashboard.js").read_text()
|
|
source = (FRONTEND / "search-week-plan.js").read_text()
|
|
|
|
assert "const searchWeekPlan = createSearchWeekPlan" in dashboard
|
|
assert "createSearchWeekPlanUI" in dashboard
|
|
assert "planButton.hidden = !searchWeekPlan.eligible(detail)" in dashboard
|
|
assert "await planner.preview(detail)" in source
|
|
assert "overload-confirmation-required" in source
|
|
assert "assigned-not-planned" in source
|
|
assert "planned-pending" in source
|
|
assert "Already planned for" in source
|
|
assert "planner.pending()" in source
|
|
assert "searchWeekPlan:true" in source
|
|
assert "if(!qs('#search-week-plan-sheet').hidden)" in source
|
|
assert "window.history.back()" in source
|
|
|
|
|
|
def test_search_plan_ahead_sheet_is_phone_safe_and_touch_sized():
|
|
css = (FRONTEND / "dashboard.css").read_text()
|
|
|
|
assert ".search-week-plan-sheet" in css
|
|
assert "padding-bottom:calc(18px + env(safe-area-inset-bottom))" in css
|
|
assert ".search-week-plan-days button" in css
|
|
assert "min-height:44px" in css
|
|
assert "overflow-x:hidden" in css
|
|
assert "@media (max-width:359px)" in css
|