tests/testthat/test-get_attributes.R

context("get_attributes")

test_that("get_attributes returns attributes", {
  file <- system.file("tests", emld::eml_version(),
    "eml-datasetWithAttributelevelMethods.xml",
    package = "emld"
  )
  eml <- read_eml(file)
  x <- eml$dataset$dataTable$attributeList
  df <- get_attributes(x, eml)
  attributes <- df$attributes
  factors <- df$factors

  expect_gt(nrow(attributes), 0)
  expect_gt(ncol(attributes), 0)
  expect_null(factors)
})

test_that("get_attributes returns attributes and factors", {
  file <- system.file("tests",
    emld::eml_version(),
    "eml-i18n.xml",
    package = "emld"
  )
  eml <- read_eml(file)
  x <- eml$dataset$dataTable$attributeList
  df <- get_attributes(x, eml)
  attributes <- df$attributes
  factors <- df$factors

  expect_gt(nrow(attributes), 0)
  expect_gt(ncol(attributes), 0)
  expect_gt(nrow(factors), 0)
  expect_gt(ncol(factors), 0)
})

test_that("get_attributes works with references", {
  file <- system.file("tests",
    emld::eml_version(),
    "eml-i18n.xml",
    package = "emld"
  )
  eml <- EML::read_eml(file)
  eml$dataset$dataTable$attributeList$id <- "att_id"
  dataTable_2 <- list(
    entityName = "entityName",
    attributeList = list(references = "att_id")
  )
  eml$dataset$dataTable <- list(eml$dataset$dataTable, dataTable_2)

  expect_true(eml_validate(eml))

  x <- eml$dataset$dataTable[[2]]$attributeList

  expect_warning(get_attributes(x))

  x <- eml$dataset$dataTable[[1]]$attributeList
  df <- get_attributes(x, eml)
  attributes <- df$attributes
  factors <- df$factors

  expect_gt(nrow(attributes), 0)
  expect_gt(ncol(attributes), 0)
  expect_gt(nrow(factors), 0)
  expect_gt(ncol(factors), 0)
})

test_that("get_attributes errors when not used with an attributeList", {
  file <- system.file("tests", emld::eml_version(),
                      "eml-datasetWithAttributelevelMethods.xml",
                      package = "emld"
  )
  eml <- read_eml(file)
  
  x <- eml$dataset$dataTable
  y <- eml$dataset$dataTable$attributeList$attribute
  
  expect_error(get_attributes(x))
  expect_error(get_attributes(y))
})

Try the EML package in your browser

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

EML documentation built on April 29, 2022, 1:06 a.m.