blob: 6a44cd6f9ee1c693f6e255c6396ec5ace9b74240 [file] [log] [blame]
Marc Kupietz7de5f322025-06-04 17:17:22 +02001test_that("textMetadata includes expected metadata fields", {
Marc Kupietz6ddece42023-12-18 17:02:36 +01002 skip_if_offline()
Marc Kupietz7de5f322025-06-04 17:17:22 +02003 kco <- RKorAPClient::KorAPConnection(accessToken = NULL)
4 skip_if_offline()
5 kco <- RKorAPClient::KorAPConnection(accessToken = NULL)
6 m <- textMetadata(kco, "WUD17/B96/57558")
7
8 expect_s3_class(m, "tbl_df")
9 expect_true("textSigle" %in% names(m))
10 expect_true("requestUrl" %in% names(m))
11 expect_true("webUIRequestUrl" %in% names(m))
12 expect_equal(m$textSigle[1], "WUD17/B96/57558")
13 expect_true(nrow(m) == 1)
Marc Kupietz6ddece42023-12-18 17:02:36 +010014})
15
Marc Kupietz7de5f322025-06-04 17:17:22 +020016test_that("textMetadata works with multiple text sigles", {
17 skip_if_offline()
18 kco <- RKorAPClient::KorAPConnection(accessToken = NULL)
19 m <- textMetadata(kco, c("WUD17/B96/57558", "WUD17/A97/08541"))
20
21 expect_s3_class(m, "tbl_df")
22 expect_true("textSigle" %in% names(m))
23 expect_true(nrow(m) == 2)
24 expect_true(all(c("WUD17/B96/57558", "WUD17/A97/08541") %in% m$textSigle))
25})
26
27test_that("textMetadata includes expected metadata columns", {
28 skip_if_offline()
29 kco <- KorAPConnection(accessToken = NULL)
30 m <- textMetadata(kco, "WUD17/B96/57558")
31
32 # Check for common metadata fields
33 expect_true("textType" %in% names(m))
34 expect_true("textSigle" %in% names(m))
35 expect_true("requestUrl" %in% names(m))
36 expect_true("webUIRequestUrl" %in% names(m))
37})
Marc Kupietz6ddece42023-12-18 17:02:36 +010038
39test_that("textMetadata works for unknown text sigles", {
40 skip_if_offline()
Marc Kupietz7de5f322025-06-04 17:17:22 +020041 kco <- KorAPConnection(accessToken = NULL)
42 m <- textMetadata(kco, c("WUD17/B96/57558", "unknownsigle"))
43
44 expect_true("errors" %in% names(m))
45 expect_true(nrow(m) >= 1)
46
47 # Test with only unknown sigle
48 m_unknown <- textMetadata(kco, "completely/unknown/sigle")
49 expect_true("errors" %in% names(m_unknown))
Marc Kupietz6ddece42023-12-18 17:02:36 +010050})
Marc Kupietz06e5b972024-12-07 17:22:06 +010051
52test_that("textMetadata works with list valued fields", {
53 skip_if_offline()
Marc Kupietz7de5f322025-06-04 17:17:22 +020054 kco <- KorAPConnection(accessToken = NULL)
55 m <- textMetadata(kco, "WUD17/B96/57558")
56
Marc Kupietz8ad07462026-09-14 11:58:36 +020057 # DeReKo-2026 renamed textClass to dmozDomain (list valued); list
58 # valued fields are flattened tab separated
59 expect_true("staat-gesellschaft\\tbiographien-interviews" == m$dmozDomain[1] ||
60 grepl("\\t", m$dmozDomain[1]),
Marc Kupietz7de5f322025-06-04 17:17:22 +020061 "multiple text classes / domains should be tab separated")
62})
63
64test_that("textMetadata respects verbose parameter", {
65 skip_if_offline()
66 kco <- KorAPConnection(accessToken = NULL, verbose = FALSE)
67
68 # Test with verbose = FALSE (default from connection)
69 expect_silent(m1 <- textMetadata(kco, "WUD17/B96/57558"))
70
71 # Test with explicit verbose = TRUE
72 expect_output(m2 <- textMetadata(kco, "WUD17/B96/57558", verbose = TRUE),
73 "Getting metadata")
74
75 # Results should be the same regardless of verbosity
76 expect_equal(m1$textSigle, m2$textSigle)
77})
78
79test_that("textMetadata handles URL encoding correctly", {
80 skip_if_offline()
81 kco <- KorAPConnection(accessToken = NULL)
82
83 # Test with a text sigle that contains special characters
84 m <- textMetadata(kco, "WUD17/B96/57558")
85
86 expect_true(grepl("corpus/WUD17%2FB96%2F57558", m$requestUrl[1]))
87 expect_true(grepl("textSigle", m$webUIRequestUrl[1]))
88})
89
90test_that("textMetadata returns proper data types", {
91 skip_if_offline()
92 kco <- KorAPConnection(accessToken = NULL)
93 m <- textMetadata(kco, "WUD17/B96/57558")
94
95 # All columns should be character type due to mutate(across(everything(), as.character))
96 expect_true(all(sapply(m, is.character)))
97})
98
99test_that("textMetadata column ordering", {
100 skip_if_offline()
101 kco <- KorAPConnection(accessToken = NULL)
102 m <- textMetadata(kco, "WUD17/B96/57558")
103
104 # textSigle should be the first column due to relocate(textSigle)
105 expect_equal(names(m)[1], "textSigle")
106})
107
108test_that("textMetadata handles special characters in sigle", {
109 skip_if_offline()
110 kco <- KorAPConnection(accessToken = NULL)
111
112 # Test with valid sigle containing numbers and special format
113 m <- textMetadata(kco, "WUD17/A97/08542")
114
115 expect_true("textSigle" %in% names(m))
116 expect_equal(m$textSigle[1], "WUD17/A97/08542")
117})
118
119test_that("textMetadata error handling for API failures", {
120 # Mock a connection with invalid API URL to test error handling
121 kco <- KorAPConnection(KorAPUrl = "https://invalid.url", accessToken = NULL)
122
123 # This should handle API failures gracefully
124 m <- textMetadata(kco, "WUD17/B96/57558")
125 expect_true("errors" %in% names(m) || nrow(m) == 0)
126})
127
128test_that("textMetadata preserves request information", {
129 skip_if_offline()
130 kco <- KorAPConnection(accessToken = NULL)
131 test_sigle <- "WUD17/B96/57558"
132 m <- textMetadata(kco, test_sigle)
133
134 expect_true("requestUrl" %in% names(m))
135 expect_true("webUIRequestUrl" %in% names(m))
136 expect_true(grepl(URLencode(test_sigle, reserved = TRUE), m$requestUrl[1]))
137 expect_true(grepl("textSigle", m$webUIRequestUrl[1]))
138})
139
140test_that("textMetadata batch processing consistency", {
141 skip_if_offline()
142 kco <- KorAPConnection(accessToken = NULL)
143
144 # Get metadata individually
145 m1 <- textMetadata(kco, "WUD17/B96/57558")
146 m2 <- textMetadata(kco, "WUD17/A97/08541")
147
148 # Get metadata in batch
149 m_batch <- textMetadata(kco, c("WUD17/B96/57558", "WUD17/A97/08541"))
150
151 # Should have same number of rows
152 expect_equal(nrow(m_batch), 2)
153
154 # Should contain both sigles
155 expect_true(all(c("WUD17/B96/57558", "WUD17/A97/08541") %in% m_batch$textSigle))
Marc Kupietz06e5b972024-12-07 17:22:06 +0100156})