Skip to content

Commit 1b0f116

Browse files
authored
Merge branch 'develop' into nick/fix_dockerfile
2 parents 7d484ea + 18fb0c2 commit 1b0f116

File tree

3 files changed

+79
-1
lines changed

3 files changed

+79
-1
lines changed

src/chime_dash/app/services/plotting.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,8 @@ def plot_dataframe(
3333
}
3434
for col in dataframe.columns
3535
],
36-
"layout": {"yaxis": yaxis},
36+
"layout": {
37+
"yaxis": yaxis,
38+
"legend": {"orientation": "h"},
39+
},
3740
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
from unittest.mock import patch, MagicMock
2+
3+
import dash_core_components as dcc
4+
import dash_html_components as html
5+
import pytest
6+
from dash import Dash
7+
from dash.dependencies import Input, Output
8+
9+
from src.chime_dash.app.utils.callbacks import (
10+
ChimeCallback,
11+
register_callbacks,
12+
wrap_callbacks,
13+
)
14+
15+
16+
@pytest.mark.parametrize(
17+
"callbacks, new_callbacks, registered_callback_length",
18+
[
19+
([], [], 0),
20+
([], ["ChimeCallback1", "ChimeCallback2", "ChimeCallback3"], 3),
21+
(["ChimeCallback1"], ["ChimeCallback2", "ChimeCallback3"], 3),
22+
(["ChimeCallback1"], [], 1),
23+
],
24+
)
25+
def test_register_callbacks(
26+
callbacks, new_callbacks, registered_callback_length, monkeypatch
27+
):
28+
registered_callbacks = callbacks
29+
monkeypatch.setattr(
30+
"src.chime_dash.app.utils.callbacks.__registered_callbacks",
31+
registered_callbacks,
32+
)
33+
register_callbacks(new_callbacks)
34+
assert len(registered_callbacks) == registered_callback_length
35+
36+
37+
def test_wrap_callbacks(dash_app, monkeypatch):
38+
mock_chime_callback = MagicMock()
39+
monkeypatch.setattr(
40+
"src.chime_dash.app.utils.callbacks.__registered_callbacks",
41+
[mock_chime_callback],
42+
)
43+
wrap_callbacks(dash_app)
44+
mock_chime_callback.wrap.assert_called_once_with(dash_app)
45+
46+
47+
def test_ChimeCallback_wrap(dash_app):
48+
# set up the layout
49+
dash_app.layout = html.Div(
50+
id="root",
51+
children=[
52+
dcc.Input(id="input-id", value="initial value", type="text"),
53+
html.Div(id="output-id"),
54+
],
55+
)
56+
# create a callback for elements in this layout
57+
chime_callback = ChimeCallback(
58+
changed_elements={"input-id": "value"},
59+
callback_fn=lambda *args, **kwargs: ["new value"],
60+
dom_updates={"output-id": "children"},
61+
)
62+
63+
# register the Chime Callback with the layout
64+
chime_callback.wrap(dash_app)
65+
66+
assert list(dash_app.callback_map)[0] == "..output-id.children.."
67+
assert dash_app.callback_map["..output-id.children.."]["inputs"] == [
68+
{"id": "input-id", "property": "value"}
69+
]
70+
assert dash_app.callback_map["..output-id.children.."]["callback"]

tests/conftest.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from datetime import datetime
22

3+
from dash import Dash
34
import pytest
45
import pandas as pd
56

@@ -32,6 +33,10 @@ def just_store_instead_of_rendering(self, inp, *args, **kwargs):
3233
return None
3334

3435

36+
@pytest.fixture()
37+
def dash_app():
38+
return Dash()
39+
3540
@pytest.fixture
3641
def mock_st():
3742
return MockStreamlit()

0 commit comments

Comments
 (0)