test_that("fxTable", { table_to_format <- mockSummarisedResult() |> formatHeader(header = c("Study cohorts", "group_level", "Study strata", "strata_name", "strata_level"), includeHeaderName = FALSE) |> dplyr::select(-result_id) # Input 1 ---- # Title but no subtitle # Styles fxResult <- fxTable( table_to_format, style = list( "header" = list( "cell" = officer::fp_cell(background.color = "#c8c8c8"), "text" = officer::fp_text(bold = TRUE)), "header_name" = list("cell" = officer::fp_cell(background.color = "#d9d9d9"), "text" = officer::fp_text(bold = TRUE)), "header_level" = list("cell" = officer::fp_cell(background.color = "#e1e1e1"), "text" = officer::fp_text(bold = TRUE)), "column_name" = list("text" = officer::fp_text(bold = TRUE)), "title" = list("text" = officer::fp_text(bold = TRUE, color = "blue")) ), na = NULL, title = "Test 1", subtitle = NULL, caption = NULL, groupColumn = NULL, groupAsColumn = FALSE, groupOrder = NULL ) # Spanners header_col_1 <- fxResult$header$dataset[, "Study cohorts\ncohort1\nStudy strata\noverall\noverall"] # cohort 1 - overall expect_equal(header_col_1, c("Test 1", "Study cohorts", "cohort1", "Study strata", "overall", "Study cohorts\ncohort1\nStudy strata\noverall\noverall")) # Spanner styles header_col_style <- fxResult$header$styles$cells$background.color$data[, "Study cohorts\ncohort1\nStudy strata\noverall\noverall"] expect_equal(header_col_style, c("#c8c8c8", "#c8c8c8", "#e1e1e1", "#c8c8c8", "#e1e1e1", "#e1e1e1")) expect_equal(fxResult$header$styles$cells$background.color$data[, "cdm_name"] |> unique(), "transparent") expect_equal(fxResult$header$styles$cells$border.width.top$data[, "cdm_name"] |> unique(), 1.2) expect_equal(fxResult$header$styles$cells$border.color.left$data[, "cdm_name"] |> unique(), "gray") expect_equal(fxResult$header$styles$text$bold$data[, "cdm_name"] |> unique(), TRUE) expect_equal(fxResult$header$styles$text$color$data[, "cdm_name"][1], "blue") # default fxTable format expect_equal(fxResult$body$styles$cells$border.width.top$data[, "cdm_name"] |> unique(), 1) expect_equal(fxResult$body$styles$cells$border.color.left$data[, "cdm_name"] |> unique(), "gray") expect_equal(fxResult$body$styles$cells$background.color$data[, "cdm_name"] |> unique(), "transparent") # caption expect_null(fxResult$caption$value) # Alignment expect_equal(fxResult$body$styles$pars$text.align$data[1,9:26] |> unique(), "right") expect_equal(fxResult$body$styles$pars$text.align$data[3,9:26] |> unique(), "right") expect_equal(fxResult$body$styles$pars$text.align$data[5,9:26] |> unique(), "right") expect_equal(fxResult$body$styles$pars$text.align$data[1,1:8] |> unique(), "left") expect_equal(fxResult$body$styles$pars$text.align$data[3,1:8] |> unique(), "left") expect_equal(fxResult$body$styles$pars$text.align$data[5,1:8] |> unique(), "left") # Input 2 ---- table_to_format <- mockSummarisedResult() |> formatEstimateName(estimateNameFormat = c("N (%)" = " (%)", "N" = "")) |> formatHeader(header = c("strata_name", "strata_level"), includeHeaderName = TRUE) |> dplyr::select(-result_id) fxResult <- fxTable( table_to_format, style = list( "subtitle" = list("text" = officer::fp_text(bold = TRUE, font.size = 12, color = "blue")), "body" = list("text" = officer::fp_text(color = "red"), "cell" = officer::fp_cell(border = officer::fp_border())), "group_label" = list("cell" = officer::fp_cell(background.color = "#e1e1e1")), "header_name" = list("cell" = officer::fp_cell(background.color = "black"), "text" = officer::fp_text(color = "white")), "column_name" = list("text" = officer::fp_text(bold = TRUE)) ), na = "-", title = "Title test 2", subtitle = "Subtitle for test 2", caption = "*This* is the caption", groupColumn = "group_level", groupAsColumn = FALSE, groupOrder = NULL ) # Spanners header_col_1 <- fxResult$header$dataset[, "strata_name\noverall\nstrata_level\noverall"] # overall expect_equal(header_col_1, c("Title test 2", "Subtitle for test 2", "strata_name", "overall", "strata_level", "strata_name\noverall\nstrata_level\noverall")) # Spanner styles header_col_style <- fxResult$header$styles$cells$background.color$data[, "strata_name\noverall\nstrata_level\noverall"] expect_equal(header_col_style, c("black", "black", "black", "transparent", "black", "transparent")) expect_equal(fxResult$header$styles$cells$background.color$data[, "cdm_name"] |> unique(), "transparent") expect_equal(fxResult$header$styles$cells$border.width.top$data[, "cdm_name"] |> unique(), 1.2) expect_equal(fxResult$header$styles$cells$border.color.left$data[, "cdm_name"] |> unique(), "gray") expect_equal(fxResult$header$styles$text$bold$data[, "cdm_name"] |> unique(), TRUE) expect_equal(fxResult$header$styles$text$color$data[, "cdm_name"], c("black", "blue", "black", "black", "black", "black")) expect_equal(fxResult$header$styles$text$color$data[, "strata_name\nage_group\nstrata_level\n>=40"], c("black", "blue", "white", "black", "white", "black")) # body expect_equal(fxResult$body$styles$cells$border.width.top$data[, "cdm_name"] |> unique(), c(0,1)) expect_equal(fxResult$body$styles$cells$border.color.left$data[, "cdm_name"] |> unique(), "black") expect_equal(fxResult$body$styles$cells$background.color$data[, "cdm_name"], c("#e1e1e1", "transparent", "transparent", "transparent", "transparent", "transparent", "#e1e1e1", "transparent", "transparent", "transparent", "transparent", "transparent")) expect_equal(fxResult$body$styles$text$color$data[, "cdm_name"] |> unique(), "red") # caption expect_equal(fxResult$caption$value, "*This* is the caption") # group label expect_equal(fxResult$body$spans$rows[1,], c(1, 17, rep(0, 16))) expect_equal(fxResult$body$spans$rows[7,], c(1, 17, rep(0, 16))) expect_equal(fxResult$body$spans$rows[3,], rep(1, 18)) # Input 3 ---- table_to_format <- mockSummarisedResult() |> formatEstimateName(estimateNameFormat = c("N (%)" = " (%)", "N" = "")) |> formatHeader(header = c("strata_name", "strata_level"), delim = ":", includeHeaderName = TRUE) |> dplyr::select(-result_id) fxResult <- fxTable( table_to_format, delim = ":", style = list( "subtitle" = list("text" = officer::fp_text(bold = TRUE, font.size = 12, color = "blue")), "body" = list("text" = officer::fp_text(color = "red"), "cell" = officer::fp_cell(border = officer::fp_border())), "group_label" = list("cell" = officer::fp_cell(background.color = "#e1e1e1")), "header_name" = list("cell" = officer::fp_cell(background.color = "black"), "text" = officer::fp_text(color = "white")) ), na = "-", title = "Title test 2", subtitle = "Subtitle for test 2", caption = "*This* is the caption", groupColumn = "group_level", groupAsColumn = TRUE, groupOrder = c("cohort2", "cohort1") ) # group label expect_equal(fxResult$body$spans$columns[,1], c(5, rep(0,4), 5, rep(0,4))) expect_equal(fxResult$body$dataset[,1] |> levels(), c("cohort2", "cohort1")) expect_equal(fxResult$body$spans$rows[3,], rep(1, 18)) expect_equal(fxResult$body$styles$cells$background.color$data[,1] |> unique(), "#e1e1e1") expect_equal(fxResult$body$styles$cells$background.color$data[,2] |> unique(), "transparent") # Wrong inputs ---- expect_error(fxTable( table_to_format, style = NA, na = "-", title = "Title test 2", subtitle = "Subtitle for test 2", caption = "*This* is the caption", groupColumn = "group_level", groupAsColumn = TRUE, groupOrder = c("cohort2", "cohort1") )) }) test_that("fxTable, test default styles and NULL", { table_to_format <- mockSummarisedResult() |> formatHeader(header = c("Study cohorts", "group_level", "Study strata", "strata_name", "strata_level"), includeHeaderName = FALSE) |> dplyr::select(-result_id) # Input 1: NULL ---- fxResult <- fxTable( table_to_format, style = NULL, na = NULL, title = "Test 1", subtitle = NULL, caption = NULL, groupColumn = NULL, groupAsColumn = FALSE, groupOrder = NULL ) # Spanner styles expect_equal(unique(fxResult$header$styles$cells$background.color$data[, "Study cohorts\ncohort1\nStudy strata\noverall\noverall"]), "transparent") expect_equal(fxResult$header$styles$cells$background.color$data[, "cdm_name"] |> unique(), "transparent") expect_equal(fxResult$header$styles$cells$border.width.top$data[1,] |> unique(), 1.2) expect_equal(fxResult$header$styles$cells$border.width.top$data[2,] |> unique(), 1.2) expect_equal(fxResult$header$styles$cells$border.width.top$data[3,] |> unique(), 1.2) expect_equal(fxResult$header$styles$cells$border.color.left$data[, "cdm_name"] |> unique(), "gray") expect_equal(fxResult$header$styles$cells$border.color.left$data[2:6, "cdm_name"] |> unique(), "gray") expect_true(fxResult$header$styles$text$bold$data[1, "cdm_name"] |> unique()) expect_false(fxResult$header$styles$text$bold$data[2:6, "cdm_name"] |> unique()) # default fxTable format expect_equal(fxResult$body$styles$cells$border.width.top$data[, "cdm_name"] |> unique(), 1) expect_equal(fxResult$body$styles$cells$border.color.left$data[, "cdm_name"] |> unique(), "gray") expect_equal(fxResult$body$styles$cells$background.color$data[, "cdm_name"] |> unique(), "transparent") # Input 2 ---- table_to_format <- mockSummarisedResult() |> formatEstimateName(estimateNameFormat = c("N (%)" = " (%)", "N" = "")) |> formatHeader(header = c("Strata", "strata_name", "strata_level"), includeHeaderName = TRUE) |> dplyr::select(-result_id) fxResult <- fxTable( table_to_format, style = "default", na = "-", title = "Title test 2", subtitle = "Subtitle for test 2", caption = "*This* is the caption", groupColumn = "group_level", groupAsColumn = FALSE, groupOrder = NULL ) # Spanner styles header_col_style <- fxResult$header$styles$cells$background.color$data[, "Strata\nstrata_name\noverall\nstrata_level\noverall"] expect_equal(header_col_style, c("#c8c8c8", "#c8c8c8", "#c8c8c8", "#d9d9d9", "#e1e1e1", "#d9d9d9", "#e1e1e1")) expect_equal(fxResult$header$styles$cells$background.color$data[, "cdm_name"] |> unique(), "transparent") expect_equal(fxResult$header$styles$cells$border.width.top$data[, "cdm_name"] |> unique(), 1.2) expect_equal(fxResult$header$styles$cells$border.color.left$data[, "cdm_name"] |> unique(), "gray") expect_true(fxResult$header$styles$text$bold$data[, "cdm_name"] |> unique()) expect_equal(fxResult$header$styles$text$color$data[, "cdm_name"] |> unique(), "black") expect_equal(fxResult$header$styles$text$color$data[, "cdm_name"] |> unique(), "black") expect_equal(fxResult$header$styles$text$font.size$data[, "cdm_name"] |> unique(), c(15, 12, 10)) # body expect_equal(fxResult$body$styles$cells$border.width.top$data[, "cdm_name"] |> unique(), 1) expect_equal(fxResult$body$styles$cells$border.color.left$data[, "cdm_name"] |> unique(), "gray") expect_equal(fxResult$body$styles$cells$background.color$data[, "cdm_name"], c("#e9e9e9", "transparent", "transparent", "transparent", "transparent","transparent", "#e9e9e9","transparent", "transparent", "transparent", "transparent", "transparent")) expect_equal(fxResult$body$styles$text$color$data[, "cdm_name"] |> unique(), "black") #Input 3: woring name style ---- expect_message( fxResult <- fxTable( table_to_format, style = "heythere", na = "-", title = "Title test 2", subtitle = "Subtitle for test 2", caption = "*This* is the caption", groupColumn = "group_level", groupAsColumn = FALSE, groupOrder = NULL ) ) }) test_that("fxTable, test colsToMergeRows", { table_to_format<- mockSummarisedResult() |> formatHeader(header = c("strata_name", "strata_level")) |> dplyr::select(-result_id) # colsToMergeRows = "all" fxResult <- fxTable( x = table_to_format, style = "default", na = "-", title = "Title test 2", subtitle = "Subtitle for test 2", caption = "*This* is the caption", groupColumn = "group_level", groupAsColumn = FALSE, groupOrder = NULL, colsToMergeRows = "all_columns" ) expect_equal(fxResult$body$styles$cells$border.color.top$data[,1], c("gray", "black", "black", "black", "black", "black", "black", "black", "gray", "black", "black", "black", "black", "black", "black", "black")) expect_equal(fxResult$body$styles$cells$border.color.top$data[,2], c("gray", "gray", "black", "black", "black", "black", "black", "black", "gray", "gray", "black", "black", "black", "black", "black", "black")) expect_equal(fxResult$body$styles$cells$border.color.top$data[,4], c("gray", "gray", "gray", "black", "gray", "black", "black", "black", "gray", "gray", "gray", "black", "gray", "black", "black", "black")) expect_equal(fxResult$body$styles$cells$border.color.top$data[,5], c("gray", "gray", "gray", "black", "gray", "black", "gray", "black", "gray", "gray", "gray", "black", "gray", "black", "gray", "black")) expect_equal(fxResult$body$styles$cells$border.color.top$data[,16], c("gray", "gray", "gray", "gray", "gray", "gray", "gray", "gray", "gray", "gray", "gray", "gray", "gray", "gray", "gray", "gray")) # colsToMergeRows = c("cdm_name", "variable_name") fxResult <- fxTable( table_to_format, style = "default", na = "-", title = "Title test 2", subtitle = "Subtitle for test 2", caption = "*This* is the caption", groupColumn = "group_level", groupAsColumn = FALSE, groupOrder = NULL, colsToMergeRows = c("cdm_name", "variable_name") ) expect_equal(fxResult$body$styles$cells$border.color.top$data[,1], c("gray", "black", "black", "black", "black", "black", "black", "black", "gray", "black", "black", "black", "black", "black", "black", "black")) expect_equal(fxResult$body$styles$cells$border.color.top$data[,2], c("gray", "gray", "black", "black", "black", "black", "black", "black", "gray", "gray", "black", "black", "black", "black", "black", "black")) expect_equal(fxResult$body$styles$cells$border.color.top$data[,4], c("gray", "gray", "gray", "black", "gray", "black", "black", "black", "gray", "gray", "gray", "black", "gray", "black", "black", "black")) # Wroing input expect_message(fxTable( table_to_format, style = "default", na = "-", title = "Title test 2", subtitle = "Subtitle for test 2", caption = "*This* is the caption", groupColumn = "group_level", groupAsColumn = FALSE, groupOrder = NULL, colsToMergeRows = c("cdm_name", "lala") )) })