Skip to content

Commit a524bc4

Browse files
Added test for graph customdata.
1 parent 3a24f28 commit a524bc4

File tree

1 file changed

+42
-1
lines changed

1 file changed

+42
-1
lines changed

components/dash-core-components/tests/integration/graph/test_graph_basics.py

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
import json
12
import pytest
23
import pandas as pd
34
from multiprocessing import Value, Lock
45
import numpy as np
56
from time import sleep
6-
7+
import plotly.express as px
8+
import plotly.graph_objects as go
79
from dash import Dash, Input, Output, dcc, html
810

911
import dash.testing.wait as wait
@@ -162,3 +164,42 @@ def update_graph(n_clicks):
162164
dash_dcc.wait_for_element("#my-graph:not([data-dash-is-loading])")
163165

164166
assert dash_dcc.get_logs() == []
167+
168+
169+
def test_grbs005_graph_customdata(dash_dcc):
170+
app = Dash(__name__)
171+
172+
df = px.data.tips()
173+
df["id"] = df.index
174+
175+
app.layout = html.Div(
176+
[
177+
dcc.Graph(
178+
id="pie-chart",
179+
figure=go.Figure(
180+
data=[
181+
go.Pie(
182+
labels=df["day"], ids=df["id"].map(str), customdata=df["id"]
183+
)
184+
]
185+
),
186+
),
187+
dcc.Textarea(id="text-area"),
188+
]
189+
)
190+
191+
@app.callback(Output("text-area", "value"), Input("pie-chart", "clickData"))
192+
def handleClick(clickData):
193+
return json.dumps(clickData)
194+
195+
dash_dcc.start_server(app)
196+
dash_dcc.wait_for_element("#pie-chart")
197+
198+
dash_dcc.find_elements("g .slice")[0].click()
199+
200+
data = dash_dcc.wait_for_element("#text-area").get_attribute("value")
201+
assert data != "", "graph clickData must contain data"
202+
203+
data = json.loads(data)
204+
assert "customdata" in data["points"][0], "graph clickData must contain customdata"
205+
assert data["points"][0]["customdata"][0] == data["points"][0]["pointNumbers"][0]

0 commit comments

Comments
 (0)