Files
MISF-Planner-Download/tests/test_nav_helpers.py
T

69 lines
1.9 KiB
Python

"""Unit tests for Planner left-nav helpers."""
from __future__ import annotations
from unittest.mock import MagicMock
from selenium.webdriver.common.by import By
from onedrive_planner import (
_left_nav_pane_collapsed,
_my_plans_nav_visible,
)
def _nav_toggle(*, expanded: str = "false", displayed: bool = True):
btn = MagicMock()
btn.is_displayed.return_value = displayed
btn.get_attribute.side_effect = lambda name: expanded if name == "aria-expanded" else ""
return btn
def _nav_link(*, displayed: bool = True, enabled: bool = True):
el = MagicMock()
el.is_displayed.return_value = displayed
el.is_enabled.return_value = enabled
return el
def _mock_driver(*, elements: dict):
drv = MagicMock()
drv.find_elements.side_effect = lambda by, sel: elements.get((by, sel), [])
return drv
class TestNavHelpers:
def test_collapsed_when_aria_expanded_false(self):
drv = _mock_driver(
elements={
(By.XPATH, "//button[@aria-label='Left navigation pane']"): [
_nav_toggle(expanded="false")
],
}
)
assert _left_nav_pane_collapsed(drv)
def test_not_collapsed_when_aria_expanded_true(self):
drv = _mock_driver(
elements={
(By.XPATH, "//button[@aria-label='Left navigation pane']"): [
_nav_toggle(expanded="true")
],
}
)
assert not _left_nav_pane_collapsed(drv)
def test_my_plans_visible(self):
drv = _mock_driver(
elements={
(
By.XPATH,
"//*[self::span or self::div][normalize-space()='My plans']",
): [_nav_link()],
}
)
assert _my_plans_nav_visible(drv)
def test_my_plans_hidden(self):
drv = _mock_driver(elements={})
assert not _my_plans_nav_visible(drv)