#!/usr/bin/env python3 import sys import os sys.path.insert(0, os.path.join(os.path.dirname(__file__), '../..')) from changedetectionio.widgets import TernaryNoneBooleanField from wtforms import Form class TestForm(Form): # Default text default_field = TernaryNoneBooleanField('Default Field', default=None) # Custom text with HTML icons notification_field = TernaryNoneBooleanField( 'Notifications', default=False, yes_text='šŸ”• Muted', no_text='šŸ”” Unmuted', none_text='āš™ļø System default' ) # HTML with styling styled_field = TernaryNoneBooleanField( 'Status', default=None, yes_text='āœ… Active', no_text='āŒ Inactive', none_text='šŸ”§ Auto' ) # Boolean mode with custom text boolean_field = TernaryNoneBooleanField( 'Boolean Field', default=True, boolean_mode=True, yes_text="Enabled", no_text="Disabled" ) # FontAwesome example fontawesome_field = TernaryNoneBooleanField( 'Notifications with FontAwesome', default=None, yes_text=' Muted', no_text=' Unmuted', none_text=' System default' ) def test_custom_text(): """Test custom text functionality""" form = TestForm() print("=== Testing TernaryNoneBooleanField Custom Text ===") # Test default field print("\n--- Default Field ---") default_field = form.default_field default_html = default_field.widget(default_field) print(f"Contains 'Yes': {'Yes' in default_html}") print(f"Contains 'No': {'No' in default_html}") print(f"Contains 'Default': {'Default' in default_html}") assert 'Yes' in default_html and 'No' in default_html and 'Default' in default_html # Test custom text field print("\n--- Custom Text Field with Emojis ---") notification_field = form.notification_field notification_html = notification_field.widget(notification_field) print(f"Contains 'šŸ”• Muted': {'šŸ”• Muted' in notification_html}") print(f"Contains 'šŸ”” Unmuted': {'šŸ”” Unmuted' in notification_html}") print(f"Contains 'āš™ļø System default': {'āš™ļø System default' in notification_html}") print(f"Does NOT contain 'Yes': {'Yes' not in notification_html}") print(f"Does NOT contain 'No': {'No' not in notification_html}") assert 'šŸ”• Muted' in notification_html and 'šŸ”” Unmuted' in notification_html assert 'Yes' not in notification_html and 'No' not in notification_html # Test HTML styling print("\n--- HTML Styled Field ---") styled_field = form.styled_field styled_html = styled_field.widget(styled_field) print(f"Contains HTML tags: {'