File: C:/Users/fred/anaconda3/Lib/site-packages/panel/tests/widgets/test_button.py
from bokeh.events import ButtonClick, MenuItemClick
from panel.widgets import Button, MenuButton, Toggle
def test_button(document, comm):
button = Button(name='Button')
widget = button.get_root(document, comm=comm)
assert isinstance(widget, button._widget_type)
assert widget.label == 'Button'
button._process_event(None)
assert button.clicks == 1
def test_button_event(document, comm):
button = Button(name='Button')
widget = button.get_root(document, comm=comm)
events = []
def callback(event):
events.append(event.new)
button.param.watch(callback, 'value')
assert button.value == False
button._process_event(ButtonClick(widget))
assert events == [True]
assert button.value == False
def test_menu_button(document, comm):
menu_items = [('Option A', 'a'), ('Option B', 'b'), ('Option C', 'c'), None, ('Help', 'help')]
menu_button = MenuButton(items=menu_items)
widget = menu_button.get_root(document, comm=comm)
events = []
def callback(event):
events.append(event.new)
menu_button.param.watch(callback, 'clicked')
menu_button._process_event(MenuItemClick(widget, 'b'))
assert events == ['b']
def test_button_jscallback_clicks(document, comm):
button = Button(name='Button')
code = 'console.log("Clicked!")'
button.jscallback(clicks=code)
widget = button.get_root(document, comm=comm)
assert len(widget.js_event_callbacks) == 1
callbacks = widget.js_event_callbacks
assert 'button_click' in callbacks
assert len(callbacks['button_click']) == 1
assert code in callbacks['button_click'][0].code
def test_toggle(document, comm):
toggle = Toggle(name='Toggle', value=True)
widget = toggle.get_root(document, comm=comm)
assert isinstance(widget, toggle._widget_type)
assert widget.active == True
assert widget.label == 'Toggle'
widget.active = False
toggle._process_events({'active': widget.active})
assert toggle.value == False
toggle.value = True
assert widget.active == True