tests/testthat/test-projects.R

# Tests for project management functions

test_that("get_all_projects returns a list with projects", {
  skip_on_cran()
  skip_if_no_token()

  result <- get_all_projects()

  expect_type(result, "list")
  expect_true("projects" %in% names(result))
  expect_true(length(result$projects) > 0)
})

test_that("get_project_id returns project ID for existing project", {
  skip_on_cran()
  skip_if_no_token()
  skip_if_test_project_missing()

  # Use the test project
  proj_id <- get_project_id(
    project_name = TEST_PROJECT_NAME,
    create = FALSE,
    verbose = FALSE
  )

  expect_type(proj_id, "character")
  expect_true(nchar(proj_id) > 0)
})

test_that("get_project_id with create=TRUE returns same ID for existing project", {
  skip_on_cran()
  skip_if_no_token()
  skip_if_test_project_missing()

  proj_id1 <- get_project_id(
    project_name = TEST_PROJECT_NAME,
    create = FALSE,
    verbose = FALSE
  )

  proj_id2 <- get_project_id(
    project_name = TEST_PROJECT_NAME,
    create = TRUE,
    verbose = FALSE
  )

  expect_equal(proj_id1, proj_id2)
})

test_that("add_project creates a new project and returns ID", {
  skip_on_cran()
  skip_if_no_token()

  # Create a unique test project name
  unique_name <- paste0("test_rtodoist_", format(Sys.time(), "%Y%m%d%H%M%S"))

  proj_id <- add_project(project_name = unique_name, verbose = FALSE)

  expect_type(proj_id, "character")
  expect_true(nchar(proj_id) > 0)

  # Verify project exists
  all_projects <- get_all_projects()
  project_names <- sapply(all_projects$projects, function(x) x$name)
  expect_true(unique_name %in% project_names)
})

Try the rtodoist package in your browser

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

rtodoist documentation built on Feb. 14, 2026, 5:06 p.m.