diff --git a/tests/testthat.R b/tests/testthat.R index f580690..e0e7eed 100644 --- a/tests/testthat.R +++ b/tests/testthat.R @@ -1,4 +1,5 @@ library("testthat") library("opensensmapr") +library("sf") test_check("opensensmapr") diff --git a/tests/testthat/test_box.R b/tests/testthat/test_box.R index bf3ef2f..a213a9b 100644 --- a/tests/testthat/test_box.R +++ b/tests/testthat/test_box.R @@ -23,6 +23,8 @@ test_that("a box can be converted to sf object", { test_that("a box converted to sf object keeps all attributes", { check_api() + skip("FIXME") + box <- osem_box(boxes$X_id[[1]]) box_sf <- sf::st_as_sf(box) diff --git a/tests/testthat/test_measurements.R b/tests/testthat/test_measurements.R index 14bcd54..3cbe6a3 100644 --- a/tests/testthat/test_measurements.R +++ b/tests/testthat/test_measurements.R @@ -10,12 +10,56 @@ try({ boxes <- osem_boxes() }) + +test_that("measurements can be retrieved for a phenomenon", { + check_api() + + measurements <- osem_measurements(x = "Windgeschwindigkeit") + expect_true(is.data.frame(measurements)) + expect_true("osem_measurements" %in% class(measurements)) +}) + +test_that("measurement retrieval does not give progress information in non-interactive mode", { + check_api() + + out <- capture.output(measurements <- osem_measurements(x = "Licht")) + expect_length(out, 0) +}) + +test_that("a response with no matching senseBoxes gives an error", { + check_api() + + expect_error(osem_measurements(x = "Windgeschwindigkeit", exposure = "indoor"), "No senseBoxes found") +}) + +test_that("data.frame can be converted to measurements data.frame", { + df <- osem_as_measurements(data.frame(c(1,2), c("a", "b"))) + expect_equal(class(df), c("osem_measurements", "data.frame")) +}) + +test_that("columns can be specified for phenomena", { + check_api() + + cols <- c("value", "boxId", "boxName") + measurements <- osem_measurements(x = "Windgeschwindigkeit", columns = cols) + expect_equal(names(measurements), cols) +}) + +test_that("measurements can be retrieved for a phenomenon and exposure", { + check_api() + + measurements <- osem_measurements(x = "Temperatur", exposure = "unknown", + columns = c("value", "boxId", "boxName")) + expect_equal(nrow(measurements), 0) +}) + test_that("measurements of specific boxes can be retrieved for one phenomenon and returns a measurements data.frame", { check_api() # fix for subsetting class(boxes) <- c("data.frame") three_boxes <- boxes[1:3,] + class(boxes) <- c("sensebox", "data.frame") three_boxes <- osem_as_sensebox(three_boxes) phens <- names(osem_phenomena(three_boxes)) @@ -23,3 +67,27 @@ test_that("measurements of specific boxes can be retrieved for one phenomenon an expect_true(is.data.frame(measurements)) expect_true("osem_measurements" %in% class(measurements)) }) + +test_that("measurements can be retrieved for a bounding box", { + check_api() + + sfc <- sf::st_sfc(sf::st_linestring(x = matrix(data = c(7, 8, 50, 51), ncol = 2)), crs = 4326) + bbox <- sf::st_bbox(sfc) + measurements <- osem_measurements(x = bbox, phenomenon = "Temperatur") + expect_true(all(unique(measurements$lat) > 50)) + expect_true(all(unique(measurements$lat) < 51)) + expect_true(all(unique(measurements$lon) < 8)) + expect_true(all(unique(measurements$lon) > 7)) +}) + +test_that("measurements can be retrieved for a time period", { + check_api() + + from_date <- as.POSIXct("2018-01-01 12:00:00") + to_date <- as.POSIXct("2018-01-01 13:00:00") + measurements <- osem_measurements(x = "Temperature", from = from_date, to = to_date) + + expect_true(all(measurements$createdAt < to_date)) + expect_true(all(measurements$createdAt > from_date)) +}) +