File size: 1,714 Bytes
0ad74ed |
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 |
from unittest.mock import patch
import pytest
import gradio as gr
class TestClearButton:
def test_clear_event_setup_correctly(self):
with gr.Blocks() as demo:
chatbot = gr.Chatbot([["Hello", "How are you?"]])
with gr.Row():
textbox = gr.Textbox(scale=3, interactive=True)
gr.ClearButton([textbox, chatbot], scale=1)
clear_event_trigger = demo.fns.pop(demo.default_config.fn_id - 1)
assert not clear_event_trigger.fn
assert clear_event_trigger.js
assert clear_event_trigger.outputs == [textbox, chatbot]
def test_clear_event_setup_correctly_with_state(self):
with gr.Blocks() as demo:
chatbot = gr.Chatbot([["Hello", "How are you?"]])
state = gr.State("")
gr.ClearButton([state, chatbot], scale=1)
clear_event_trigger_state = demo.fns.pop(demo.default_config.fn_id - 1)
assert clear_event_trigger_state.fn
class TestOAuthButtons:
@pytest.mark.flaky
def test_login_button_warns_when_not_on_spaces(self):
with pytest.warns(UserWarning):
with gr.Blocks():
gr.LoginButton()
@patch("gradio.oauth.get_space", lambda: "fake_space")
@patch("gradio.oauth._add_oauth_routes")
def test_login_button_setup_correctly(self, mock_add_oauth_routes):
with gr.Blocks() as demo:
button = gr.LoginButton()
login_event = demo.fns[0]
assert login_event.targets[0][1] == "click"
assert not login_event.fn # No Python code
assert login_event.js # But JS code instead
assert login_event.inputs == [button]
assert login_event.outputs == []
|