tests/testthat/test-plot_ed_occupancy_hour_of_week.R

test_that("Average occupancy, interquartile range, range correctly calculated", {
  test_occupancy_hr_day <- readRDS("testdata/plot_ed_occupancy_hour_of_week/test_occupancy_hr_day.rds")

  # Specify correct results
  correct_answers <- tibble::tibble(
    hour = as.integer(c(11, 11, 11, 11, 11, 11, 11)),
    Weekday = as.factor(c("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat")),
    average_occupancy = as.numeric(c(2.0, 2.5, 1.33, 1, 1.5, 1, 1.5)),
    Q1 = c(`25%` = 1.5, `25%` = 2.25, `25%` = 1, `25%` = 1, `25%` = 1.25, `25%` = 1, `25%` = 1.25),
    Q3 = c(`75%` = 2.5, `75%` = 2.75, `75%` = 1.5, `75%` = 1, `75%` = 1.75, `75%` = 1, `75%` = 1.75),
    Min_n = as.numeric(c(1, 2, 1, 1, 1, 1, 1)),
    Max_n = as.numeric(c(3, 3, 2, 1, 2, 1, 2))
  )

  correct_answers <- correct_answers %>%
    dplyr::mutate(Weekday = factor(Weekday, levels = c("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"), ordered = FALSE))

  result <- plot_ed_occupancy_hour_of_week(
    data = test_occupancy_hr_day,
    startDate = as.POSIXct("2019-01-01 00:00:00", tz = "Europe/London"),
    endDate = as.POSIXct("2019-01-16 00:00:00", tz = "Europe/London"),
    returnPlot = FALSE,
    hospitalName = "Hospital Name"
  )

  result <- result %>%
    dplyr::filter(hour == 11)

  result <- result %>%
    dplyr::mutate(Weekday = factor(Weekday, levels = c("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"), ordered = FALSE)) %>%
    tibble::as_tibble()

  # Test results are correct
  expect_equal(result, correct_answers, tolerance = 0.01)
})
HorridTom/hospitalflow documentation built on June 14, 2022, noon