From 8f6dafd2840dbc38d10a26aa54881eee860bf682 Mon Sep 17 00:00:00 2001 From: Ryan Patrick Kyle Date: Mon, 12 Aug 2019 00:26:09 -0400 Subject: [PATCH] :rotating_light: added test --- tests/integration/callbacks/test_no_update.py | 58 ++++++++++++++++--- 1 file changed, 49 insertions(+), 9 deletions(-) diff --git a/tests/integration/callbacks/test_no_update.py b/tests/integration/callbacks/test_no_update.py index 60b8846e..c8e77dc9 100644 --- a/tests/integration/callbacks/test_no_update.py +++ b/tests/integration/callbacks/test_no_update.py @@ -1,4 +1,5 @@ from selenium.webdriver.support.select import Select +import time app = """ library(dash) @@ -16,19 +17,49 @@ list(label = "Do nothing", value = "nothing") ), id = "color-selector"), + htmlButton(children = "Select all the colors!", + id = "multi-selector" + ), htmlDiv(id='message-box', - children='Please select a colour choice from the dropdown menu.') + children='Please select a color choice from the dropdown menu.'), + htmlDiv(id='message-box2', + children=' ') ) ) ) +app$callback(output=list(id='message-box2', property='children'), + params=list( + input(id='multi-selector', property='n_clicks')), + function(n_clicks) + { + # if button has been clicked, n_clicks is numeric() + # on first launch of callback at layout initialization, + # value of n_clicks will be list(NULL), which is not + # comparable using >, < or =; hence the is.numeric() + # check + if (is.numeric(n_clicks) && n_clicks >= 1) + { + # return a vector to ensure that the check for + # class(x) == "no_update" isn't made for objects + # where length(x) > 1 + return(c("Multiple color values: ", + "#FF0000, ", + "#00FF00, ", + "#0000FF ", + "returned!") + ) + } + } +) + app$callback(output=list(id='message-box', property='children'), params=list( input(id='color-selector', property='value')), function(color) { if (color %in% c("#FF0000", "#00FF00", "#0000FF")) { - msg <- sprintf("The hexadecimal representation of your last chosen colour is %s", + msg <- sprintf("The hexadecimal representation of your last chosen color is %s", color) return(msg) } else { @@ -37,7 +68,7 @@ } ) -app$run_server() +app$run_server(component_cache_max_age=0) """ @@ -45,19 +76,28 @@ def test_rsnu001_no_update(dashr): dashr.start_server(app) dashr.find_element("#color-selector").click() dashr.find_elements("div.VirtualizedSelectOption")[0].click() - assert dashr.find_element("#message-box").text == "The hexadecimal representation of your last chosen colour is #FF0000" + time.sleep(1) + assert dashr.find_element("#message-box").text == "The hexadecimal representation of your last chosen color is #FF0000" dashr.find_element("#color-selector").click() dashr.find_elements("div.VirtualizedSelectOption")[3].click() - assert dashr.find_element("#message-box").text == "The hexadecimal representation of your last chosen colour is #FF0000" + time.sleep(1) + assert dashr.find_element("#message-box").text == "The hexadecimal representation of your last chosen color is #FF0000" dashr.find_element("#color-selector").click() dashr.find_elements("div.VirtualizedSelectOption")[1].click() - assert dashr.find_element("#message-box").text == "The hexadecimal representation of your last chosen colour is #00FF00" + time.sleep(1) + assert dashr.find_element("#message-box").text == "The hexadecimal representation of your last chosen color is #00FF00" dashr.find_element("#color-selector").click() dashr.find_elements("div.VirtualizedSelectOption")[3].click() - assert dashr.find_element("#message-box").text == "The hexadecimal representation of your last chosen colour is #00FF00" + time.sleep(1) + assert dashr.find_element("#message-box").text == "The hexadecimal representation of your last chosen color is #00FF00" dashr.find_element("#color-selector").click() dashr.find_elements("div.VirtualizedSelectOption")[2].click() - assert dashr.find_element("#message-box").text == "The hexadecimal representation of your last chosen colour is #0000FF" + time.sleep(1) + assert dashr.find_element("#message-box").text == "The hexadecimal representation of your last chosen color is #0000FF" dashr.find_element("#color-selector").click() dashr.find_elements("div.VirtualizedSelectOption")[3].click() - assert dashr.find_element("#message-box").text == "The hexadecimal representation of your last chosen colour is #0000FF" + time.sleep(1) + assert dashr.find_element("#message-box").text == "The hexadecimal representation of your last chosen color is #0000FF" + dashr.find_element("#multi-selector").click() + time.sleep(1) + assert dashr.find_element("#message-box").text == "Multiple color values: #FF0000, #00FF00, #0000FF returned!"