context("Shoji")
test_that("is.shoji", {
fo <- list(element = "shoji:view", self = 2, description = 3)
expect_false(is.shoji(fo))
expect_true(is.shoji.like(fo))
class(fo) <- "shoji"
expect_true(is.shoji(fo))
})
test_that("ShojiObject init and is", {
expect_true(is.shojiObject(ShojiObject(element = 1, self = 2, description = 3)))
expect_false(is.shojiObject(5))
fo <- list(element = 1, self = 2, description = 3)
class(fo) <- "shoji"
expect_false(is.shojiObject(fo))
expect_true(is.shojiObject(ShojiObject(
element = 1, self = 2, description = 3,
foo = 4, junk = 5
)))
sh <- ShojiObject(
element = 1, self = 2, description = 3, foo = 4, junk = 5,
body = list(a = 12, f = 66)
)
expect_identical(sh@self, 2)
})
test_that("ShojiCatalog", {
fo <- structure(list(
element = 1, self = 2, description = 3,
index = list(`/a` = list(4), `/b` = list(5))
),
class = "shoji"
)
sho <- ShojiObject(fo)
expect_false(is.catalog(sho))
expect_error(index(sho))
fo$element <- "shoji:catalog" ## TODO: implement ShojiObject subclassing
sho <- ShojiCatalog(fo)
expect_true(is.catalog(sho))
expect_identical(index(sho), fo$index)
expect_true(is.catalog(sho[1]))
expect_error(sho[2:3], "Subscript out of bounds: 3")
expect_error(sho[2:10], "Subscript out of bounds: 3:10")
expect_true(is.catalog(sho[c(TRUE, FALSE)]))
expect_error(
sho[c(TRUE, FALSE, TRUE)],
"Subscript out of bounds: got 3 logicals, need 2"
)
expect_identical(sho[TRUE], sho)
expect_identical(sho["/a"], sho[1]) # nolint
expect_error(sho[c("/a", "c")], "Undefined elements selected: c") # nolint
})
with_mock_crunch({
full.urls <- DatasetCatalog(crGET("https://app.crunch.io/api/datasets/all"))
rel.urls <- DatasetCatalog(
crGET("https://app.crunch.io/api/datasets/all", query = list(relative = "on"))
)
test_that("urls() method returns absolute URLs", {
expect_identical(urls(full.urls), urls(rel.urls))
})
test_that("ShojiCatalog can use any method it has to index", {
expect_equal(
full.urls["https://app.crunch.io/api/users/notme/",
secondary = owners(full.urls)
],
full.urls[1]
)
expect_equal(
full.urls[["https://app.crunch.io/api/users/notme/",
secondary = owners(full.urls)]],
full.urls[[1]]
)
})
test_that("shojiURL", {
ds <- cachedLoadDataset("test ds")
expect_identical(
shojiURL(ds, "catalogs", "variables"),
"https://app.crunch.io/api/datasets/1/variables/"
)
expect_error(
shojiURL(ds, "catalogs", "NOTACATALOG"),
paste0(
"No URL ", dQuote("NOTACATALOG"), " in collection ",
dQuote("catalogs")
)
)
})
})
with_test_authentication({
ds <- newDataset(df[1:2, 1:2])
test_that("refresh", {
ds2 <- ds
ds2@body$name <- "something else"
expect_false(identical(ds2@body$name, ds@body$name))
expect_false(identical(ds2@body$name, refresh(ds2)@body$name))
expect_identical(refresh(ds2)@body$name, ds@body$name)
})
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.