|
| 1 | +import datetime |
1 | 2 | import re
|
2 | 3 | import time
|
3 | 4 |
|
|
8 | 9 | from shiny.types import MISSING
|
9 | 10 |
|
10 | 11 |
|
| 12 | +def convert_to_utc_date(date_str: str) -> str: |
| 13 | + date_obj = datetime.datetime.strptime(date_str, "%m/%d/%y") |
| 14 | + epoch_time_milliseconds = date_obj.timestamp() * 1000 |
| 15 | + return str(epoch_time_milliseconds) |
| 16 | + |
| 17 | + |
| 18 | +def convert_to_utc_date_time(date_time_str: str) -> str: |
| 19 | + date_time_obj = datetime.datetime.strptime(date_time_str, "%Y-%m-%d %H:%M:%S") |
| 20 | + utc_timestamp = ( |
| 21 | + date_time_obj.replace(tzinfo=datetime.timezone.utc).timestamp() * 1000 |
| 22 | + ) |
| 23 | + return str(utc_timestamp) |
| 24 | + |
| 25 | + |
11 | 26 | def test_slider_regular(page: Page, local_app: ShinyAppProc) -> None:
|
12 | 27 | page.goto(local_app.url)
|
13 | 28 |
|
@@ -71,22 +86,22 @@ def test_slider_custom_format(page: Page, local_app: ShinyAppProc) -> None:
|
71 | 86 |
|
72 | 87 | s2 = controller.InputSlider(page, "s2")
|
73 | 88 | s2.expect_label("Custom Format")
|
74 |
| - s2.expect_value("$0") |
| 89 | + s2.expect_value("$0.00") |
75 | 90 | s2.expect_min("0")
|
76 | 91 | s2.expect_max("10000")
|
77 | 92 | s2.expect_step("2500")
|
78 | 93 | s2.expect_ticks("true")
|
79 | 94 | s2.expect_sep(",")
|
80 | 95 | s2.expect_pre("$")
|
81 |
| - s2.expect_post(None) |
| 96 | + s2.expect_post(".00") |
82 | 97 | s2.expect_time_format(None)
|
83 | 98 | s2.expect_timezone(None)
|
84 | 99 | s2.expect_drag_range(None)
|
85 | 100 | s2.expect_animate_options(loop=True, interval=500)
|
86 | 101 | controller.OutputTextVerbatim(page, "txt2").expect_value("0")
|
87 | 102 |
|
88 |
| - s2.set("$7,500") |
89 |
| - s2.expect_value("$7,500") |
| 103 | + s2.set("$7,500.00") |
| 104 | + s2.expect_value("$7,500.00") |
90 | 105 | controller.OutputTextVerbatim(page, "txt2").expect_value("7500")
|
91 | 106 |
|
92 | 107 |
|
@@ -147,3 +162,58 @@ def test_slider_play(page: Page, local_app: ShinyAppProc) -> None:
|
147 | 162 | s4.expect_value("5")
|
148 | 163 | s4.click_play() # can click again!
|
149 | 164 | s4.expect_value("5")
|
| 165 | + |
| 166 | + |
| 167 | +def test_slider_date_format(page: Page, local_app: ShinyAppProc) -> None: |
| 168 | + page.goto(local_app.url) |
| 169 | + |
| 170 | + s5 = controller.InputSlider(page, "s5") |
| 171 | + s5.expect_label("Date format") |
| 172 | + s5.expect_value("01/05/24") |
| 173 | + s5.expect_min(convert_to_utc_date("01/01/24")) |
| 174 | + s5.expect_max(convert_to_utc_date("01/10/24")) |
| 175 | + s5.expect_time_format("%m/%d/%y") |
| 176 | + s5.expect_timezone("0000") |
| 177 | + s5.expect_drag_range(None) |
| 178 | + controller.OutputTextVerbatim(page, "txt5").expect_value("2024-01-05") |
| 179 | + |
| 180 | + new_val = "01/08/24" |
| 181 | + s5.set(new_val) |
| 182 | + s5.expect_value(new_val) |
| 183 | + controller.OutputTextVerbatim(page, "txt5").expect_value("2024-01-08") |
| 184 | + |
| 185 | + |
| 186 | +def test_slider_time_format(page: Page, local_app: ShinyAppProc) -> None: |
| 187 | + page.goto(local_app.url) |
| 188 | + |
| 189 | + s6 = controller.InputSlider(page, "s6") |
| 190 | + s6.expect_label("Time format") |
| 191 | + s6.expect_timezone("0000") |
| 192 | + s6.expect_value("2024-01-05 12:00:00") |
| 193 | + s6.expect_min(convert_to_utc_date_time("2024-01-01 00:00:00")) |
| 194 | + s6.expect_max(convert_to_utc_date_time("2024-01-10 23:59:00")) |
| 195 | + s6.expect_time_format("%F %T") |
| 196 | + s6.expect_width("600px") |
| 197 | + s6.expect_drag_range(None) |
| 198 | + controller.OutputTextVerbatim(page, "txt6").expect_value("2024-01-05 12:00:00") |
| 199 | + |
| 200 | + new_val = "2024-01-01 00:00:00" |
| 201 | + s6.set(new_val) |
| 202 | + s6.expect_value(new_val) |
| 203 | + controller.OutputTextVerbatim(page, "txt6").expect_value("2024-01-01 00:00:00") |
| 204 | + |
| 205 | + |
| 206 | +def test_slider_drag_range_disabled(page: Page, local_app: ShinyAppProc) -> None: |
| 207 | + page.goto(local_app.url) |
| 208 | + |
| 209 | + s7 = controller.InputSliderRange(page, "s7") |
| 210 | + s7.expect_label("Drag Range (Disabled)") |
| 211 | + s7.expect_value(("200", "500")) |
| 212 | + s7.expect_min("0") |
| 213 | + s7.expect_max("1000") |
| 214 | + s7.expect_drag_range("false") |
| 215 | + new_val = ("25", "502") |
| 216 | + s7.set(new_val, max_err_values=1000) |
| 217 | + controller.OutputTextVerbatim(page, "txt7").expect_value( |
| 218 | + f"({new_val[0]}, {new_val[1]})" |
| 219 | + ) |
0 commit comments