# test-cran-basic.R — Lightweight tests for CRAN R CMD check # Full dev suite: test-bank.R, test-cache.R, test-connect.R, test-lookup.R, # test-package-structure.R, test-pull.R, test-utils.R, test-verify.R # --- Package structure (no data needed) --- test_that("NAMESPACE exports expected functions", { ns <- getNamespaceExports("easynic") expect_true(length(ns) >= 27) expect_true("pull_nic_data" %in% ns) expect_true("lookup_rssd" %in% ns) expect_true("visualization_prompt" %in% ns) }) test_that("key functions are exported", { expect_true(is.function(easynic::pull_nic_data)) expect_true(is.function(easynic::lookup_rssd)) expect_true(is.function(easynic::launchpad_prompt)) expect_true(is.function(easynic::visualization_prompt)) expect_true(is.function(easynic::verify_rssds)) expect_true(is.function(easynic::verify_mdrm_codes)) }) test_that("package help topics are available", { topics <- utils::help.search("easynic", package = "easynic") expect_true(NROW(topics$matches) > 0) }) # --- Pure logic (no data, no DB) --- test_that("K-for-T variants returns correct prefixes for BHCK", { variants <- easynic:::.get_k_for_t_variants("BHCK2170") expect_true("BHCT2170" %in% variants) expect_true("BHCM2170" %in% variants) expect_true(length(variants) >= 3) }) test_that(".build_view_query generates valid SQL", { views_ref <- tibble::tibble( view_name = "CUV_BHC_BHCK", id_column = "ID_RSSD", date_column = "D_DT", date_format = "date" ) query <- easynic:::.build_view_query( view = "CUV_BHC_BHCK", view_cols = c("BHCK2170"), rssd_ids = c(1039502L, 1073757L), views_ref = views_ref ) expect_true(grepl("SELECT", query)) expect_true(grepl("1039502", query)) expect_true(grepl("FROM NIC2_Adhoc.dbo.CUV_BHC_BHCK", query)) }) test_that("hasValidKerberos returns a logical", { result <- easynic::hasValidKerberos() expect_true(is.logical(result)) expect_length(result, 1) }) test_that("vault_configured returns FALSE for temp directory", { result <- easynic::vault_configured(tempdir()) expect_false(result) }) test_that("launchpad_prompt returns a character string", { result <- suppressMessages(capture.output( val <- easynic::launchpad_prompt() )) expect_true(is.character(val)) expect_true(nchar(val) > 100) }) test_that("visualization_prompt returns a character string", { result <- suppressMessages(capture.output( val <- easynic::visualization_prompt() )) expect_true(is.character(val)) expect_true(nchar(val) > 100) expect_true(grepl("Tufte", val)) }) # --- Bundled data (skip on CRAN) --- test_that("show_rssd_lists runs without error", { skip_on_cran() expect_no_error(capture.output(easynic::show_rssd_lists())) }) test_that("show_mdrm_lists runs without error", { skip_on_cran() expect_no_error(capture.output(easynic::show_mdrm_lists())) }) test_that("get_catalog_info runs without error", { skip_on_cran() expect_no_error(capture.output(easynic::get_catalog_info())) }) test_that("lookup_rssd returns results for known bank", { skip_on_cran() result <- easynic::lookup_rssd("JPM") expect_s3_class(result, "tbl_df") expect_true(nrow(result) > 0) }) test_that("lookup_mdrm_codes returns results for RCFD2170", { skip_on_cran() result <- easynic::lookup_mdrm_codes("RCFD2170") expect_s3_class(result, "tbl_df") expect_true(nrow(result) > 0) }) # --- Input validation (no data needed) --- test_that("pull_nic_data errors on missing columns", { expect_error( easynic::pull_nic_data(banks = "1039502"), "No columns provided" ) }) test_that("verify_mdrm_codes errors on empty input", { expect_error( easynic::verify_mdrm_codes(character(0)), "No codes provided" ) }) test_that("verify_rssds errors on empty input", { expect_error( easynic::verify_rssds(character(0)), "No RSSD IDs provided" ) }) test_that("generate_rssd_list errors on non-numeric input", { expect_error(easynic::generate_rssd_list("not_a_number")) })