expect_caption_eq <- function(caption, expected) {
result <- create_caption_component_h(gt(exibble, caption = caption))
expect_identical(
result,
htmltools::HTML(paste0(
"
",
expected,
""
))
)
}
test_that("A caption can be added/removed with `tab_caption()`/`rm_caption()`", {
# Create a table and add a caption
tbl_1 <-
exibble %>%
gt() %>%
tab_caption(caption = "A caption.")
# Determine that the caption is internally present
expect_equal(
dt_options_get_value(data = tbl_1, option = "table_caption"),
"A caption."
)
# Expect that the caption is rendered correctly
expect_equal(
as.character(create_caption_component_h(data = tbl_1)),
"A caption."
)
# Create a table and add a caption using Markdown
tbl_2 <-
exibble %>%
gt() %>%
tab_caption(caption = md("A *caption*."))
# Determine that the caption is internally present
expect_equal(
dt_options_get_value(data = tbl_2, option = "table_caption"),
md("A *caption*.")
)
# Expect that the caption is rendered correctly
expect_equal(
as.character(create_caption_component_h(data = tbl_2)),
"A caption."
)
# Create a table, add a caption in `gt()`, overwrite with `tab_caption()`
tbl_3 <-
exibble %>%
gt(caption = "gt caption.") %>%
tab_caption(caption = "Final caption.")
# Determine that the caption set through `tab_caption()` is present
expect_equal(
dt_options_get_value(data = tbl_3, option = "table_caption"),
"Final caption."
)
# Create a table, add a caption in `gt()`, overwrite that
# twice with `tab_caption()`
tbl_4 <-
exibble %>%
gt(caption = "gt caption.") %>%
tab_caption(caption = "Second caption.") %>%
tab_caption(caption = "Final caption.")
# Determine that the caption set through `tab_caption()` is present
expect_equal(
dt_options_get_value(data = tbl_4, option = "table_caption"),
"Final caption."
)
#
# Expect any caption set can be removed with `rm_caption()`
#
exibble %>%
gt(caption = "gt caption.") %>%
rm_caption() %>%
dt_options_get_value(option = "table_caption") %>%
expect_equal(NA_character_)
exibble %>%
gt(caption = "gt caption.") %>%
tab_caption(caption = "Final caption.") %>%
rm_caption() %>%
dt_options_get_value(option = "table_caption") %>%
expect_equal(NA_character_)
exibble %>%
gt() %>%
tab_caption(caption = "A caption.") %>%
tab_caption(caption = "Another caption.") %>%
rm_caption() %>%
dt_options_get_value(option = "table_caption") %>%
expect_equal(NA_character_)
exibble %>%
gt() %>%
tab_caption(caption = "A caption.") %>%
rm_caption() %>%
tab_caption(caption = "Another caption.") %>%
rm_caption() %>%
dt_options_get_value(option = "table_caption") %>%
expect_equal(NA_character_)
#
# Expect no issues from using `rm_caption()` unnecessarily or repeatedly
#
expect_no_warning(gt(exibble) %>% rm_caption())
expect_no_warning(gt(exibble) %>% rm_caption() %>% rm_caption())
expect_no_warning(gt(exibble, caption = "cap") %>% rm_caption() %>% rm_caption())
expect_no_warning(gt(exibble) %>% tab_caption(caption = "cap") %>% rm_caption() %>% rm_caption())
expect_no_warning(gt(exibble, caption = "cap") %>% tab_caption(caption = "cap") %>% rm_caption() %>% rm_caption())
#
# Ensure that a caption element is not rendered when using `rm_caption()`
#
expect_equal(
as.character(create_caption_component_h(data = gt(exibble, caption = "cap") %>% rm_caption())),
character(0)
)
expect_equal(
as.character(create_caption_component_h(data = gt(exibble) %>% tab_caption(caption = "cap") %>% rm_caption())),
character(0)
)
# Expect that a caption removal can also happen when using `tab_caption(caption = NA)`
expect_equal(
as.character(create_caption_component_h(data = gt(exibble) %>% tab_caption(caption = "cap") %>% tab_caption(caption = NA))),
character(0)
)
expect_equal(
as.character(create_caption_component_h(data = gt(exibble) %>% tab_caption(caption = "cap") %>% tab_caption(caption = NA_character_))),
character(0)
)
expect_equal(
as.character(create_caption_component_h(data = gt(exibble) %>% tab_caption(caption = "cap") %>% tab_caption(caption = NA_real_))),
character(0)
)
expect_equal(
as.character(create_caption_component_h(data = gt(exibble) %>% tab_caption(caption = "cap") %>% tab_caption(caption = NA_integer_))),
character(0)
)
})