|
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.dependencies.pop() |
|
assert not clear_event_trigger["backend_fn"] |
|
assert clear_event_trigger["js"] |
|
assert clear_event_trigger["outputs"] == [textbox._id, chatbot._id] |
|
|
|
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.dependencies.pop() |
|
assert clear_event_trigger_state["backend_fn"] |
|
|
|
|
|
class TestOAuthButtons: |
|
def test_login_button_warns_when_not_on_spaces(self): |
|
with pytest.warns(UserWarning): |
|
with gr.Blocks(): |
|
gr.LoginButton() |
|
|
|
def test_logout_button_warns_when_not_on_spaces(self): |
|
with pytest.warns(UserWarning): |
|
with gr.Blocks(): |
|
gr.LogoutButton() |
|
|
|
@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.dependencies[0] |
|
assert login_event["targets"][0][1] == "click" |
|
assert not login_event["backend_fn"] |
|
assert login_event["js"] |
|
assert login_event["inputs"] == [button._id] |
|
assert login_event["outputs"] == [] |
|
|