#!/usr/bin/env python3 """ Test status bar visibility by triggering an error message manually. """ import asyncio from unittest.mock import patch, Mock from src.hosts.tui.app import HostsManagerApp async def test_status_bar_visibility(): """Test that the status bar becomes visible when an error occurs.""" print("Testing status bar visibility...") with patch('hosts.tui.app.HostsParser') as mock_parser_cls, \ patch('hosts.tui.app.Config') as mock_config_cls: # Set up mocks mock_parser = Mock() mock_config = Mock() mock_parser_cls.return_value = mock_parser mock_config_cls.return_value = mock_config # Create app app = HostsManagerApp() # Mock the query_one method to capture status bar interactions mock_status_bar = Mock() original_query_one = app.query_one def mock_query_one(selector, widget_type=None): if selector == "#status-bar": return mock_status_bar return original_query_one(selector, widget_type) app.query_one = mock_query_one # Test updating status with error message print("šŸ”§ Triggering error message...") app.update_status("āŒ Test error message") # Verify status bar operations print("āœ… Status bar operations:") print(f" - update() called: {mock_status_bar.update.called}") print(f" - remove_class('hidden') called: {mock_status_bar.remove_class.called}") if mock_status_bar.update.called: call_args = mock_status_bar.update.call_args[0] print(f" - Message passed: '{call_args[0]}'") # Test clearing status print("\nšŸ”§ Clearing status message...") app._clear_status_message() print("āœ… Clear operations:") print(f" - update('') called: {mock_status_bar.update.call_count > 1}") print(f" - add_class('hidden') called: {mock_status_bar.add_class.called}") if __name__ == "__main__": asyncio.run(test_status_bar_visibility())