Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 08e29a0

Browse files
nicholas-esterernicolaskruchten
authored andcommitted
added tests for selecting traces using string or index
1 parent 8ca6ee3 commit 08e29a0

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

packages/python/plotly/plotly/tests/test_core/test_update_objects/test_update_traces.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22
from unittest import TestCase
33
import inspect
44
import copy
5+
import pytest
56

67
import plotly.graph_objs as go
78
from plotly.subplots import make_subplots
9+
from functools import reduce
810

911

1012
class TestSelectForEachUpdateTraces(TestCase):
@@ -414,3 +416,60 @@ def test_update_traces_overwrite(self):
414416
{"type": "bar", "marker": {"line": {"width": 10}}},
415417
],
416418
)
419+
420+
421+
@pytest.fixture
422+
def select_traces_fixture():
423+
fig = make_subplots(2, 3)
424+
for n in range(3):
425+
fig.add_trace(go.Scatter(x=[1, 2], y=[3, n]), row=2, col=3)
426+
for n, ty in zip(range(3), [go.Scatter, go.Bar, go.Bar]):
427+
fig.add_trace(ty(x=[1, 2], y=[3, 10 * n]), row=1, col=3)
428+
return fig
429+
430+
431+
def test_select_traces_integer(select_traces_fixture):
432+
fig = select_traces_fixture
433+
# check we can index last trace selected
434+
tr = list(fig.select_traces(selector=-1))[0]
435+
assert tr.y[1] == 20
436+
# check we can index last trace selected in a row and column
437+
tr = list(fig.select_traces(selector=-1, row=2, col=3))[0]
438+
assert tr.y[1] == 2
439+
# check that indexing out of bounds raises IndexError
440+
with pytest.raises(IndexError):
441+
tr = list(fig.select_traces(selector=6))[0]
442+
443+
444+
def test_select_traces_string(select_traces_fixture):
445+
fig = select_traces_fixture
446+
# check we can select traces by type simply by passing a string to selector
447+
trs = list(fig.select_traces(selector="bar"))
448+
assert len(trs) == 2 and reduce(
449+
lambda last, cur: last
450+
and (cur[0]["type"] == "bar")
451+
and (cur[0]["y"][1] == cur[1]),
452+
zip(trs, [10, 20]),
453+
True,
454+
)
455+
# check we can select traces by type regardless of the subplots they are on
456+
trs = list(fig.select_traces(selector="scatter"))
457+
assert len(trs) == 4 and reduce(
458+
lambda last, cur: last
459+
and (cur[0]["type"] == "scatter")
460+
and (cur[0]["y"][1] == cur[1]),
461+
zip(trs, [0, 1, 2, 0]),
462+
True,
463+
)
464+
# check that we can select traces by type but only on a specific subplot
465+
trs = list(fig.select_traces(row=2, col=3, selector="scatter"))
466+
assert len(trs) == 3 and reduce(
467+
lambda last, cur: last
468+
and (cur[0]["type"] == "scatter")
469+
and (cur[0]["y"][1] == cur[1]),
470+
zip(trs, [0, 1, 2]),
471+
True,
472+
)
473+
# check that if selector matches no trace types then no traces are returned
474+
trs = list(fig.select_traces(selector="bogus"))
475+
assert len(trs) == 0

0 commit comments

Comments
 (0)