Skip to content

Commit

Permalink
Add async callback test
Browse files Browse the repository at this point in the history
  • Loading branch information
philippjfr committed May 23, 2022
1 parent 37744a0 commit 7079ea9
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions panel/tests/widgets/test_tables.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@

from panel.depends import bind
from panel.io.server import serve
from panel.io.state import set_curdoc
from panel.models.tabulator import CellClickEvent, TableEditEvent
from panel.widgets import Button, TextInput
from panel.widgets.tables import DataFrame, Tabulator
Expand Down Expand Up @@ -1693,6 +1694,8 @@ def test_tabulator_patch_event():
table._process_event(event)
assert values[-1] == (col, row, df[col].iloc[row])



def test_server_edit_event():
df = makeMixedDataFrame()
table = Tabulator(df)
Expand Down Expand Up @@ -1735,6 +1738,42 @@ def test_tabulator_cell_click_event():
table._process_event(event)
assert values[-1] == (col, row, data[col].iloc[row])

def test_server_cell_click_async_event():
df = makeMixedDataFrame()
table = Tabulator(df)

counts = []
async def cb(event, count=[0]):
import asyncio
count[0] += 1
counts.append(count[0])
await asyncio.sleep(1)
count[0] -= 1

table.on_click(cb)

port = 7002
serve(table, port=port, threaded=True, show=False)

# Wait for server to start
time.sleep(1)

requests.get(f"http://localhost:{port}/")

data = df.reset_index()
doc = list(table._models.values())[0][0].document
with set_curdoc(doc):
for col in data.columns:
for row in range(len(data)):
event = CellClickEvent(model=None, column=col, row=row)
table._process_event(event)

# Wait for callbacks to be scheduled
time.sleep(2)

# Ensure multiple callbacks started concurrently
assert max(counts) > 1

def test_tabulator_pagination_remote_cell_click_event():
df = makeMixedDataFrame()
table = Tabulator(df, pagination='remote', page_size=2)
Expand Down

0 comments on commit 7079ea9

Please sign in to comment.