tests/testthat/test-from_url.R

test_that("from_url fails nicely", {

  skip_on_cran()
  skip_if_offline("github.com")

  expect_warning(
    rds_from_url("https://github.com/nflverse/nfldata/blob/master/data/games.rds"),
    regexp = "Failed to readRDS"
  )

  expect_warning(
    raw_from_url("https://github.com/nflverse/nfl/blob/master/data/games.rd"),
    regexp = "HTTP error"
  )

  # skip_if(!rlang::is_installed("qs"))
  expect_warning(
    qs_from_url("https://github.com/nflverse/nfldata/raw/master/data/games.rds"),
    regexp = "Failed to parse file"
  )
  expect_warning(
    qs_from_url("https://asfdjklasfsadffasd.com"),
    regexp = "Failed to retrieve data"
  )

})

test_that("progress updates in raw_from_url work", {

  skip_on_cran()
  skip_if_offline("github.com")

  # enable progress updates in batch mode for testing the progress updates
  old <- options(progressr.enable = TRUE)

  urls <- rep("https://github.com/nflverse/nflverse-pbp/raw/master/teams_colors_logos.rds", 3)

  expect_condition({
    load <- progressr::with_progress({
      p <- progressr::progressor(along = urls)
      lapply(urls, progressively(raw_from_url, p = p))
    })
  }, class = "progression")

  expect_null({
    capture_condition({
      load <- progressr::without_progress({
        p <- progressr::progressor(along = urls)
        lapply(urls, progressively(raw_from_url, p = p))
      })
    })
  })

  expect_true(is.list(load))
  expect_true(is.raw(unlist(load)))
  options(old)
})

test_that("nflverse_download downloads files",{

  skip_on_cran()
  skip_if_offline("github.com")

  temp_dir <- tempdir(check = TRUE)

  expect_error(
    expect_warning(
      nflverse_download(
        "asdf",
        folder_path = temp_dir,
        .token = Sys.getenv("NFLVERSE_GH_TOKEN", unset =  gh::gh_token())),
      "Could not find"
    ),
    "No matching releases"
  )

  expect_warning(
    nflverse_download(
      combine, "test",
      folder_path = temp_dir,
      file_type = "qs",
      .token = Sys.getenv("NFLVERSE_GH_TOKEN", unset =  gh::gh_token())
    ),
    regexp = "Could not find file"
  )

  nflverse_download(
    combine, "contracts",
    folder_path = temp_dir,
    file_type = "parquet",
    .token = Sys.getenv("NFLVERSE_GH_TOKEN", unset =  gh::gh_token())
  )

  expect_true(
    length(list.files(temp_dir,recursive = TRUE)) >= 2
  )

})

test_that("nflverse_releases lists releases",{

  skip_on_cran()
  skip_if_offline("github.com")

  releases <- nflverse_releases(.token = Sys.getenv("NFLVERSE_GH_TOKEN", unset =  gh::gh_token()))

  expect_true(is.data.frame(releases))
  expect_true(nrow(releases) >= 15)
  expect_true(all(c("pbp", "player_stats") %in% releases$release_name))

})

Try the nflreadr package in your browser

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

nflreadr documentation built on Sept. 8, 2023, 5:57 p.m.