Spaces:
Runtime error
Runtime error
File size: 3,698 Bytes
7ab7df1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | """Tests for ui/components.py module."""
from unittest.mock import MagicMock, patch
import pytest
from ui.components import CUSTOM_CSS, create_ui_components
def test_custom_css():
"""Test that CUSTOM_CSS is defined."""
assert isinstance(CUSTOM_CSS, str)
assert len(CUSTOM_CSS) > 0
assert ".generating" in CUSTOM_CSS
assert "h1" in CUSTOM_CSS
@patch("ui.components.gr")
def test_create_ui_components(mock_gr):
"""Test create_ui_components function."""
# Create mock components
mock_components = {
"rag_enabled": MagicMock(),
"search_type": MagicMock(),
"doc_filter": MagicMock(),
"query_rewriting": MagicMock(),
"reranking": MagicMock(),
"hybrid_alpha": MagicMock(),
"chatbot": MagicMock(),
"context_box": MagicMock(),
"msg": MagicMock(),
"submit": MagicMock(),
"clear": MagicMock(),
"search_col": MagicMock(),
"filter_col": MagicMock(),
"context_section": MagicMock(),
"advanced_options": MagicMock(),
}
# Setup Blocks mock
mock_blocks = MagicMock()
mock_blocks.__enter__ = MagicMock(return_value=mock_blocks)
mock_blocks.__exit__ = MagicMock(return_value=None)
mock_gr.Blocks.return_value = mock_blocks
# Setup context manager mocks
def create_context_manager(name):
cm = MagicMock()
cm.__enter__ = MagicMock(return_value=cm)
cm.__exit__ = MagicMock(return_value=None)
return cm
mock_gr.Row.return_value = create_context_manager("Row")
mock_gr.Column.return_value = create_context_manager("Column")
mock_gr.Accordion.return_value = create_context_manager("Accordion")
# Setup component mocks
mock_gr.Markdown.return_value = MagicMock()
mock_gr.Checkbox.return_value = mock_components["rag_enabled"]
mock_gr.Radio.return_value = mock_components["search_type"]
mock_gr.Dropdown.return_value = mock_components["doc_filter"]
mock_gr.Slider.return_value = mock_components["hybrid_alpha"]
mock_gr.Chatbot.return_value = mock_components["chatbot"]
mock_gr.Textbox.return_value = mock_components["msg"]
mock_gr.Button.side_effect = [mock_components["submit"], mock_components["clear"]]
mock_gr.Examples.return_value = MagicMock()
# Test
result = create_ui_components(["test1.pdf", "test2.pdf"])
assert isinstance(result, dict)
assert "demo" in result
assert "rag_enabled" in result
assert "search_type" in result
assert "doc_filter" in result
assert "chatbot" in result
assert "msg" in result
assert "submit" in result
assert "clear" in result
def test_create_ui_components_empty_sources():
"""Test create_ui_components with empty sources."""
with patch("ui.components.gr") as mock_gr:
mock_blocks = MagicMock()
mock_blocks.__enter__ = MagicMock(return_value=mock_blocks)
mock_blocks.__exit__ = MagicMock(return_value=None)
mock_gr.Blocks.return_value = mock_blocks
# Mock all components
for attr in ["Markdown", "Row", "Column", "Accordion", "Checkbox", "Radio",
"Dropdown", "Slider", "Chatbot", "Textbox", "Button", "Examples"]:
setattr(mock_gr, attr, MagicMock())
# Mock context managers
for cm in ["Row", "Column", "Accordion"]:
mock_cm = MagicMock()
mock_cm.__enter__ = MagicMock(return_value=mock_cm)
mock_cm.__exit__ = MagicMock(return_value=None)
getattr(mock_gr, cm).return_value = mock_cm
result = create_ui_components([])
assert isinstance(result, dict)
assert "doc_filter" in result
|