Nothing
check_db <- function() {
if (!check_ecotox_availability()) {
skip("ECOTOX database not available")
}
}
simple_search1 <- if (check_ecotox_availability()) {
suppressMessages(suppressWarnings(search_ecotox(
list(latin_name = list(terms = "Daphnia magna"), chemical_name = list(terms = "benzene")),
c(list_ecotox_fields(), "results.result_id", "results.test_id", "tests.reference_number"),
compute = TRUE)))
} else NULL
simple_search2 <- if (check_ecotox_availability()) {
suppressMessages(suppressWarnings({search_ecotox(list(test_id = list(terms = "1", method = "exact")))}))
} else NULL
simple_search3 <- if (check_ecotox_availability()) {
suppressMessages(suppressWarnings({search_ecotox(list(latin_name = list(terms = "perdix perdix"),
test_cas = list(terms = "1336363")),
c(list_ecotox_fields(), "results.result_id", "results.test_id", "tests.reference_number"))}))
} else NULL
search_q <- if (check_ecotox_availability()) {
suppressMessages(suppressWarnings({search_query_ecotox(list(test_id = list(terms = "1", method = "exact")))}))
} else NULL
throws_errors <- function(expression) {
result <- FALSE
tryCatch(expression, error = function(e) {result <<- T}, warning = function(w) {invisible(NULL)})
result
}
#################################
#################################
#### ####
#### TEST 01 ####
#### ####
#################################
#################################
test_that("All tables in the database are specified", {
check_db()
expect_true({
dbcon <- suppressWarnings(dbConnectEcotox())
test <- all(dbListTables(dbcon) %in% ECOTOXr:::.db_specs$table)
dbDisconnectEcotox(dbcon)
test
})
})
#################################
#################################
#### ####
#### TEST 02 ####
#### ####
#################################
#################################
test_that("All specified tables are in the database", {
check_db()
expect_true({
dbcon <- suppressWarnings(dbConnectEcotox())
tables_not_in_db <- ECOTOXr:::.db_specs$table[!ECOTOXr:::.db_specs$table %in% dbListTables(dbcon)]
e_file <- suppressWarnings({get_ecotox_sqlite_file()})
e_date <- as.Date(substr(e_file, nchar(e_file) - 16, nchar(e_file) - 7), format = "%m_%d_%Y")
test <-
length(tables_not_in_db) == 0 ||
(all(tables_not_in_db %in% c("length_unit_codes", "length_unit_codes", "length_type_codes", "length_type_codes")) &&
e_date <= as.Date("2023-06-15"))
dbDisconnectEcotox(dbcon)
test
})
})
#################################
#################################
#### ####
#### TEST 03 ####
#### ####
#################################
#################################
test_that("All fields in the database are specified", {
check_db()
expect_true({
dbcon <- suppressWarnings(dbConnectEcotox())
tables <- dbListTables(dbcon)
test <- all(unlist(lapply(tables, function(tab) {
all(dbListFields(dbcon, tab) %in% subset(ECOTOXr:::.db_specs, table == tab)$field_name)
})))
dbDisconnectEcotox(dbcon)
test
})
})
#################################
#################################
#### ####
#### TEST 04 ####
#### ####
#################################
#################################
test_that("All specified fields are in the database", {
check_db()
expect_true({
dbcon <- suppressWarnings(dbConnectEcotox())
tables <- dbListTables(dbcon)
test <- all(unlist(lapply(tables, function(tab) {
all(subset(ECOTOXr:::.db_specs, table == tab)$field_name %in% dbListFields(dbcon, tab))
})))
dbDisconnectEcotox(dbcon)
test
})
})
#################################
#################################
#### ####
#### TEST 05 ####
#### ####
#################################
#################################
test_that("Getting the path to the ECOTOX database doesn't throw errors", {
expect_false(throws_errors({get_ecotox_path()}))
})
#################################
#################################
#### ####
#### TEST 06 ####
#### ####
#################################
#################################
test_that("Getting SQLite file location doesn't throw errors", {
check_db()
expect_false(throws_errors({get_ecotox_sqlite_file()}))
})
#################################
#################################
#### ####
#### TEST 07 ####
#### ####
#################################
#################################
test_that("A simple search results in expected table", {
check_db()
expect_true({
## Compare result with anticipated ids:
all(
c("1020021", "1020022", "1020023", "1022155", "1031085", "1031086", "1031087", "1031088", "1031196", "1031197",
"1064409", "1072942", "1072943", "1072944", "1083684", "1083685", "1083686", "1098939", "1098940", "1098941",
"1098942", "1098943", "1098944", "1098945", "1098946", "1098947", "1098948", "1098949", "1098950", "1125798",
"1136665", "1136666", "1142641", "1152541", "1187783", "1189253", "1237724", "2113979", "2114101", "2194929") %in%
simple_search1$test_id
)
})
})
#################################
#################################
#### ####
#### TEST 08 ####
#### ####
#################################
#################################
test_that("A simple search results in unique result ids", {
check_db()
expect_true({
## Compare result with anticipated ids:
all(!duplicated(simple_search1$result_id))
})
})
#################################
#################################
#### ####
#### TEST 09 ####
#### ####
#################################
#################################
test_that("In a simple search test that there is a publication year when there is a reference number.", {
check_db()
expect_false({
any(is.na(simple_search1$publication_year) & !is.na(simple_search1$reference_number))
})
})
#################################
#################################
#### ####
#### TEST 10 ####
#### ####
#################################
#################################
test_that("A simple search does not necessarily result in unique result ids when chemical carriers are added to output", {
check_db()
expect_false({
results <- suppressWarnings(
search_ecotox(
list(test_id = list(terms = "1000260")),
c("tests.test_id", "results.result_id", "chemical_carriers.carrier_id"),
group_by_results = FALSE)
)
## Compare result with anticipated ids:
all(!duplicated(results$result_id))
})
})
#################################
#################################
#### ####
#### TEST 11 ####
#### ####
#################################
#################################
test_that("Default field names are fewer than all field names", {
expect_true({
length(list_ecotox_fields("default")) < length(list_ecotox_fields("all"))
})
})
#################################
#################################
#### ####
#### TEST 12 ####
#### ####
#################################
#################################
test_that("A simple search query returns a single element of type character", {
check_db()
expect_true({
length(search_q) == 1 && typeof(search_q) == "character"
})
})
#################################
#################################
#### ####
#### TEST 13 ####
#### ####
#################################
#################################
test_that("A query doesn't mistakenly returns field name as value", {
check_db()
expect_false({
(is.null(simple_search2$test_grade) || all(simple_search2$test_grade == "test_grade"))
})
})
#################################
#################################
#### ####
#### TEST 14 ####
#### ####
#################################
#################################
test_that("No duplicated results are returned when searching for test id", {
check_db()
expect_false({
any(duplicated(simple_search2))
})
})
#################################
#################################
#### ####
#### TEST 15 ####
#### ####
#################################
#################################
test_that("When multiple doses are linked to a result, no duplicates are returned", {
check_db()
expect_false({
any(duplicated(simple_search3))
})
})
#################################
#################################
#### ####
#### TEST 16 ####
#### ####
#################################
#################################
test_that("get_ecotox_info doesn't throw an error.", {
expect_false({ throws_errors(suppressMessages(get_ecotox_info())) })
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.