tests/testthat/test-flashcard.R

test_that("checks work correctly", {
  skip_on_cran()
  expect_error(
    flashcard("data_types", termsfirst = 1),
    "`termsfirst` must be a logical \\(TRUE or FALSE\\)"
  )
  expect_error(
    flashcard("data_types", package = 1),
    "`package` must be a logical \\(TRUE or FALSE\\)"
  )
  expect_error(
    flashcard("data_types", theme = 1),
    "`theme` must be a character"
  )
  expect_error(
    flashcard("data_types", theme = "t"),
    "`theme` must be one of the allowed values: default, black, white, league"
  )
  expect_error(
    flashcard("data_types", file = 1),
    "`file` must be a character"
  )
  expect_error(
    flashcard("data_types", random = 1),
    "`random` must be a logical \\(TRUE or FALSE\\)"
  )
  expect_error(
    flashcard("data_types", fontsize = 1),
    "`fontsize` must be a character"
  )
  expect_error(
    flashcard("data_types", fontcolor = 1),
    "`fontcolor` must be a character"
  )
  expect_error(
    flashcard("data_types", linkcolor = 1),
    "`linkcolor` must be a character"
  )
  expect_error(
    flashcard("data_types", use_browser = 1),
    "`use_browser` must be a logical \\(TRUE or FALSE\\)"
  )
  expect_error(
    flashcard("data_types", omit_na = 1),
    "`omit_na` must be a logical \\(TRUE or FALSE\\)"
  )
  expect_error(
    create_deck(x = c("as_tibble()", "bind_rows()", "c()"), title = 1),
    "`title` must be a character"
  )
})

test_that("validations pass", {
  skip_on_cran()
  testdeck <- read.csv(test_path("testdata", "operators.csv"))
  testdeck2 <- testdeck
  names(testdeck2) <- NULL
  expect_error(
    validate_deck(letters, pkg = TRUE),
    "This deck is not recognized as a available deck or a valid data frame or CSV file."
  )
  expect_error(
    validate_deck("test", pkg = TRUE),
    "This deck is not recognized as a available deck or a valid data frame or CSV file."
  )
  expect_error(
    validate_deck(1:5, pkg = TRUE),
    "This deck is not recognized as a available deck or a valid data frame or CSV file."
  )
  expect_error(
    validate_deck(testdeck2, pkg = TRUE),
    "This data frame does not have term column."
  )
  names(testdeck2)[1] <- "term"
  expect_error(
    validate_deck(testdeck2, pkg = TRUE),
    "This data frame does not have description column."
  )
  names(testdeck2) <- c("term", "description", "package", "b")
  expect_message(validate_deck(testdeck2, pkg = TRUE, omit = TRUE), "No title column, so using testdeck2 for title.")
  names(testdeck2) <- c("term", "description", "package", "title")
  expect_no_message(validate_deck(testdeck2, pkg = TRUE, omit = TRUE))
  testdeck3 <- testdeck[, 1:3]
  write.csv(testdeck3, test_path("testdata", "testdeck3.csv"))
  expect_message(validate_deck(test_path("testdata", "testdeck3.csv"),
    pkg = FALSE, omit = TRUE
  ), "so using filename for title")
  suppressMessages(expect_message(validate_deck(
    test_path("testdata", "testdeck3.csv"),
    pkg = FALSE, omit = TRUE
  )))
  testdeck4 <- testdeck[, -3]
  write.csv(testdeck4, test_path("testdata", "testdeck4.csv"))
  expect_no_message(validate_deck(test_path("testdata", "testdeck4.csv"),
    pkg = FALSE, omit = TRUE
  ))
  suppressMessages(expect_message(validate_deck(
    test_path("testdata", "testdeck4.csv"),
    pkg = TRUE, omit = TRUE
  ), "This deck does not include a"))
  testdeck5 <- testdeck[, -4]
  write.csv(testdeck5, test_path("testdata", "testdeck5.csv"))
  expect_message(validate_deck(test_path("testdata", "testdeck5.csv"),
    pkg = TRUE, omit = TRUE
  ), "so using filename for title")
  # testdeck6 <- testdeck[, 1]
  # write.csv(testdeck6, test_path("testdata", "testdeck6.csv"))
  file.remove(test_path("testdata", "testdeck3.csv"))
  file.remove(test_path("testdata", "testdeck4.csv"))
  file.remove(test_path("testdata", "testdeck5.csv"))
  testflash <- validate_deck(test_path("testdata", "operators.csv"),
    pkg = TRUE, omit = TRUE
  )
  expect_true("title" %in% names(testflash))
  expect_equal(nrow(validate_deck(ex_function_df1, pkg = TRUE, omit = TRUE)), 5)
  expect_equal(nrow(validate_deck(ex_function_df1, pkg = TRUE, omit = FALSE)), 9)
})

test_that("decks are created correctly", {
  expect_no_error(create_deck(x = c("as_tibble()", "bind_rows()", "c()")))
})

test_that("fonts are specified properly", {
  skip_on_cran()
  suppressMessages(expect_no_error(flashcard("data_types", fontsize = "small")))
  suppressMessages(expect_no_error(flashcard("data_types", fontsize = "large")))
  suppressMessages(expect_no_error(flashcard("data_types", fontsize = "100%")))
  suppressMessages(expect_error(flashcard("data_types", fontsize = "100"), "The `fontsize` value is invalid"))

  suppressMessages(expect_no_error(flashcard("data_types", fontcolor = "Aqua")))
  suppressMessages(expect_no_error(flashcard("data_types", fontcolor = "#000000")))
  suppressMessages(expect_error(flashcard("data_types", fontcolor = "tann"), "The `fontcolor` tann is not a valid color"))
  suppressMessages(expect_no_error(flashcard("data_types", linkcolor = "Aqua")))
  suppressMessages(expect_no_error(flashcard("data_types", linkcolor = "#000000")))
  suppressMessages(expect_error(flashcard("data_types", linkcolor = "tann"), "The `linkcolor` tann is not a valid color"))
})

test_that("output files are HTML", {
  skip_on_cran()
  suppressMessages(expect_no_error(flashcard("data_types", file = "mytest.Rmd")))
  suppressMessages(expect_no_error(flashcard("data_types", file = "mytest.html")))
  suppressMessages(expect_error(flashcard("data_types", file = "mytest.HTM")))
  file.remove("mytest.Rmd")
  file.remove("mytest.html")
})

Try the flashr package in your browser

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

flashr documentation built on June 8, 2025, 11:39 a.m.