Nothing
test_that("passing on a foreign tibble works", {
a <- tibble::tibble(
a = c(1,2,3),
key1 = c(NA,2,4),
key2 = c(NA,2,4))
b <- foreignTbl(
a,
tibble::tibble(
b = c("a", "b", "c"),
key1 = c(1,2,3),
key2 = c(1,2,3)
),
naturalKey = "b"
)
# Try running the app manually
ui <- eDTOutput("app")
server <- function(input,output,session){
eDT(id = "app",
data = reactive(a),
foreignTbls = list(b),
options = list(columnDefs = list(list(visible=FALSE, targets="key2"))))
}
shiny::shinyApp(ui, server)
# Actual test
shiny::testServer(
app = eDTServer,
args = list(data = reactive(a), foreignTbls = list(b)),
expr = {
expect_true(TRUE)
})
})
test_that("Can use foreign tibbles to fill in non natural key values.",{
tbl <- tibble::tibble(
a = c(1,2),
key1 = as.double(c(NA,NA)),
key2 = as.double(c(NA,NA))
)
merged_tbl <- cbind(tbl, tibble(
b = c("b1", "b2"),
c = c("c1", "c2")))
b <- foreignTbl(
tbl,
tibble::tibble(
b = c("b1", "b2", "b3"),
key1 = c(1,2,3)
),
by = "key1",
naturalKey = "b"
)
c <- foreignTbl(
tbl,
tibble::tibble(
c = c("c1", "c2", "c3"),
key2 = c(1,2,3)
),
by = "key2",
naturalKey = "c"
)
foreignTbls = list(b, c)
result <- fillDeductedColumns(merged_tbl, foreignTbls)
expect_equal(result$key1, c(1,2))
expect_equal(result$key2, c(1,2))
})
test_that("Contradicting foreign tibbles give error when filling in data.",{
tbl <- tibble::tibble(
a = c(1,2),
key = as.double(c(NA,NA))
)
merged_tbl <- tibble::tibble(cbind(tbl,
tibble::tibble(color = c("blue", "orange"))
))
b <- foreignTbl(
tbl,
tibble::tibble(
color = c("blue", "orange"),
key = c(1,2)
),
by = "key",
naturalKey = "color"
)
c <- foreignTbl(
tbl,
tibble::tibble(
color = c("blue", "purple"),
key = c(2,1)
),
by = "key",
naturalKey = "color"
)
expect_error({fillDeductedColumns(tbl, foreignTbls = list(b,c))})
expect_error({fillDeductedColumns(tbl, foreignTbls = list(c,b))})
})
test_that("Empty foreign tibbles list returns given tibble",{
tbl <- tibble::tibble(
a = c(1,2),
key = as.double(c(NA,NA)),
color = c("blue", "orange")
)
result <- fillDeductedColumns(tbl, foreignTbls = list())
expect_equal(result, tbl)
})
test_that("checkForeignTbls throws error",{
tbl <- tibble::tibble(
a = c(1,2, 3),
key = c(1,2, 3)
)
merged_tbl <- cbind(tbl,
tibble::tibble(color = c("blue", "orange", "purple"))
)
b <- foreignTbl(
tbl,
tibble::tibble(
color = c("blue", "orange"),
key = c(1,2)
),
by = "key",
naturalKey = "color"
)
expect_error(checkForeignTbls(tbl = merged_tbl,foreignTbls = list(b)))
})
test_that("joinForeignTbl() type 'inner' works.",{
a <- tibble::tibble(
a = c(1,2,3),
key1 = c(NA,2,4),
key2 = c(NA,2,4))
b <- tibble::tibble(
b = c("a", "b", "c"),
key1 = c(1,2,3),
key2 = c(1,2,3)
)
foreignTbl <- foreignTbl(a,b)
result <- joinForeignTbl(a, foreignTbl, type = 'inner')
# NA keys in 'a' are expected to stay.
expect_equal(colnames(result), c("a", "key1", "key2", "b"))
expect_true(nrow(result) == 2)
})
test_that("joinForeignTbl() type 'left' works.",{
a <- tibble::tibble(
a = c(1,2,3),
key1 = c(NA,2,4),
key2 = c(NA,2,4))
b <- tibble::tibble(
b = c("a", "b", "c"),
key1 = c(1,2,3),
key2 = c(1,2,3)
)
foreignTbl <- foreignTbl(a,b)
result <- joinForeignTbl(a, foreignTbl, type = 'left')
expect_equal(colnames(result), c("a", "key1", "key2", "b"))
expect_true(nrow(result) == 3)
})
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.