Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
"""Tests for board column detection helpers."""
|
|
from __future__ import annotations
|
|
|
|
from unittest.mock import MagicMock
|
|
|
|
from selenium.common.exceptions import InvalidSelectorException
|
|
|
|
from onedrive_planner import (
|
|
_FIRST_COLUMN_CLUSTER_WIDTH_PX,
|
|
_element_in_board_container,
|
|
_parent_element,
|
|
)
|
|
|
|
|
|
def test_first_column_cluster_width_reasonable():
|
|
assert _FIRST_COLUMN_CLUSTER_WIDTH_PX >= 150
|
|
|
|
|
|
def test_parent_element_stops_at_html_document_error():
|
|
"""ChromeDriver rejects .. on <html> with InvalidSelectorException."""
|
|
html = MagicMock()
|
|
html.tag_name = "html"
|
|
html.find_element.side_effect = InvalidSelectorException(
|
|
'The result of the xpath expression ".." is: [object HTMLDocument].'
|
|
)
|
|
assert _parent_element(html) is None
|
|
|
|
|
|
def test_parent_element_returns_parent_for_body():
|
|
body = MagicMock()
|
|
body.tag_name = "body"
|
|
parent = MagicMock()
|
|
parent.tag_name = "html"
|
|
body.find_element.return_value = parent
|
|
assert _parent_element(body) is parent
|
|
|
|
|
|
def test_element_in_board_container_does_not_crash_at_root():
|
|
"""Containment walk must not raise when ancestors hit document root."""
|
|
child = MagicMock()
|
|
child.tag_name = "div"
|
|
container = MagicMock()
|
|
container.tag_name = "div"
|
|
|
|
html = MagicMock()
|
|
html.tag_name = "html"
|
|
html.find_element.side_effect = InvalidSelectorException("document root")
|
|
|
|
body = MagicMock()
|
|
body.tag_name = "body"
|
|
body.find_element.return_value = html
|
|
|
|
child.find_element.return_value = body
|
|
|
|
assert _element_in_board_container(child, container) is False
|