Skip to content
This repository has been archived by the owner on Jun 3, 2024. It is now read-only.

Commit

Permalink
simplify tests for dps and dpr using dash_dcc functions
Browse files Browse the repository at this point in the history
  • Loading branch information
harryturr committed Sep 3, 2020
1 parent c76c973 commit 605594c
Showing 1 changed file with 31 additions and 104 deletions.
135 changes: 31 additions & 104 deletions tests/integration/calendar/test_date_picker_persistence.py
Original file line number Diff line number Diff line change
@@ -1,112 +1,54 @@
from datetime import datetime, timedelta
from datetime import datetime

import dash
import dash_html_components as html
import dash_core_components as dcc
from dash.dependencies import Input, Output

from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains


def test_rdpr001_persisted_dps(dash_dcc):
def send_date_dps(target, date):
(
ActionChains(dash_dcc.driver).send_keys(str(date)).send_keys(Keys.ENTER)
).perform()

def test_rdpr003_persisted_dps(dash_dcc):
app = dash.Dash(__name__)
app.layout = html.Div(
[
html.Button("fire callback", id="btn"),
html.Div(
children=[
dcc.DatePickerSingle(
id="dps1",
date=datetime.today(),
persistence=True,
persistence_type="session",
),
html.P("dps1", id="dps1-p"),
html.Div(id="container"),
html.P("dps2", id="dps2-p"),
]
),
html.Button("fire callback", id="btn", n_clicks=1),
html.Div(children=[html.Div(id="container"), html.P("dps", id="dps-p"),]),
]
)

@app.callback(Output("container", "children"), [Input("btn", "n_clicks")])
def update_output(value):
return dcc.DatePickerSingle(
id="dps2",
date=datetime.today(),
id="dps",
min_date_allowed=datetime(2020, 1, 1),
max_date_allowed=datetime(2020, 1, 7),
date=datetime(2020, 1, 3, 1, 1, 1, value),
persistence=True,
persistence_type="session",
)

@app.callback(Output("dps1-p", "children"), [Input("dps1", "date")])
def display_dps1(value):
return value

@app.callback(Output("dps2-p", "children"), [Input("dps2", "date")])
def display_dps2(value):
@app.callback(Output("dps-p", "children"), [Input("dps", "date")])
def display_dps(value):
return value

dash_dcc.start_server(app)
dps1 = dash_dcc.find_element("#dps1")
dps2 = dash_dcc.find_element("#dps2")

dash_dcc.clear_input(dps1)
send_date_dps(dps1, "01/01/2020")
dash_dcc.wait_for_text_to_equal("#dps1-p", "2020-01-01")

dash_dcc.clear_input(dps2)
send_date_dps(dps2, "01/01/2020")
dash_dcc.wait_for_text_to_equal("#dps2-p", "2020-01-01")
dash_dcc.select_date_single("dps", day="2")

dash_dcc.wait_for_text_to_equal("#dps-p", "2020-01-02")
dash_dcc.find_element("#btn").click()
dash_dcc.wait_for_text_to_equal("#dps-p", "2020-01-02")

dash_dcc.wait_for_text_to_equal("#dps1-p", "2020-01-01")
dash_dcc.wait_for_text_to_equal("#dps2-p", "2020-01-01")


def test_rdpr002_persisted_dpr(dash_dcc):
def send_date_dpr(target, start_date, end_date):
(
ActionChains(dash_dcc.driver)
.move_to_element(target)
.click(target)
.send_keys(Keys.END)
.key_down(Keys.SHIFT)
.send_keys(Keys.HOME)
.key_up(Keys.SHIFT)
.send_keys(str(start_date))
.pause(0.2)
.send_keys(Keys.END)
.key_down(Keys.SHIFT)
.send_keys(Keys.HOME)
.key_up(Keys.SHIFT)
.send_keys(str(end_date))
).perform()

def test_rdpr004_persisted_dpr(dash_dcc):
app = dash.Dash(__name__)
app.layout = html.Div(
[
html.Button("fire callback", id="btn"),
html.Button("fire callback", id="btn", n_clicks=1),
html.Div(
children=[
dcc.DatePickerRange(
id="dpr1",
start_date=datetime.today() - timedelta(days=3),
end_date=datetime.today(),
persistence=True,
persistence_type="session",
),
html.P("dpr1", id="dpr1-p-start"),
html.P("dpr1", id="dpr1-p-end"),
html.Div(id="container"),
html.P("dpr2", id="dpr2-p-start"),
html.P("dpr2", id="dpr2-p-end"),
html.P("dpr", id="dpr-p-start"),
html.P("dpr", id="dpr-p-end"),
]
),
]
Expand All @@ -115,44 +57,29 @@ def send_date_dpr(target, start_date, end_date):
@app.callback(Output("container", "children"), [Input("btn", "n_clicks")])
def update_output(value):
return dcc.DatePickerRange(
id="dpr2",
start_date=datetime.today() - timedelta(days=3),
end_date=datetime.today(),
id="dpr",
min_date_allowed=datetime(2020, 1, 1),
max_date_allowed=datetime(2020, 1, 7),
start_date=datetime(2020, 1, 3, 1, 1, 1, value),
end_date=datetime(2020, 1, 4, 1, 1, 1, value),
persistence=True,
persistence_type="session",
)

@app.callback(Output("dpr1-p-start", "children"), [Input("dpr1", "start_date")])
def display_dps1(value):
return value

@app.callback(Output("dpr1-p-end", "children"), [Input("dpr1", "end_date")])
def display_dps1(value):
@app.callback(Output("dpr-p-start", "children"), [Input("dpr", "start_date")])
def display_dpr_start(value):
return value

@app.callback(Output("dpr2-p-start", "children"), [Input("dpr2", "start_date")])
def display_dps2(value):
return value

@app.callback(Output("dpr2-p-end", "children"), [Input("dpr2", "end_date")])
def display_dps2(value):
@app.callback(Output("dpr-p-end", "children"), [Input("dpr", "end_date")])
def display_dpr_end(value):
return value

dash_dcc.start_server(app)
dpr1 = dash_dcc.find_element("div#dpr1 div div div div .DateInput_input")
dpr2 = dash_dcc.find_element("div#dpr2 div div div div .DateInput_input")

send_date_dpr(dpr1, "01/01/2020", "01/02/2020")
dash_dcc.wait_for_text_to_equal("#dpr1-p-start", "2020-01-01")
dash_dcc.wait_for_text_to_equal("#dpr1-p-end", "2020-01-02")

send_date_dpr(dpr2, "01/01/2020", "01/02/2020")
dash_dcc.wait_for_text_to_equal("#dpr2-p-start", "2020-01-01")
dash_dcc.wait_for_text_to_equal("#dpr2-p-end", "2020-01-02")
dash_dcc.select_date_range("dpr", (2, 5))

dash_dcc.wait_for_text_to_equal("#dpr-p-start", "2020-01-02")
dash_dcc.wait_for_text_to_equal("#dpr-p-end", "2020-01-05")
dash_dcc.find_element("#btn").click()

dash_dcc.wait_for_text_to_equal("#dpr1-p-start", "2020-01-01")
dash_dcc.wait_for_text_to_equal("#dpr1-p-end", "2020-01-02")
dash_dcc.wait_for_text_to_equal("#dpr2-p-start", "2020-01-01")
dash_dcc.wait_for_text_to_equal("#dpr2-p-end", "2020-01-02")
dash_dcc.wait_for_text_to_equal("#dpr-p-start", "2020-01-02")
dash_dcc.wait_for_text_to_equal("#dpr-p-end", "2020-01-05")

0 comments on commit 605594c

Please sign in to comment.