Added Application HolidayViewer

This commit is contained in:
Kodjo Sossouvi
2025-06-27 07:26:58 +02:00
parent 66ea45f501
commit 9f4b8ab4d0
87 changed files with 3756 additions and 212 deletions

View File

@@ -1,15 +1,9 @@
from collections import OrderedDict
import pandas as pd
import pytest
from fastcore.basics import NotStr
from fastcore.xml import to_xml
from fasthtml.components import *
from components.datagrid.DataGrid import DataGrid
from helpers import matches, search_elements_by_name, search_elements_by_path, extract_table_values, get_from_html, \
extract_popup_content, \
Empty, get_path_attributes, find_first_match, StartsWith, search_first_with_attribute, Contains
from components.debugger.components.JsonViewer import JsonViewer
from helpers import *
@pytest.fixture
@@ -329,3 +323,118 @@ def test_i_can_search_first_with_attribute(tag, attr, expected, sample_structure
assert result.tag == expected[0]
assert attr in result.attrs
assert result.attrs[attr] == expected[1]
# Add tests for extract_jsonviewer_node
def test_extract_jsonviewer_node():
# Create a valid JsonViewer node element
element = Div(
span_icon("expanded"),
Span("key : "),
Span("value")
)
result = extract_jsonviewer_node(element)
assert result is not None
assert result.is_expanded is True
assert result.key == "key"
assert result.value == element.children[2]
assert result.debug_key == element.children[1]
assert result.debug_folding == element.children[0]
def test_extract_jsonviewer_node_collapsed():
# Create a collapsed JsonViewer node element
element = Div(
span_icon("collapsed"),
Span("key : "),
Span("value")
)
result = extract_jsonviewer_node(element)
assert result is not None
assert result.is_expanded is False
assert result.key == "key"
assert result.value == element.children[2]
def test_extract_jsonviewer_node_no_expansion_state():
# Create a JsonViewer node with no expansion state
element = Div(
Span(),
Span("key : "),
Span("value")
)
result = extract_jsonviewer_node(element)
assert result is not None
assert result.is_expanded is None
assert result.key == "key"
assert result.value == element.children[2]
def test_extract_jsonviewer_node_root_node():
# Create a root JsonViewer node (no key)
element = Div(
span_icon("expanded"),
None,
Span("value")
)
result = extract_jsonviewer_node(element)
assert result is not None
assert result.is_expanded is True
assert result.key is None
assert result.value == element.children[2]
def test_extract_jsonviewer_node_invalid_structure():
# Test with invalid node structure (not enough children)
element = Div(
span_icon("expanded"),
Span("key : ")
)
result = extract_jsonviewer_node(element)
assert result is None
# Test with element that has no children attribute
element = "not an element with children"
result = extract_jsonviewer_node(element)
assert result is None
def test_json_viewer_find():
value = {"a": [1, 2, 3], "b": {"x": "y", "z": True}}
jsonviewer = JsonViewer(None, None, None, None, value)
elements = jsonviewer.__ft__()
root_div = search_elements_by_name(elements, "div", attrs={"id": f"{jsonviewer.get_id()}-root"})[0]
first_level_div = root_div.children[0]
as_node = extract_jsonviewer_node(first_level_div)
child_b = as_node.find("b")
assert isinstance(child_b, JsonViewerNode)
assert child_b.key == "b"
def test_json_viewer_find_with_path():
value = {"a": {"x": None, "y": ["first", "second"], "z": True}}
jsonviewer = JsonViewer(None, None, None, None, value)
jsonviewer.set_folding_mode("expand")
elements = jsonviewer.__ft__()
root_div = search_elements_by_name(elements, "div", attrs={"id": f"{jsonviewer.get_id()}-root"})[0]
first_level_div = root_div.children[0]
as_node = extract_jsonviewer_node(first_level_div)
child = as_node.find("a.y.0")
assert isinstance(child, JsonViewerNode)
assert child.key == "0"