test_that("get_timezones() gets timeszones from v1 url when available", { client <- MockConnect$new() client$mock_response( method = "GET", path = "v1/timezones", content = list( list(timezone = "Africa/Abidjan", offset = "+00:00"), list(timezone = "Africa/Accra", offset = "+00:00") ) ) expect_equal( get_timezones(client), list(`Africa/Abidjan (+00:00)` = "Africa/Abidjan", `Africa/Accra (+00:00)` = "Africa/Accra") ) expect_equal( client$call_log, "GET https://connect.example/__api__/v1/timezones" ) }) test_that("get_timezones() gets timeszones from unversioned url when v1 returns 404", { client <- MockConnect$new() client$mock_response( method = "GET", path = "v1/timezones", content = "404 page not found", status_code = 404L, headers = c("Content-Type" = "text/plain; charset=utf-8") ) client$mock_response( method = "GET", path = "timezones", content = list( list(timezone = "Africa/Abidjan", offset = "+00:00"), list(timezone = "Africa/Accra", offset = "+00:00") ) ) expect_equal( get_timezones(client), list(`Africa/Abidjan (+00:00)` = "Africa/Abidjan", `Africa/Accra (+00:00)` = "Africa/Accra") ) expect_equal( client$call_log, c( "GET https://connect.example/__api__/v1/timezones", "GET https://connect.example/__api__/timezones" ) ) }) test_that("get_timezones() raises 404 error when v1 and unversioned return 404", { client <- MockConnect$new() client$mock_response( method = "GET", path = "v1/timezones", content = "404 page not found", status_code = 404L, headers = c("Content-Type" = "text/plain; charset=utf-8") ) client$mock_response( method = "GET", path = "timezones", content = "404 page not found", status_code = 404L, headers = c("Content-Type" = "text/plain; charset=utf-8") ) expect_error( get_timezones(client), regexp = "timezones request failed with Client error" ) expect_equal( client$call_log, c( "GET https://connect.example/__api__/v1/timezones", "GET https://connect.example/__api__/timezones" ) ) })