tests/testthat/test-case_table_active.R

test_that("`void(case_table_active())` matches snapshot", {

  tbl_mock <- mockery::mock(tibble::tribble(
    ~ status,       ~ n, ~ percent,
    "Active",       900,     0.009,
    "Deceased",      9999,     0.100,
    "Inactive",     89101,     0.891
  ))

  mockery::stub(
    case_table_active,
    "case_calc_active",
    tbl_mock
  )

  data <- tibble::tibble(
    die_from_illness_ind = rep(
      c("Y", rep("N", 3L), rep("U", 3L), rep(NA, 3L)),
      1e4L
    ),
    inv_death_dt = seq(
      as.Date("2020-03-26"),
      as.Date("2021-03-26"),
      length.out = 99999L
    ) %>% purrr::prepend(lubridate::NA_Date_),
    illness_onset_dt = c(rep(as.Date("2020-03-10"), 99e3L), rep("2021-03-26", 1e3L)),
    specimen_coll_dt = illness_onset_dt,
    inv_start_dt = specimen_coll_dt
  ) %>%
    dplyr::mutate(
      dplyr::across(
        where(lubridate::is.Date),
        ~ format(.x, "%Y-%m-%dT%H:%M:%SZ")
      )
    ) %>%
    dplyr::slice_sample(prop = 1)

  tbl_void <- flextable::void(
    case_table_active(data, date = "2021-04-01"),
    part = "all"
  )

  mockery::expect_called(tbl_mock, n = 1L)
  expect_snapshot(tbl_void)
})

test_that("`case_calc_active()` matches reference (with active cases)", {

  data <- tibble::tibble(
    die_from_illness_ind = rep(
      c("Y", rep("N", 3L), rep("U", 3L), rep(NA, 3L)),
      1e4L
    ),
    inv_death_dt = seq(
      as.Date("2020-03-26"),
      as.Date("2021-03-26"),
      length.out = 99999L
    ) %>% purrr::prepend(lubridate::NA_Date_),
    illness_onset_dt = c(rep(as.Date("2020-03-10"), 99e3L), rep("2021-03-26", 1e3L)),
    specimen_coll_dt = illness_onset_dt,
    inv_start_dt = specimen_coll_dt
  ) %>%
    dplyr::mutate(
      dplyr::across(
        where(lubridate::is.Date),
        ~ format(.x, "%Y-%m-%dT%H:%M:%SZ")
      )
    ) %>%
    dplyr::slice_sample(prop = 1)

  mockery::stub(
    filter_active,
    "date_inv",
    lubridate::as_date
  )

  data_mock <- data %>%
    dplyr::mutate(.id_tmp_ = dplyr::row_number()) %>%
    filter_active(date = "2021-04-01") %>%
    mockery::mock(cycle = TRUE)

  mockery::stub(
    case_calc_active,
    "filter_active",
    data_mock
  )

  tbl_active <- case_calc_active(data, date = "2021-04-01") %>%
    set_attr("tabyl_type", NULL) %>%
    set_attr("core", NULL)

  tbl_ref <- tibble::tribble(
      ~ status,       ~ n, ~ percent,
      "Active",       900,     0.009,
    "Deceased",      9999,     0.100,
    "Inactive",     89101,     0.891
  )

  mockery::expect_called(data_mock, n = 1L)
  expect_equal(tbl_active, tbl_ref)
})

test_that("`case_calc_active()` matches reference (with no active cases)", {

  data <- tibble::tibble(
    die_from_illness_ind = rep(
      c("Y", rep("N", 3L), rep("U", 3L), rep(NA, 3L)),
      1e4L
    ),
    inv_death_dt = seq(
      as.Date("2020-03-26"),
      as.Date("2021-03-26"),
      length.out = 99999L
    ) %>% purrr::prepend(lubridate::NA_Date_),
    illness_onset_dt = vctrs::vec_assign(
      rep(as.Date("2020-04-01"), times = 1e5L),
      i = seq(1, 1e5, by = 1e3),
      lubridate::NA_Date_
    ),
    specimen_coll_dt = vctrs::vec_assign(
      rep(as.Date("2020-04-10"), times = 1e5L),
      i = seq(7, 9e4, by = 1234),
      lubridate::NA_Date_
    ),
    inv_start_dt = dplyr::coalesce(
      specimen_coll_dt,
      rep(as.Date("2020-04-15"), times = 1e5L)
    )
  ) %>%
    dplyr::mutate(
      dplyr::across(
        where(lubridate::is.Date),
        ~ format(.x, "%Y-%m-%dT%H:%M:%SZ")
      )
    ) %>%
    dplyr::slice_sample(prop = 1)

  mockery::stub(
    filter_active,
    "date_inv",
    lubridate::as_date
  )

  data_mock <- data %>%
    dplyr::mutate(.id_tmp_ = dplyr::row_number()) %>%
    filter_active(date = "2021-04-01") %>%
    mockery::mock(cycle = TRUE)

  mockery::stub(
    case_calc_active,
    "filter_active",
    data_mock
  )

  tbl_active <- case_calc_active(data, date = "2021-04-01") %>%
    set_attr("tabyl_type", NULL) %>%
    set_attr("core", NULL)

  tbl_ref <- tibble::tribble(
      ~ status,    ~ n, ~ percent,
      "Active",      0,       0.0,
    "Deceased",   9999,       0.1,
    "Inactive",  90001,       0.9
  )

  mockery::expect_called(data_mock, n = 1L)
  expect_equal(tbl_active, tbl_ref)
})
jesse-smith/covidReport documentation built on Aug. 3, 2024, 4:52 p.m.