tests/testthat/test-multiple-tables-in-rtf.R

library(tibble)

test_that("multiple tables are printed to one rtf file", {
  output_directory <- "test_outputs/multiple_tables_in_one_file"

  withr::with_options(list(tidytlg.add_datetime = FALSE), {
    mtcars2 <- mtcars %>%
      rownames_to_column(var = "USUBJID") %>%
      mutate(am = factor(am), cyl = factor(cyl), gear = factor(gear))

    tab <- freq(mtcars2, colvar = "cyl", rowvar = "am") %>% select(-c("row_type", "group_level"))

    tab2 <- freq(
      mtcars2 %>%
        tlgsetup(
          var = "cyl",
          column_metadata_file = testthat::test_path("test_data/column_metadata_mtcars.xlsx"),
          tbltype = "mtcars2"
        ),
      colvar = "colnbr",
      rowvar = "am"
    ) %>%
      bind_table(
        column_metadata_file = testthat::test_path("test_data/column_metadata_mtcars.xlsx"), tbltype = "mtcars2"
      ) %>%
      select("label", starts_with("col"))

    withr::with_dir(
      new = testthat::test_path(output_directory),
      code = {
        gentlg(
          list(tab, tab2),
          file = "multipletabs",
          title = list("Title 1", "Title 2"),
          footers = list("Footer 1", "Footer 2")
        )
      }
    )
  })

  expect_snapshot_file(test_path(sprintf("%s/multipletabs.rtf", output_directory)))

  # Verify only one file was created
  files <- list.files(path = testthat::test_path(output_directory), pattern = "*.rtf")
  testthat::expect_identical(
    length(files), 1L,
    label = sprintf("Expected to find only one file. Found: %s", paste0(files, collapse = " "))
  )
})

Try the tidytlg package in your browser

Any scripts or data that you put into this service are public.

tidytlg documentation built on Dec. 19, 2025, 9:07 a.m.