tests/testthat/test-metadata.R

context("Metadata API")

# provide the details for creating an object
rand_int <- as.integer(runif(1,1,100000))
base_obj_name <- paste0("Custom_Account_", rand_int)
custom_object <- list()
custom_object$fullName <- paste0(base_obj_name, "__c")
custom_object$label <- paste0(gsub("_", " ", base_obj_name))
custom_object$pluralLabel <- paste0(base_obj_name, "s")
custom_object$nameField <- list(displayFormat = 'AN-{0000}', 
                                label = paste0(base_obj_name, ' Number'), 
                                type = 'AutoNumber')
custom_object$deploymentStatus <- 'Deployed'
custom_object$sharingModel <- 'ReadWrite'
custom_object$enableActivities <- 'true'
custom_object$description <- paste0(base_obj_name, " created by the Metadata API")
custom_object_result <- sf_create_metadata(metadata_type = 'CustomObject',
                                           metadata = custom_object)

# adding custom fields 
# input formatted as a list
custom_fields1 <- list(list(fullName=paste0(base_obj_name, '__c.CustomField1__c'),
                            label='Test Field1',
                            length=100,
                            type='Text'), 
                       list(fullName=paste0(base_obj_name, '__c.CustomField2__c'),
                            label='Test Field2',
                            length=100,
                            type='Text'))
create_fields_result1 <- sf_create_metadata(metadata_type = 'CustomField',
                                            metadata = custom_fields1)

# input formatted as a data.frame
custom_fields2 <- data.frame(fullName=c(paste0(base_obj_name, '__c.CustomField3__c'), 
                                        paste0(base_obj_name, '__c.CustomField4__c')), 
                             label=c('Test Field3', 'Test Field4'), 
                             length=c(44,45), 
                             type=c('Text', 'Text'))
create_fields_result2 <- sf_create_metadata(metadata_type = 'CustomField', 
                                            metadata = custom_fields2)

# specify a new labels
update_metadata <- custom_object 
update_metadata$fullName <- paste0(base_obj_name, "__c")
update_metadata$label <- paste0(gsub("_", " ", base_obj_name), " - Updated")
update_metadata$pluralLabel <- paste0(base_obj_name, "_Updated", "s")
updated_custom_object_result <- sf_update_metadata(metadata_type = 'CustomObject',
                                                   metadata = update_metadata)

renamed_custom_object_result <- sf_rename_metadata(metadata_type = 'CustomObject', 
                                                   old_fullname = paste0("Custom_Account_", rand_int, "__c"), 
                                                   new_fullname = paste0("Custom_Account_", rand_int+1, "__c"))

upsert_metadata <- list(custom_object, custom_object)
upsert_metadata[[1]]$fullName <- paste0("Custom_Account_", rand_int+1, "__c")
upsert_metadata[[1]]$label <- 'New Label Custom_Account2'
upsert_metadata[[1]]$pluralLabel <- 'Custom_Account2s_new'
upsert_metadata[[2]]$fullName <- paste0("Custom_Account_", rand_int+2, "__c")
upsert_metadata[[2]]$label <- 'New Label Custom_Account3'
upsert_metadata[[2]]$pluralLabel <- 'Custom_Account3s_new'
upserted_custom_object_result <- sf_upsert_metadata(metadata_type = 'CustomObject',
                                                    metadata = upsert_metadata)

# read operations
describe_obj_result <- sf_describe_metadata()
list_obj_result <- sf_list_metadata(queries=list(list(type='CustomObject')))
read_obj_result <- sf_read_metadata(metadata_type='CustomObject',
                                    object_names=paste0("Custom_Account_", rand_int+1, "__c"))
desc_obj_fields_result <- sf_describe_object_fields(paste0("Custom_Account_", rand_int+1, "__c"))
retrieve_request <- list(unpackaged=list(types=list(members='*', name='CustomObject')))
retrieve_info <- sf_retrieve_metadata(retrieve_request)

# cleanup everything we created by deleting it
deleted_custom_object_result <- sf_delete_metadata(metadata_type = 'CustomObject', 
                                                   object_names = c(paste0("Custom_Account_", rand_int+1, "__c"), 
                                                                    paste0("Custom_Account_", rand_int+2, "__c")))

test_that("sf_create_metadata", {
  expect_is(custom_object_result, "tbl_df")
  expect_named(custom_object_result, c('fullName', 'success'))
  expect_equal(nrow(custom_object_result), 1)
  expect_true(all(custom_object_result$success))
  
  expect_is(create_fields_result1, "tbl_df")
  expect_named(create_fields_result1, c('fullName', 'success'))
  expect_equal(nrow(create_fields_result1), 2)
  expect_true(all(create_fields_result1$success))
  
  expect_is(create_fields_result2, "tbl_df")
  expect_named(create_fields_result2, c('fullName', 'success'))
  expect_equal(nrow(create_fields_result2), 2)
  expect_true(all(create_fields_result2$success))
})

test_that("sf_update_metadata", {
  expect_is(updated_custom_object_result, "tbl_df")
  expect_named(updated_custom_object_result, c('fullName', 'success'))
  expect_equal(nrow(updated_custom_object_result), 1)
  expect_true(all(updated_custom_object_result$success))
})

test_that("sf_rename_metadata", {
  expect_is(renamed_custom_object_result, "tbl_df")
  expect_named(renamed_custom_object_result, c('fullName', 'success'))
  expect_equal(nrow(renamed_custom_object_result), 1)
  expect_true(all(renamed_custom_object_result$success))
})

test_that("sf_upsert_metadata", {
  expect_is(upserted_custom_object_result, "tbl_df")
  expect_named(upserted_custom_object_result, c('created', 'fullName', 'success'))
  expect_equal(nrow(upserted_custom_object_result), 2)
  expect_true(all(upserted_custom_object_result$success))
  expect_equal(upserted_custom_object_result$created, c(FALSE, TRUE))
})

test_that("sf_describe_metadata", {
  expect_is(describe_obj_result, "tbl_df")
  expect_true(all(c("partialSaveAllowed", "testRequired", 
                    "organizationNamespace", "metadataObjects") %in% 
                    names(describe_obj_result)))
})

test_that("sf_list_metadata", {
  expect_is(list_obj_result, "tbl_df")
  expect_true(all(c('createdById', 'createdByName', 'createdDate', 'fileName', 'fullName', 
                 'id', 'lastModifiedById', 'lastModifiedByName', 'lastModifiedDate', 
                 'manageableState', 'namespacePrefix', 'type') %in% 
                   names(list_obj_result)))
})

test_that("sf_read_metadata", {
  expect_is(read_obj_result, "list")
  expect_true(all(c('fullName', 'actionOverrides', 'fields', 'searchLayouts', 'sharingModel') %in% 
                    names(read_obj_result[[1]])))
})

test_that("sf_describe_object_fields", {
  expect_is(desc_obj_fields_result, "tbl_df")
  expect_true(all(c('name', 'label', 'length', 'custom', 
                    'type', 'updateable') %in% names(desc_obj_fields_result)))
})

test_that("sf_retrieve_metadata", {
  expect_is(retrieve_info, "tbl_df")
  expect_true(all(c('done', 'id', 'status', 'success', 'fileProperties') %in% 
                    names(retrieve_info)))
})

test_that("sf_delete_metadata", {
  expect_is(deleted_custom_object_result, "tbl_df")
  expect_named(deleted_custom_object_result, c('fullName', 'success'))
  expect_equal(nrow(deleted_custom_object_result), 2)
  expect_true(all(deleted_custom_object_result$success))
})

Try the salesforcer package in your browser

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

salesforcer documentation built on March 18, 2022, 6:26 p.m.