context("Updating Activatr DFs with correct time zones")
library(activatr)
library(lubridate)
library(mockery)
library(tibble)
test_that("localize_to_time_zone works on a trivial data set", {
mockery::stub(
where = localize_to_time_zone,
what = "get_timezome_id",
how = "America/Los_Angeles"
)
df <- act_tbl(tibble::tribble(
~time, ~lat, ~lon, ~ele,
lubridate::ymd_hms("2019-01-01 0:00:01"), 1, 1, 10000
))
local_df <- localize_to_time_zone(df)
expect_equal(nrow(local_df), 1)
expect_equal(tz(local_df$time), "America/Los_Angeles")
expect_equal(hour(local_df$time), 16)
})
test_that("localize_to_time_zone fails if it's not an act_tbl", {
df <- tibble::tribble(
~time, ~lat, ~lon, ~ele,
lubridate::ymd_hms("2019-01-01 0:00:01"), 1, 1, 10000
)
expect_error(localize_to_time_zone(df))
})
test_that("localize_to_time_zone fails if the act_tbl doesn't contain times", {
df <- act_tbl(tibble::tribble(
~lat, ~lon,
1, 1
))
expect_error(localize_to_time_zone(df))
})
test_that("get_timezome_id errors when there's no google key", {
mockery::stub(
where = get_timezome_id,
what = "has_google_key",
how = FALSE
)
expect_error(get_timezome_id(1, 2, 3))
})
test_that("get_timezome_id detects non-JSON responses", {
mockery::stub(
where = get_timezome_id,
what = "has_google_key",
how = TRUE
)
mockery::stub(
where = get_timezome_id,
what = "google_key",
how = "key"
)
mockery::stub(
where = get_timezome_id,
what = "httr::GET",
how = httr:::response(
status_code = 200,
content = "{timeZoneId:\"America/Los_Angeles\"}"
)
)
mockery::stub(
where = get_timezome_id,
what = "httr::http_type",
how = "application/xml"
)
expect_error(get_timezome_id(1, 2, 3))
})
test_that("get_timezome_id handles HTTP errors", {
mockery::stub(
where = get_timezome_id,
what = "has_google_key",
how = TRUE
)
mockery::stub(
where = get_timezome_id,
what = "google_key",
how = "key"
)
mockery::stub(
where = get_timezome_id,
what = "httr::GET",
how = httr:::response(
status_code = 200,
content = "{timeZoneId:\"America/Los_Angeles\"}"
)
)
mockery::stub(
where = get_timezome_id,
what = "httr::http_type",
how = "application/json"
)
mockery::stub(
where = get_timezome_id,
what = "httr::http_error",
how = TRUE
)
expect_error(get_timezome_id(1, 2, 3))
})
test_that("get_timezome_id handles HTTP errors", {
mockery::stub(
where = get_timezome_id,
what = "has_google_key",
how = TRUE
)
mockery::stub(
where = get_timezome_id,
what = "google_key",
how = "key"
)
mockery::stub(
where = get_timezome_id,
what = "httr::GET",
how = httr:::response(
status_code = 200,
content = "{timeZoneId:\"America/Los_Angeles\"}"
)
)
mockery::stub(
where = get_timezome_id,
what = "httr::http_type",
how = "application/json"
)
mockery::stub(
where = get_timezome_id,
what = "httr::http_error",
how = FALSE
)
mockery::stub(
where = get_timezome_id,
what = "httr::content",
how = tibble(
status = "REQUEST_DENIED",
errorMessage = "The provided API key is invalid."
)
)
expect_error(get_timezome_id(1, 2, 3))
})
test_that("get_timezome_id works in normal circumstances", {
mockery::stub(
where = get_timezome_id,
what = "has_google_key",
how = TRUE
)
mockery::stub(
where = get_timezome_id,
what = "google_key",
how = "key"
)
mockery::stub(
where = get_timezome_id,
what = "httr::GET",
how = httr:::response(
status_code = 200,
content = "{timeZoneId:\"America/Los_Angeles\"}"
)
)
mockery::stub(
where = get_timezome_id,
what = "httr::http_type",
how = "application/json"
)
mockery::stub(
where = get_timezome_id,
what = "httr::http_error",
how = FALSE
)
mockery::stub(
where = get_timezome_id,
what = "httr::content",
how = tibble(status = "OK", timeZoneId = "America/Los_Angeles")
)
tzid <- get_timezome_id(1, 2, 3)
expect_equal(tzid, "America/Los_Angeles")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.