1
- from datetime import datetime , timedelta
1
+ from datetime import datetime
2
2
3
3
import dash
4
4
import dash_html_components as html
5
5
import dash_core_components as dcc
6
6
from dash .dependencies import Input , Output
7
7
8
- from selenium .webdriver .common .keys import Keys
9
- from selenium .webdriver .common .action_chains import ActionChains
10
-
11
-
12
- def test_rdpr001_persisted_dps (dash_dcc ):
13
- def send_date_dps (target , date ):
14
- (
15
- ActionChains (dash_dcc .driver ).send_keys (str (date )).send_keys (Keys .ENTER )
16
- ).perform ()
17
8
9
+ def test_rdpr003_persisted_dps (dash_dcc ):
18
10
app = dash .Dash (__name__ )
19
11
app .layout = html .Div (
20
12
[
21
- html .Button ("fire callback" , id = "btn" ),
22
- html .Div (
23
- children = [
24
- dcc .DatePickerSingle (
25
- id = "dps1" ,
26
- date = datetime .today (),
27
- persistence = True ,
28
- persistence_type = "session" ,
29
- ),
30
- html .P ("dps1" , id = "dps1-p" ),
31
- html .Div (id = "container" ),
32
- html .P ("dps2" , id = "dps2-p" ),
33
- ]
34
- ),
13
+ html .Button ("fire callback" , id = "btn" , n_clicks = 1 ),
14
+ html .Div (children = [html .Div (id = "container" ), html .P ("dps" , id = "dps-p" ),]),
35
15
]
36
16
)
37
17
38
18
@app .callback (Output ("container" , "children" ), [Input ("btn" , "n_clicks" )])
39
19
def update_output (value ):
40
20
return dcc .DatePickerSingle (
41
- id = "dps2" ,
42
- date = datetime .today (),
21
+ id = "dps" ,
22
+ min_date_allowed = datetime (2020 , 1 , 1 ),
23
+ max_date_allowed = datetime (2020 , 1 , 7 ),
24
+ date = datetime (2020 , 1 , 3 , 1 , 1 , 1 , value ),
43
25
persistence = True ,
44
26
persistence_type = "session" ,
45
27
)
46
28
47
- @app .callback (Output ("dps1-p" , "children" ), [Input ("dps1" , "date" )])
48
- def display_dps1 (value ):
49
- return value
50
-
51
- @app .callback (Output ("dps2-p" , "children" ), [Input ("dps2" , "date" )])
52
- def display_dps2 (value ):
29
+ @app .callback (Output ("dps-p" , "children" ), [Input ("dps" , "date" )])
30
+ def display_dps (value ):
53
31
return value
54
32
55
33
dash_dcc .start_server (app )
56
- dps1 = dash_dcc .find_element ("#dps1" )
57
- dps2 = dash_dcc .find_element ("#dps2" )
58
-
59
- dash_dcc .clear_input (dps1 )
60
- send_date_dps (dps1 , "01/01/2020" )
61
- dash_dcc .wait_for_text_to_equal ("#dps1-p" , "2020-01-01" )
62
34
63
- dash_dcc .clear_input (dps2 )
64
- send_date_dps (dps2 , "01/01/2020" )
65
- dash_dcc .wait_for_text_to_equal ("#dps2-p" , "2020-01-01" )
35
+ dash_dcc .select_date_single ("dps" , day = "2" )
66
36
37
+ dash_dcc .wait_for_text_to_equal ("#dps-p" , "2020-01-02" )
67
38
dash_dcc .find_element ("#btn" ).click ()
39
+ dash_dcc .wait_for_text_to_equal ("#dps-p" , "2020-01-02" )
68
40
69
- dash_dcc .wait_for_text_to_equal ("#dps1-p" , "2020-01-01" )
70
- dash_dcc .wait_for_text_to_equal ("#dps2-p" , "2020-01-01" )
71
-
72
-
73
- def test_rdpr002_persisted_dpr (dash_dcc ):
74
- def send_date_dpr (target , start_date , end_date ):
75
- (
76
- ActionChains (dash_dcc .driver )
77
- .move_to_element (target )
78
- .click (target )
79
- .send_keys (Keys .END )
80
- .key_down (Keys .SHIFT )
81
- .send_keys (Keys .HOME )
82
- .key_up (Keys .SHIFT )
83
- .send_keys (str (start_date ))
84
- .pause (0.2 )
85
- .send_keys (Keys .END )
86
- .key_down (Keys .SHIFT )
87
- .send_keys (Keys .HOME )
88
- .key_up (Keys .SHIFT )
89
- .send_keys (str (end_date ))
90
- ).perform ()
91
41
42
+ def test_rdpr004_persisted_dpr (dash_dcc ):
92
43
app = dash .Dash (__name__ )
93
44
app .layout = html .Div (
94
45
[
95
- html .Button ("fire callback" , id = "btn" ),
46
+ html .Button ("fire callback" , id = "btn" , n_clicks = 1 ),
96
47
html .Div (
97
48
children = [
98
- dcc .DatePickerRange (
99
- id = "dpr1" ,
100
- start_date = datetime .today () - timedelta (days = 3 ),
101
- end_date = datetime .today (),
102
- persistence = True ,
103
- persistence_type = "session" ,
104
- ),
105
- html .P ("dpr1" , id = "dpr1-p-start" ),
106
- html .P ("dpr1" , id = "dpr1-p-end" ),
107
49
html .Div (id = "container" ),
108
- html .P ("dpr2 " , id = "dpr2 -p-start" ),
109
- html .P ("dpr2 " , id = "dpr2 -p-end" ),
50
+ html .P ("dpr " , id = "dpr -p-start" ),
51
+ html .P ("dpr " , id = "dpr -p-end" ),
110
52
]
111
53
),
112
54
]
@@ -115,44 +57,29 @@ def send_date_dpr(target, start_date, end_date):
115
57
@app .callback (Output ("container" , "children" ), [Input ("btn" , "n_clicks" )])
116
58
def update_output (value ):
117
59
return dcc .DatePickerRange (
118
- id = "dpr2" ,
119
- start_date = datetime .today () - timedelta (days = 3 ),
120
- end_date = datetime .today (),
60
+ id = "dpr" ,
61
+ min_date_allowed = datetime (2020 , 1 , 1 ),
62
+ max_date_allowed = datetime (2020 , 1 , 7 ),
63
+ start_date = datetime (2020 , 1 , 3 , 1 , 1 , 1 , value ),
64
+ end_date = datetime (2020 , 1 , 4 , 1 , 1 , 1 , value ),
121
65
persistence = True ,
122
66
persistence_type = "session" ,
123
67
)
124
68
125
- @app .callback (Output ("dpr1-p-start" , "children" ), [Input ("dpr1" , "start_date" )])
126
- def display_dps1 (value ):
127
- return value
128
-
129
- @app .callback (Output ("dpr1-p-end" , "children" ), [Input ("dpr1" , "end_date" )])
130
- def display_dps1 (value ):
69
+ @app .callback (Output ("dpr-p-start" , "children" ), [Input ("dpr" , "start_date" )])
70
+ def display_dpr_start (value ):
131
71
return value
132
72
133
- @app .callback (Output ("dpr2-p-start" , "children" ), [Input ("dpr2" , "start_date" )])
134
- def display_dps2 (value ):
135
- return value
136
-
137
- @app .callback (Output ("dpr2-p-end" , "children" ), [Input ("dpr2" , "end_date" )])
138
- def display_dps2 (value ):
73
+ @app .callback (Output ("dpr-p-end" , "children" ), [Input ("dpr" , "end_date" )])
74
+ def display_dpr_end (value ):
139
75
return value
140
76
141
77
dash_dcc .start_server (app )
142
- dpr1 = dash_dcc .find_element ("div#dpr1 div div div div .DateInput_input" )
143
- dpr2 = dash_dcc .find_element ("div#dpr2 div div div div .DateInput_input" )
144
78
145
- send_date_dpr (dpr1 , "01/01/2020" , "01/02/2020" )
146
- dash_dcc .wait_for_text_to_equal ("#dpr1-p-start" , "2020-01-01" )
147
- dash_dcc .wait_for_text_to_equal ("#dpr1-p-end" , "2020-01-02" )
148
-
149
- send_date_dpr (dpr2 , "01/01/2020" , "01/02/2020" )
150
- dash_dcc .wait_for_text_to_equal ("#dpr2-p-start" , "2020-01-01" )
151
- dash_dcc .wait_for_text_to_equal ("#dpr2-p-end" , "2020-01-02" )
79
+ dash_dcc .select_date_range ("dpr" , (2 , 5 ))
152
80
81
+ dash_dcc .wait_for_text_to_equal ("#dpr-p-start" , "2020-01-02" )
82
+ dash_dcc .wait_for_text_to_equal ("#dpr-p-end" , "2020-01-05" )
153
83
dash_dcc .find_element ("#btn" ).click ()
154
-
155
- dash_dcc .wait_for_text_to_equal ("#dpr1-p-start" , "2020-01-01" )
156
- dash_dcc .wait_for_text_to_equal ("#dpr1-p-end" , "2020-01-02" )
157
- dash_dcc .wait_for_text_to_equal ("#dpr2-p-start" , "2020-01-01" )
158
- dash_dcc .wait_for_text_to_equal ("#dpr2-p-end" , "2020-01-02" )
84
+ dash_dcc .wait_for_text_to_equal ("#dpr-p-start" , "2020-01-02" )
85
+ dash_dcc .wait_for_text_to_equal ("#dpr-p-end" , "2020-01-05" )
0 commit comments