Skip to content

Commit

Permalink
data_files(), dataset_metadata(), and get_dataset() simple test…
Browse files Browse the repository at this point in the history
…s & examples

ref #4
  • Loading branch information
wibeasley committed Mar 20, 2020
1 parent 5ec4d7f commit 2ed1a11
Show file tree
Hide file tree
Showing 6 changed files with 130 additions and 19 deletions.
5 changes: 3 additions & 2 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Package: dataverse
Version: 0.2.1.9001
Version: 0.2.1.9002
Title: Client for Dataverse 4 Repositories
Authors@R: c(
person(
Expand Down Expand Up @@ -48,6 +48,7 @@ Suggests:
covr,
foreign,
knitr,
purrr,
testthat,
UNF,
yaml
Expand All @@ -59,4 +60,4 @@ URL: https://github.com/iqss/dataverse-client-r
BugReports: https://github.com/iqss/dataverse-client-r/issues
VignetteBuilder: knitr
Encoding: UTF-8
RoxygenNote: 7.0.2
RoxygenNote: 7.1.0
45 changes: 36 additions & 9 deletions R/get_dataset.R
Original file line number Diff line number Diff line change
@@ -1,21 +1,48 @@
#' @rdname get_dataset
#' @title Get dataset
#' @description Retrieve a Dataverse dataset or its metadata
#' @details \code{get_dataset} retrieves details about a Dataverse dataset. \code{dataset_metadata} returns a named metadata block for a dataset. This is already returned by \code{\link{get_dataset}}, but this function allows you to retrieve just a specific block of metadata, such as citation information. \code{dataset_files} returns a list of files in a dataset, similar to \code{\link{get_dataset}}. The difference is that this returns only a list of \dQuote{dataverse_dataset} objects, whereas \code{\link{get_dataset}} returns metadata and a data.frame of files (rather than a list of file objects).
#'
#' @details
#' \code{get_dataset} retrieves details about a Dataverse dataset.
#'
#' \code{dataset_metadata} returns a named metadata block for a dataset.
#' This is already returned by \code{\link{get_dataset}}, but this function allows
#' you to retrieve just a specific block of metadata, such as citation information.
#'
#' \code{dataset_files} returns a list of files in a dataset, similar to
#' \code{\link{get_dataset}}. The difference is that this returns only a list of
#' \dQuote{dataverse_dataset} objects, whereas \code{\link{get_dataset}} returns
#' metadata and a data.frame of files (rather than a list of file objects).
#'
#' @template ds
#' @template version
#' @template envvars
#' @template dots
#' @return A list of class \dQuote{dataverse_dataset} or a list of a form dependent on the specific metadata block retrieved. \code{dataset_files} returns a list of objects of class \dQuote{dataverse_file}.
#' @examples
#' \dontrun{
#' # download file from:
#' # https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/ARKOTI
#' monogan <- get_dataverse("monogan")
#' monogan_data <- dataverse_contents(monogan)
#' d1 <- get_dataset(monogan_data[[1]])
#' dataset_files(monogan_data[[1]])
#' f <- get_file(d1$files$datafile$id[3])
#' Sys.setenv("DATAVERSE_SERVER" = "demo.dataverse.org")
#' Sys.setenv("DATAVERSE_KEY" = "c7208dd2-6ec5-469a-bec5-f57e164888d4")
#'
#' # Download file from: https://demo.dataverse.org/file.xhtml?fileId=769385
#' dv <- get_dataverse("dataverse-client-r")
#' contents <- dataverse_contents(dv)
#'
#' dataset_files(contents[[1]]) # Dataset contains 2 files
#' dataset_metadata(contents[[1]]) # Easier to query later
#'
#' set <- get_dataset(contents[[1]]) # 1st dataset w/n dataverse
#' f <- get_file(set$files$id[2]) # 2nd file w/n dataset
#'
#' # Check the *binary* representation of the file.
#' length(f)
#' head(f)
#'
#' # Examine the plain-text representation.
#' tmp <- tempfile(fileext = "svg")
#' writeBin(as.vector(f), tmp)
#' svg_lines <- readLines(tmp)
#' head(svg_lines)
#' }
#' @seealso \code{\link{create_dataset}}, \code{\link{update_dataset}}, \code{\link{delete_dataset}}, \code{\link{publish_dataset}}, \code{\link{dataset_files}}, \code{\link{dataset_metadata}}
#' @export
Expand Down Expand Up @@ -49,7 +76,7 @@ dataset_metadata <- function(
server = Sys.getenv("DATAVERSE_SERVER"),
...
) {
dataset <- dataset_id(dataset, key = key, server = server, ...)
dataset <- dataset_id(dataset, key = key, server = server, ...)
if (!is.null(block)) {
u <- paste0(api_url(server), "datasets/", dataset, "/versions/", version, "/metadata/", block)
} else {
Expand Down
40 changes: 32 additions & 8 deletions man/get_dataset.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions tests/testthat/tests-dataset_files.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# See https://demo.dataverse.org/dataverse/dataverse-client-r
# https://doi.org/10.70122/FK2/FAN622

test_that("download tab from DOI and filename", {
dv <- get_dataverse("dataverse-client-r")
contents <- dataverse_contents(dv)
actual <- dataset_files(contents[[1]])

expect_length(actual, 2L)
expect_equal(purrr::map_chr(actual, "label") , c("roster-bulls-1996.tab", "vector-basketball.svg"))
expect_equal(purrr::map_lgl(actual, "restricted") , c(FALSE, FALSE))
expect_equal(purrr::map_int(actual, "version") , c(2L, 2L))
expect_equal(purrr::map_int(actual, "datasetVersionId") , c(53155L, 53155L))
})
12 changes: 12 additions & 0 deletions tests/testthat/tests-dataset_metadata.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# See https://demo.dataverse.org/dataverse/dataverse-client-r
# https://doi.org/10.70122/FK2/FAN622

test_that("download tab from DOI and filename", {
dv <- get_dataverse("dataverse-client-r")
contents <- dataverse_contents(dv)
actual <- dataset_metadata(contents[[1]])

expect_length(actual, 2L)
expect_equal(actual[[1]], "Citation Metadata")
expect_s3_class(actual[[2]], "data.frame")
})
33 changes: 33 additions & 0 deletions tests/testthat/tests-get_dataset.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# See https://demo.dataverse.org/dataverse/dataverse-client-r
# https://doi.org/10.70122/FK2/FAN622

test_that("download tab from DOI and filename", {
dv <- get_dataverse("dataverse-client-r")
contents <- dataverse_contents(dv)
actual <- get_dataset(contents[[1]])
files <- actual$files

expect_length(actual , 13L)
expect_equal(actual$id , 53155L)
expect_equal(actual$datasetId , 396356L)
expect_equal(actual$datasetPersistentId , "doi:10.70122/FK2/FAN622")
expect_equal(actual$storageIdentifier , "file://10.70122/FK2/FAN622")
expect_equal(actual$versionState , "DRAFT")
expect_equal(actual$UNF , "UNF:6:hrleySyT6vzwEih3+nhp8A==")
expect_equal(actual$license , "CC0")

expect_equal(nrow(files) , 2L)
expect_equal(ncol(files) , 21L)

expect_equal(files$label , c("roster-bulls-1996.tab", "vector-basketball.svg"))
expect_equal(files$restricted , c(FALSE, FALSE))
expect_equal(files$version , c(2L, 2L))
expect_equal(files$datasetVersionId , c(53155L, 53155L))
expect_equal(files$directoryLabel , c(NA, "resources"))
expect_equal(files$id , c(396357L, 769385L))
expect_equal(files$persistentId , c("", ""))
expect_equal(files$pidURL , c("", ""))
expect_equal(files$filename , c("roster-bulls-1996.tab", "vector-basketball.svg"))
expect_equal(files$description , c(NA, "CC-0-from-https://publicdomainvectors.org/en/free-clipart/Basketball-vector-symbol/69448.html"))

})

0 comments on commit 2ed1a11

Please sign in to comment.