tests/testthat/test-safe-data.R

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#
# - - - - - - - - - - - - - - - - - ERRORS - - - - - - - - - - - - - - - - - #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#
test_that("safe_data fails when attempt calling function with invalid class", {
  expect_error(
    dsROCrate::safe_data(structure(list(), class = "InvalidClass"))
  )
})

test_that("safe_data fails when attempt calling with invalid connection", {
  # setup
  ## create basic RO-Crate
  basic_rocrate <- rocrateR::rocrate_5s()

  expect_error(
    basic_rocrate |>
      dsROCrate::safe_data(connection = NULL)
  )
})

test_that("safe_data fails when attempt adding invalid project", {
  # setup
  ## open connection to OBiBa's Opal demo server
  opal_con <- opal_demo_con()
  ## create basic RO-Crate
  basic_rocrate <- rocrateR::rocrate_5s()

  expect_error(
    basic_rocrate |>
      dsROCrate::safe_data(project = "Invalid Project", connection = opal_con)
  )

  # close connection to OBiBa's Opal demo server
  opalr::opal.logout(opal_con)
})

test_that("safe_data fails when attempt calling without a project", {
  # setup
  ## open connection to OBiBa's Opal demo server
  opal_con <- opal_demo_con()
  ## create basic RO-Crate
  basic_rocrate <- rocrateR::rocrate_5s()

  expect_error(
    basic_rocrate |>
      dsROCrate::safe_data(connection = opal_con)
  )

  # close connection to OBiBa's Opal demo server
  opalr::opal.logout(opal_con)
})

test_that("safe_data fails when attempt calling with project = NULL", {
  # setup
  ## open connection to OBiBa's Opal demo server
  opal_con <- opal_demo_con()
  ## create basic RO-Crate
  basic_rocrate <- rocrateR::rocrate_5s()

  expect_error(
    basic_rocrate |>
      dsROCrate::safe_data(connection = opal_con, project = NULL)
  )

  # close connection to OBiBa's Opal demo server
  opalr::opal.logout(opal_con)
})

test_that("safe_data fails when attempt calling with multiple projects", {
  # setup
  ## open connection to OBiBa's Opal demo server
  opal_con <- opal_demo_con()
  ## create basic RO-Crate
  basic_rocrate <- rocrateR::rocrate_5s()

  expect_error(
    basic_rocrate |>
      dsROCrate::safe_data(connection = opal_con, project = c("A", "B"))
  )

  # close connection to OBiBa's Opal demo server
  opalr::opal.logout(opal_con)
})

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#
# - - - - - - - - - - - - - - - - - VALID  - - - - - - - - - - - - - - - - - #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#
test_that("safe_data works", {
  # open connection to OBiBa's Opal demo server
  opal_con <- opal_demo_con()

  basic_rocrate <- rocrateR::rocrate_5s()

  # add all datasets for a valid project
  basic_rocrate_2 <- basic_rocrate |>
    dsROCrate::safe_data(
      project = attr(opal_con, "PROJECT"),
      connection = opal_con
    )
  ## extract datasets
  basic_rocrate_2_sd <- basic_rocrate_2 |>
    .get_entity(type = "Dataset")
  ## extract datasets' names
  basic_rocrate_2_sd_names <- basic_rocrate_2_sd |>
    sapply(getElement, name = "name")
  ## verify that CNSIM1, CNSIM2 and CNSIM3 are part in the crate
  expect_true(all(
    c("CNSIM1", "CNSIM2", "CNSIM3") %in% basic_rocrate_2_sd_names
  ))

  # add specific datasets for a valid project
  basic_rocrate_3 <- basic_rocrate |>
    dsROCrate::safe_data(
      project = attr(opal_con, "PROJECT"),
      tables = attr(opal_con, "TABLES"),
      connection = opal_con
    )
  ## extract datasets
  basic_rocrate_3_sd <- basic_rocrate_3 |>
    .get_entity(type = "Dataset")
  ## verify the length of the datasets is equal to 1 + 1 (root directory)
  expect_equal(length(basic_rocrate_3_sd), 2)

  basic_rocrate_4 <- basic_rocrate |>
    dsROCrate::safe_data(
      project = attr(opal_con, "PROJECT"),
      connection = opal_con,
      user = "dsuser"
    )
  ## extract datasets
  basic_rocrate_4_sd <- basic_rocrate_4 |>
    .get_entity(type = "Dataset")
  ## extract datasets' names
  basic_rocrate_4_sd_names <- basic_rocrate_4_sd |>
    sapply(getElement, name = "name")
  ## verify that CNSIM1, CNSIM2 and CNSIM3 are part in the crate
  expect_true(all(
    c("CNSIM1", "CNSIM2", "CNSIM3") %in% basic_rocrate_4_sd_names
  ))

  # close connection to OBiBa's Opal demo server
  opalr::opal.logout(opal_con)
})

Try the dsROCrate package in your browser

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

dsROCrate documentation built on Oct. 16, 2026, 5:09 p.m.