Nothing
context("minichart")
# Helper function
expect_invoke_js_method <- function(method, postProcess = I) {
map <- leaflet::leaflet() %>%
addMinicharts(0, 0, 1:3, layerId = "a") %>%
postProcess()
expect_true(all(method %in% map$jsmethods))
}
with_mock(
`leaflet::invokeMethod` = function(map, data, method, ...) {
map$jsargs <- list(...)
map$jsmethods <- c(map$jsmethods, method)
map
},
`leaflet::addLegend` = function(map, ...) {
map$legendArgs <- list(...)
map
},
`leaflet::removeControl` = function(map, id) {
map$controlRemoved <- id
map
},
{
test_that("One can add, update, clear and remove minicharts", {
expect_invoke_js_method("addMinicharts")
expect_invoke_js_method("updateMinicharts", function(map) {
updateMinicharts(map, layerId = "a", chartdata = 1:4)
})
expect_invoke_js_method("clearMinicharts", clearMinicharts)
expect_invoke_js_method("removeMinicharts", function(map) {
removeMinicharts(map, "a")
})
})
describe("addMinicharts", {
it("correctly manages the 'labels' argument", {
# No labels
map <- leaflet::leaflet() %>% addMinicharts(0, 0, 1:3, layerId = "a")
expect_equal(map$jsargs[[1]][[1]]$static$labels, "none")
# Auto labels
map <- leaflet::leaflet() %>%
addMinicharts(0, 0, 1:3, layerId = "a", showLabels = TRUE)
expect_equal(map$jsargs[[1]][[1]]$static$labels, "auto")
# Custom labels
map <- leaflet::leaflet() %>%
addMinicharts(0, 0, 1, layerId = "a", showLabels = TRUE,
labelText = "test")
expect_equal(map$jsargs[[1]][[1]]$static$labels, "test")
})
it("adds a legend when chartdata has multiple named columns", {
map <- leaflet::leaflet() %>%
addMinicharts(0, 0, data.frame(a = 1, b = 2), layerId = "a")
expect_false(is.null(map$legendArgs))
expect_equal(map$legendArgs$labels, I(c("a", "b")))
# No names, no legend
map <- leaflet::leaflet() %>% addMinicharts(0, 0, 1:3, layerId = "a")
expect_null(map$legendArgs)
# One column, no legend
map <- leaflet::leaflet() %>%
addMinicharts(0, 0, data.frame(a = 1), layerId = "a")
expect_null(map$legendArgs)
# Argument legend is FALSE
map <- leaflet::leaflet() %>%
addMinicharts(0, 0, data.frame(a = 1, b = 2), layerId = "a",
legend = FALSE)
expect_null(map$legendArgs)
})
})
describe("updateMinicharts", {
basemap <- leaflet::leaflet() %>% addMinicharts(0, 0, 1)
it("correctly manages the 'labels' argument", {
# No labels
map <- basemap %>% updateMinicharts("a", showLabels = FALSE)
expect_equal(map$jsargs[[1]][[1]]$static$labels, "none")
# Auto labels
map <- basemap %>% updateMinicharts("a", showLabels = TRUE)
expect_equal(map$jsargs[[1]][[1]]$static$labels, "auto")
# Custom labels
map <- basemap %>%
updateMinicharts("a", showLabels = TRUE, labelText = "test")
expect_equal(map$jsargs[[1]][[1]]$static$labels, "test")
})
it ("does not update labels by default", {
map <- basemap %>% updateMinicharts("a")
expect_null(map$jsargs[[1]][[1]]$static$labels)
})
it ("updates time slider only when data is updated", {
map <- basemap %>% updateMinicharts("a")
expect_null(map$jsargs[[5]])
map <- basemap %>% updateMinicharts("a", chartdata = 2)
expect_false(is.null(map$jsargs[[5]]))
})
it ("updates legend only when data is updated", {
baseMap <- leaflet::leaflet() %>% addMinicharts(0, 0, 1, layerId = "a")
map <- baseMap %>% updateMinicharts("a", data.frame(a = 1, b = 2))
expect_false(is.null(map$legendArgs))
expect_equal(map$legendArgs$labels, I(c("a", "b")))
# No names, no legend
map <- baseMap %>% updateMinicharts("a", 1:3)
expect_null(map$legendArgs)
expect_equal(map$controlRemoved, "minichartsLegend")
# One column, no legend
map <- baseMap %>% updateMinicharts("a", data.frame(a = 1))
expect_null(map$legendArgs)
expect_equal(map$controlRemoved, "minichartsLegend")
# Argument legend is FALSE
map <- baseMap %>% updateMinicharts("a", data.frame(a = 1, b = 2), legend = FALSE)
expect_null(map$legendArgs)
expect_equal(map$controlRemoved, "minichartsLegend")
# data is not updated
map <- baseMap %>% updateMinicharts("a")
expect_null(map$legendArgs)
expect_null(map$controlRemoved)
})
})
}
)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.