test_that("textMetadata includes expected metadata fields", { skip_if_offline() kco <- RKorAPClient::KorAPConnection(accessToken = NULL) skip_if_offline() kco <- RKorAPClient::KorAPConnection(accessToken = NULL) m <- textMetadata(kco, "WUD17/B96/57558") expect_s3_class(m, "tbl_df") expect_true("textSigle" %in% names(m)) expect_true("requestUrl" %in% names(m)) expect_true("webUIRequestUrl" %in% names(m)) expect_equal(m$textSigle[1], "WUD17/B96/57558") expect_true(nrow(m) == 1) }) test_that("textMetadata works with multiple text sigles", { skip_if_offline() kco <- RKorAPClient::KorAPConnection(accessToken = NULL) m <- textMetadata(kco, c("WUD17/B96/57558", "WUD17/A97/08541")) expect_s3_class(m, "tbl_df") expect_true("textSigle" %in% names(m)) expect_true(nrow(m) == 2) expect_true(all(c("WUD17/B96/57558", "WUD17/A97/08541") %in% m$textSigle)) }) test_that("textMetadata includes expected metadata columns", { skip_if_offline() kco <- KorAPConnection(accessToken = NULL) m <- textMetadata(kco, "WUD17/B96/57558") # Check for common metadata fields expect_true("textType" %in% names(m)) expect_true("textSigle" %in% names(m)) expect_true("requestUrl" %in% names(m)) expect_true("webUIRequestUrl" %in% names(m)) }) test_that("textMetadata works for unknown text sigles", { skip_if_offline() kco <- KorAPConnection(accessToken = NULL) m <- textMetadata(kco, c("WUD17/B96/57558", "unknownsigle")) expect_true("errors" %in% names(m)) expect_true(nrow(m) >= 1) # Test with only unknown sigle m_unknown <- textMetadata(kco, "completely/unknown/sigle") expect_true("errors" %in% names(m_unknown)) }) test_that("textMetadata works with list valued fields", { skip_if_offline() kco <- KorAPConnection(accessToken = NULL) m <- textMetadata(kco, "WUD17/B96/57558") expect_true("staat-gesellschaft\\tbiographien-interviews" == m$textClass[1] || grepl("\\t", m$textClass[1]), "multiple text classes / domains should be tab separated") }) test_that("textMetadata respects verbose parameter", { skip_if_offline() kco <- KorAPConnection(accessToken = NULL, verbose = FALSE) # Test with verbose = FALSE (default from connection) expect_silent(m1 <- textMetadata(kco, "WUD17/B96/57558")) # Test with explicit verbose = TRUE expect_output(m2 <- textMetadata(kco, "WUD17/B96/57558", verbose = TRUE), "Getting metadata") # Results should be the same regardless of verbosity expect_equal(m1$textSigle, m2$textSigle) }) test_that("textMetadata handles URL encoding correctly", { skip_if_offline() kco <- KorAPConnection(accessToken = NULL) # Test with a text sigle that contains special characters m <- textMetadata(kco, "WUD17/B96/57558") expect_true(grepl("corpus/WUD17%2FB96%2F57558", m$requestUrl[1])) expect_true(grepl("textSigle", m$webUIRequestUrl[1])) }) test_that("textMetadata returns proper data types", { skip_if_offline() kco <- KorAPConnection(accessToken = NULL) m <- textMetadata(kco, "WUD17/B96/57558") # All columns should be character type due to mutate(across(everything(), as.character)) expect_true(all(sapply(m, is.character))) }) test_that("textMetadata column ordering", { skip_if_offline() kco <- KorAPConnection(accessToken = NULL) m <- textMetadata(kco, "WUD17/B96/57558") # textSigle should be the first column due to relocate(textSigle) expect_equal(names(m)[1], "textSigle") }) test_that("textMetadata handles special characters in sigle", { skip_if_offline() kco <- KorAPConnection(accessToken = NULL) # Test with valid sigle containing numbers and special format m <- textMetadata(kco, "WUD17/A97/08542") expect_true("textSigle" %in% names(m)) expect_equal(m$textSigle[1], "WUD17/A97/08542") }) test_that("textMetadata error handling for API failures", { # Mock a connection with invalid API URL to test error handling kco <- KorAPConnection(KorAPUrl = "https://invalid.url", accessToken = NULL) # This should handle API failures gracefully m <- textMetadata(kco, "WUD17/B96/57558") expect_true("errors" %in% names(m) || nrow(m) == 0) }) test_that("textMetadata preserves request information", { skip_if_offline() kco <- KorAPConnection(accessToken = NULL) test_sigle <- "WUD17/B96/57558" m <- textMetadata(kco, test_sigle) expect_true("requestUrl" %in% names(m)) expect_true("webUIRequestUrl" %in% names(m)) expect_true(grepl(URLencode(test_sigle, reserved = TRUE), m$requestUrl[1])) expect_true(grepl("textSigle", m$webUIRequestUrl[1])) }) test_that("textMetadata batch processing consistency", { skip_if_offline() kco <- KorAPConnection(accessToken = NULL) # Get metadata individually m1 <- textMetadata(kco, "WUD17/B96/57558") m2 <- textMetadata(kco, "WUD17/A97/08541") # Get metadata in batch m_batch <- textMetadata(kco, c("WUD17/B96/57558", "WUD17/A97/08541")) # Should have same number of rows expect_equal(nrow(m_batch), 2) # Should contain both sigles expect_true(all(c("WUD17/B96/57558", "WUD17/A97/08541") %in% m_batch$textSigle)) })