PROJECTS_COLS_CONCISE <- c("project_id", "project_name", "client_id", "billable", "archived")
PROJECTS_COLS <- c(
"project_id", "project_name", "client_id", "workspace_id", "billable", "public", "archived", "template",
"memberships", "time_estimate"
)
test_that("get projects", {
skip_on_cran()
skip_if(NO_API_KEY_IN_ENVIRONMENT)
projects <- projects()
expect_identical(names(projects), PROJECTS_COLS_CONCISE)
expect_true(PROJECT_ID_CLOCKIFY %in% projects$project_id)
})
test_that("extended output", {
skip_on_cran()
skip_if(NO_API_KEY_IN_ENVIRONMENT)
projects <- projects(concise = FALSE)
expect_identical(names(projects), PROJECTS_COLS)
})
test_that("get project", {
skip_on_cran()
skip_if(NO_API_KEY_IN_ENVIRONMENT)
emayili <- project(PROJECT_ID_EMAYILI)
expect_identical(names(emayili), PROJECTS_COLS_CONCISE)
expect_true(PROJECT_ID_EMAYILI %in% emayili$project_id)
})
test_that("create project", {
skip_on_cran()
skip_if(NO_API_KEY_IN_ENVIRONMENT)
asana <- project_create("Asana", CLIENT_ID_RSTUDIO)
expect_identical(names(asana), PROJECTS_COLS_CONCISE)
expect_equal(CLIENT_ID_RSTUDIO, asana$client_id)
PROJECT_ID_ASANA <<- asana$project_id
})
test_that("update user billable rate", {
skip_on_cran()
skip_if(NO_API_KEY_IN_ENVIRONMENT)
RATE <- random_integer()
project_update_billable_rate(PROJECT_ID_ASANA, USER_ID_AUTHENTICATED, RATE)
expect_equal(
project(PROJECT_ID_ASANA, concise = FALSE) %>%
select(-project_id) %>%
unnest(memberships) %>%
filter(user_id == USER_ID_AUTHENTICATED) %>%
pull(rate_amount),
RATE
)
})
test_that("update project time estimate", {
skip_on_cran()
skip_if(NO_API_KEY_IN_ENVIRONMENT)
ESTIMATE <- "PT2H45M30S"
project_update_estimate_time(PROJECT_ID_ASANA, ESTIMATE, TRUE, TRUE)
expect_equal(
project(PROJECT_ID_ASANA, concise = FALSE) %>% unnest(time_estimate) %>% pull(estimate),
ESTIMATE
)
})
test_that("update project membership", {
skip_on_cran()
skip_if(NO_API_KEY_IN_ENVIRONMENT)
# Add member.
memberships <- project_update_memberships(
PROJECT_ID_EMAYILI,
c(USER_ID_AUTHENTICATED, USER_ID_BOB)
) %>%
select(-project_id) %>%
unnest(memberships) %>%
pull(user_id)
expect_true(USER_ID_AUTHENTICATED %in% memberships && USER_ID_BOB %in% memberships)
# Remove member.
memberships <- project_update_memberships(
PROJECT_ID_EMAYILI,
USER_ID_AUTHENTICATED
) %>%
select(-project_id) %>%
unnest(memberships) %>%
pull(user_id)
expect_true(USER_ID_AUTHENTICATED %in% memberships && !(USER_ID_BOB %in% memberships))
})
test_that("update project", {
skip_on_cran()
skip_if(NO_API_KEY_IN_ENVIRONMENT)
# Archive project.
asana <- project_update(PROJECT_ID_ASANA, archived = TRUE)
expect_true(asana$archived)
})
test_that("delete project", {
skip_on_cran()
skip_if(NO_API_KEY_IN_ENVIRONMENT)
expect_true(project_delete(PROJECT_ID_ASANA))
expect_false(PROJECT_ID_ASANA %in% projects()$project_id)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.