tests/testthat/test-shiny.R

test_that("perspectiveOutput creates shiny output", {
  skip_if_not_installed("shiny")
  out <- perspectiveOutput("test_id")
  expect_s3_class(out, "shiny.tag.list")
})

test_that("perspectiveProxy creates proxy object", {
  proxy <- perspectiveProxy(list(), "test_id")
  expect_s3_class(proxy, "perspective_proxy")
  expect_equal(proxy$id, "test_id")
})

test_that("proxy validation works", {
  expect_error(psp_clear("not_a_proxy"), "perspectiveProxy")
  expect_error(psp_reset(list()), "perspectiveProxy")
})

test_that("psp_remove validates proxy", {
  expect_error(psp_remove("not_a_proxy", keys = 1), "perspectiveProxy")
})

test_that("psp_remove rejects empty keys", {
  proxy <- perspectiveProxy(list(), "test_id")
  expect_error(psp_remove(proxy, keys = c()), "non-empty")
  expect_error(psp_remove(proxy), "non-empty")
})

test_that("psp_export validates proxy", {
  expect_error(psp_export("not_a_proxy"), "perspectiveProxy")
})

test_that("psp_export validates format", {
  proxy <- perspectiveProxy(list(), "test_id")
  expect_error(psp_export(proxy, format = "invalid"), "should be one of")
})

test_that("psp_save validates proxy", {
  expect_error(psp_save("not_a_proxy"), "perspectiveProxy")
})

test_that("psp_on_update validates proxy", {
  expect_error(psp_on_update("not_a_proxy"), "perspectiveProxy")
})

# ---- windowed export tests ----

test_that("psp_export validates window params", {
  proxy <- perspectiveProxy(list(), "test_id")
  expect_error(psp_export(proxy, start_row = "a"), "single numeric value")
  expect_error(psp_export(proxy, end_row = c(1, 2)), "single numeric value")
  expect_error(psp_export(proxy, start_col = NA), "single numeric value")
  expect_error(psp_export(proxy, end_col = TRUE), "single numeric value")
})

# ---- table metadata proxy tests ----

test_that("psp_schema validates proxy", {
  expect_error(psp_schema("not_a_proxy"), "perspectiveProxy")
})

test_that("psp_size validates proxy", {
  expect_error(psp_size("not_a_proxy"), "perspectiveProxy")
})

test_that("psp_columns validates proxy", {
  expect_error(psp_columns("not_a_proxy"), "perspectiveProxy")
})

# ---- expression validation tests ----

test_that("psp_validate_expressions validates proxy", {
  expect_error(psp_validate_expressions("not_a_proxy", "x"), "perspectiveProxy")
})

test_that("psp_validate_expressions requires non-empty character vector", {
  proxy <- perspectiveProxy(list(), "test_id")
  expect_error(psp_validate_expressions(proxy, c()), "non-empty character")
  expect_error(psp_validate_expressions(proxy, 123), "non-empty character")
  expect_error(psp_validate_expressions(proxy), "non-empty character")
})

Try the perspectiveR package in your browser

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

perspectiveR documentation built on March 30, 2026, 9:06 a.m.