test_that("g6 function creates proper htmlwidget", {
# Test with minimal input
g <- g6()
expect_s3_class(g, "htmlwidget")
expect_s3_class(g, "g6")
expect_length(g$x$data, 0)
expect_snapshot(error = TRUE, {
# Test with invalid input
g6(iconsUrl = NULL)
g6(
nodes = data.frame(),
jsonUrl = "https://assets.antv.antgroup.com/g6/cluster.json"
)
})
# Test with data frames
nodes_df <- data.frame(
id = c("node1", "node2", "node3"),
stringsAsFactors = FALSE
)
edges_df <- data.frame(
source = c("node1", "node2"),
target = c("node2", "node3"),
stringsAsFactors = FALSE
)
g <- g6(nodes = nodes_df, edges = edges_df)
expect_s3_class(g, "htmlwidget")
expect_length(g$x$data$nodes, 3)
expect_length(g$x$data$edges, 2)
# Check node structure
expect_equal(g$x$data$nodes[[1]]$id, "node1")
# Check edge structure
expect_equal(g$x$data$edges[[1]]$source, "node1")
expect_equal(g$x$data$edges[[1]]$target, "node2")
})
test_that("g6 function handles list input", {
# Test with lists
nodes_list <- list(
list(id = "a"),
list(id = "b")
)
edges_list <- list(
list(source = "a", target = "b", type = "line")
)
g <- g6(nodes = nodes_list, edges = edges_list)
expect_s3_class(g, "htmlwidget")
expect_length(g$x$data$nodes, 2)
expect_length(g$x$data$edges, 1)
expect_equal(g$x$data$edges[[1]]$type, "line")
})
test_that("g6 function handles combos", {
nodes_df <- data.frame(
id = c("node1", "node2"),
combo = c("combo1", "combo1"),
stringsAsFactors = FALSE
)
combos_df <- data.frame(
id = "combo1",
stringsAsFactors = FALSE
)
g <- g6(nodes = nodes_df, combos = combos_df)
expect_s3_class(g, "htmlwidget")
expect_length(g$x$data$nodes, 2)
expect_length(g$x$data$combos, 1)
expect_equal(g$x$data$combos[[1]]$id, "combo1")
expect_equal(g$x$data$nodes[[1]]$combo, "combo1")
})
test_that("g6 function handles dimensions", {
g1 <- g6(width = "500px", height = "300px")
expect_equal(g1$width, "500px")
expect_equal(g1$height, "300px")
g2 <- g6(width = 500, height = 300)
expect_equal(g2$width, 500)
expect_equal(g2$height, 300)
})
test_that("g6 function handles elementId", {
g <- g6(elementId = "my-graph")
expect_equal(g$elementId, "my-graph")
})
test_that("get_g6_max_collapse_depth returns Inf by default", {
withr::local_options(g6R.max_collapse_depth = NULL)
expect_equal(get_g6_max_collapse_depth(), Inf)
})
test_that("set_g6_max_collapse_depth sets and retrieves correctly", {
withr::local_options(g6R.max_collapse_depth = NULL)
set_g6_max_collapse_depth(0)
expect_equal(get_g6_max_collapse_depth(), 0)
set_g6_max_collapse_depth(3)
expect_equal(get_g6_max_collapse_depth(), 3)
set_g6_max_collapse_depth(Inf)
expect_equal(get_g6_max_collapse_depth(), Inf)
})
test_that("set_g6_max_collapse_depth accepts -1 to disable collapsing", {
withr::local_options(g6R.max_collapse_depth = NULL)
set_g6_max_collapse_depth(-1)
expect_equal(get_g6_max_collapse_depth(), -1)
})
test_that("set_g6_max_collapse_depth rejects invalid values", {
expect_error(set_g6_max_collapse_depth(-2), ">= -1")
expect_error(set_g6_max_collapse_depth("a"), ">= -1")
expect_error(set_g6_max_collapse_depth(c(1, 2)), ">= -1")
})
test_that("g6 widget includes maxCollapseDepth in x", {
withr::local_options(g6R.max_collapse_depth = NULL)
g <- g6()
expect_equal(g$x$maxCollapseDepth, Inf)
withr::local_options(g6R.max_collapse_depth = 0)
g2 <- g6()
expect_equal(g2$x$maxCollapseDepth, 0)
})