# Tests for viz_treemap — lightweight, covr-safe # Targets uncovered branches: subgroup_var, color_var, layout_algorithm, # allow_drill_down, data_labels_enabled, pre_aggregated, color_palette library(testthat) test_that("viz_treemap basic chart", { df <- data.frame( region = c("North", "North", "South", "South"), city = c("NYC", "Boston", "Miami", "Atlanta"), spend = c(1000, 500, 800, 600) ) hc <- viz_treemap(df, group_var = "region", value_var = "spend") expect_s3_class(hc, "highchart") }) test_that("viz_treemap with subgroup_var", { df <- data.frame( region = c("North", "North", "South", "South"), city = c("NYC", "Boston", "Miami", "Atlanta"), spend = c(1000, 500, 800, 600) ) hc <- viz_treemap(df, group_var = "region", subgroup_var = "city", value_var = "spend") expect_s3_class(hc, "highchart") }) test_that("viz_treemap with title and subtitle", { df <- data.frame( category = c("A", "B", "C"), value = c(30, 50, 20) ) hc <- viz_treemap(df, group_var = "category", value_var = "value", title = "Treemap", subtitle = "By category") expect_s3_class(hc, "highchart") }) test_that("viz_treemap with color_palette", { df <- data.frame( category = c("A", "B", "C"), value = c(30, 50, 20) ) hc <- viz_treemap(df, group_var = "category", value_var = "value", color_palette = c("A" = "#ff0000", "B" = "#00ff00", "C" = "#0000ff")) expect_s3_class(hc, "highchart") }) test_that("viz_treemap with layout_algorithm strip", { df <- data.frame( category = c("A", "B", "C", "D"), value = c(30, 50, 20, 40) ) hc <- viz_treemap(df, group_var = "category", value_var = "value", layout_algorithm = "strip") expect_s3_class(hc, "highchart") }) test_that("viz_treemap with layout_algorithm sliceAndDice", { df <- data.frame( category = c("A", "B", "C"), value = c(30, 50, 20) ) hc <- viz_treemap(df, group_var = "category", value_var = "value", layout_algorithm = "sliceAndDice") expect_s3_class(hc, "highchart") }) test_that("viz_treemap with allow_drill_down FALSE", { df <- data.frame( region = c("North", "North", "South", "South"), city = c("NYC", "Boston", "Miami", "Atlanta"), spend = c(1000, 500, 800, 600) ) hc <- viz_treemap(df, group_var = "region", subgroup_var = "city", value_var = "spend", allow_drill_down = FALSE) expect_s3_class(hc, "highchart") }) test_that("viz_treemap with data_labels_enabled FALSE", { df <- data.frame( category = c("A", "B", "C"), value = c(30, 50, 20) ) hc <- viz_treemap(df, group_var = "category", value_var = "value", data_labels_enabled = FALSE) expect_s3_class(hc, "highchart") }) test_that("viz_treemap with pre_aggregated TRUE", { df <- data.frame( category = c("A", "B", "C"), value = c(30, 50, 20) ) hc <- viz_treemap(df, group_var = "category", value_var = "value", pre_aggregated = TRUE) expect_s3_class(hc, "highchart") }) test_that("viz_treemap with color_var", { df <- data.frame( category = c("A", "B", "C"), value = c(30, 50, 20), score = c(0.8, 0.5, 0.3) ) hc <- viz_treemap(df, group_var = "category", value_var = "value", color_var = "score") expect_s3_class(hc, "highchart") }) test_that("viz_treemap with custom height", { df <- data.frame( category = c("A", "B"), value = c(30, 50) ) hc <- viz_treemap(df, group_var = "category", value_var = "value", height = 600) expect_s3_class(hc, "highchart") }) # --- Additional targeted tests for uncovered branches --- test_that("viz_treemap with unified tooltip system", { df <- data.frame( category = c("A", "B", "C"), value = c(30, 50, 20) ) tt <- tooltip(format = "{name}: {value}") hc <- viz_treemap(df, group_var = "category", value_var = "value", tooltip = tt) expect_s3_class(hc, "highchart") }) test_that("viz_treemap with tooltip as format string", { df <- data.frame( category = c("A", "B", "C"), value = c(30, 50, 20) ) hc <- viz_treemap(df, group_var = "category", value_var = "value", tooltip = "{name}: {value}") expect_s3_class(hc, "highchart") }) test_that("viz_treemap with legacy tooltip_format", { df <- data.frame( category = c("A", "B"), value = c(30, 50) ) hc <- viz_treemap(df, group_var = "category", value_var = "value", tooltip_format = "{point.name}: {point.value}") expect_s3_class(hc, "highchart") }) test_that("viz_treemap with both tooltip and tooltip_format (backwards compat)", { df <- data.frame( category = c("A", "B"), value = c(30, 50) ) tt <- tooltip(format = "{name}: {value}") # When both provided, tooltip_format wins for backwards compat hc <- viz_treemap(df, group_var = "category", value_var = "value", tooltip = tt, tooltip_format = "{point.name}: {point.value}") expect_s3_class(hc, "highchart") }) test_that("viz_treemap deprecated show_labels warning", { df <- data.frame( category = c("A", "B"), value = c(30, 50) ) expect_warning( viz_treemap(df, group_var = "category", value_var = "value", show_labels = FALSE), "deprecated" ) }) test_that("viz_treemap single color_palette string (gradient)", { df <- data.frame( category = c("A", "B", "C"), value = c(30, 50, 20) ) hc <- viz_treemap(df, group_var = "category", value_var = "value", color_palette = "#1a5276") expect_s3_class(hc, "highchart") }) test_that("viz_treemap with haven_labelled value_var", { skip_if_not_installed("haven") df <- data.frame( category = c("A", "B", "C"), value = haven::labelled(c(30, 50, 20), labels = c("low" = 20, "high" = 50)) ) hc <- viz_treemap(df, group_var = "category", value_var = "value") expect_s3_class(hc, "highchart") }) test_that("viz_treemap with haven_labelled group_var", { skip_if_not_installed("haven") df <- data.frame( category = haven::labelled(1:3, labels = c("A" = 1, "B" = 2, "C" = 3)), value = c(30, 50, 20) ) hc <- viz_treemap(df, group_var = "category", value_var = "value") expect_s3_class(hc, "highchart") }) test_that("viz_treemap with haven_labelled subgroup_var", { skip_if_not_installed("haven") df <- data.frame( region = c("North", "North", "South", "South"), city = haven::labelled(1:4, labels = c("NYC" = 1, "Boston" = 2, "Miami" = 3, "Atlanta" = 4)), spend = c(1000, 500, 800, 600) ) hc <- viz_treemap(df, group_var = "region", subgroup_var = "city", value_var = "spend") expect_s3_class(hc, "highchart") }) test_that("viz_treemap with haven_labelled color_var", { skip_if_not_installed("haven") df <- data.frame( category = c("A", "B", "C"), value = c(30, 50, 20), color = haven::labelled(1:3, labels = c("red" = 1, "green" = 2, "blue" = 3)) ) hc <- viz_treemap(df, group_var = "category", value_var = "value", color_var = "color") expect_s3_class(hc, "highchart") }) test_that("viz_treemap with NA values removed", { df <- data.frame( category = c("A", "B", "C", NA, "D"), value = c(30, NA, 20, 40, 10) ) hc <- viz_treemap(df, group_var = "category", value_var = "value") expect_s3_class(hc, "highchart") }) test_that("viz_treemap non-pre-aggregated single-level (duplicates)", { df <- data.frame( category = c("A", "A", "A", "B", "B", "C"), value = c(10, 20, 30, 40, 50, 60) ) hc <- viz_treemap(df, group_var = "category", value_var = "value", pre_aggregated = FALSE) expect_s3_class(hc, "highchart") }) test_that("viz_treemap non-pre-aggregated with subgroup (aggregation)", { df <- data.frame( region = c("North", "North", "North", "South", "South"), city = c("NYC", "NYC", "Boston", "Miami", "Miami"), spend = c(100, 200, 300, 400, 500) ) hc <- viz_treemap(df, group_var = "region", subgroup_var = "city", value_var = "spend", pre_aggregated = FALSE) expect_s3_class(hc, "highchart") }) test_that("viz_treemap error: data is NULL", { expect_error(viz_treemap(data = NULL, group_var = "a", value_var = "b"), "required") }) test_that("viz_treemap error: group_var not found", { df <- data.frame(a = 1, b = 2) expect_error(viz_treemap(df, group_var = "nonexistent", value_var = "b"), "not found") }) test_that("viz_treemap error: value_var not found", { df <- data.frame(a = 1, b = 2) expect_error(viz_treemap(df, group_var = "a", value_var = "nonexistent"), "not found") }) test_that("viz_treemap error: subgroup_var not found", { df <- data.frame(a = 1, b = 2) expect_error(viz_treemap(df, group_var = "a", value_var = "b", subgroup_var = "nonexistent"), "not found") }) test_that("viz_treemap with label_style override", { df <- data.frame( category = c("A", "B", "C"), value = c(30, 50, 20) ) hc <- viz_treemap(df, group_var = "category", value_var = "value", label_style = list(fontSize = "18px", color = "#333")) expect_s3_class(hc, "highchart") }) test_that("viz_treemap with credits enabled", { df <- data.frame( category = c("A", "B"), value = c(30, 50) ) hc <- viz_treemap(df, group_var = "category", value_var = "value", credits = TRUE) expect_s3_class(hc, "highchart") }) test_that("viz_treemap all NAs returns warning chart", { df <- data.frame( category = c(NA, NA), value = c(NA, NA) ) expect_warning( hc <- viz_treemap(df, group_var = "category", value_var = "value"), "No data" ) expect_s3_class(hc, "highchart") })