Testing Your Package of Tutorials
Author: David Kane

This vignette demonstrates how to use the tutorial.helpers package to “test” the tutorials in your package. I place “test” in quotes because the testing is not very extensive. We are merely ensuring that your tutorials can be knitted without error. I think that this guarantees that the tutorials will run when students press the “Start Tutorial” button, but I am not certain. This testing certainly does nothing to ensure that the substance of your tutorials is correct.

If you are using the testthat framework for testing, the `tests` directory would have a file called `testthat.R` which just contains:

    library(testthat)
    library(your.package)

    test_check("your.packge")

Note how the name of your.package is not quoted with `library()` but is quoted with `test_check()`.

Within the `tests/testthat` directory there will be a variety of testing scripts. Create a file called `test-tutorials.R`. (The file can be named whatever you want, consistent with testthat requirements.) It might contain:

    tut_paths <- tutorial.helpers::return_tutorial_paths("your.package")

    test_that("All tutorials can be knit without error", {
      expect_null(
        tutorial.helpers::knit_tutorials(tut_paths)
      )
    })

    test_that("All tutorials have the expected components", {
      expect_null(
        tutorial.helpers::check_tutorial_defaults(tut_paths)
      )
    })

The first step in testing the tutorials in your package is to determine the the full paths to all those tutorials. The `return_tutorial_paths()` returns a vector of those paths.

The second step is to confirm that all your tutorials knit without error. `knit_tutorials()`, perhaps the most useful function in the entire package, accomplishes this. If a tutorial does not knit, an error is generated and the test fails.

The third step is only relevant for tutorial creators who follow our advice concerning tutorial construction. In particular, `check_tutorial_defaults()` ensures that, somewhere in each tutorial, you have included the same key components as exist in the “Helpers Tutorial” R Markdown template.

`check_tutorial_defaults()` also fails if you do not have `library(learnr)` and `library(tutorial.helpers)` in your tutorial.

Both `knit_tutorials()` and `check_tutorial_defaults()` return `NULL`, which is why we use `expect_null()`.