tests/testthat/test-isoline.R

test_that("isoline works", {
  # Set dummy key
  set_key("dummy_api_key")

  # Load package example data
  data(poi)

  # Input checks
  expect_error(isoline(poi = c(1, 2, 3)), "'poi' must be an sf or sfc object.")
  expect_error(isoline(poi = c("character", NA)), "'poi' must be an sf or sfc object.")
  expect_error(isoline(poi = poi, transport_mode = "not_a_transport_mode"))
  expect_error(isoline(poi = poi, routing_mode = "not_a_routing_mode"))
  expect_error(isoline(poi = poi, range_type = "not_a_range_type"))
  expect_error(isoline(poi = poi, optimize = "not_a_optimize_option"))
  expect_error(isoline(poi = poi, traffic = "not_a_bool"), "'traffic' must be a 'boolean' value.")
  expect_error(isoline(poi = poi, arrival = "not_a_bool"), "'arrival' must be a 'boolean' value.")
  expect_error(isoline(poi = poi, aggregate = "not_a_bool"), "'aggregate' must be a 'boolean' value.")
  expect_error(isoline(poi = poi, url_only = "not_a_bool"), "'url_only' must be a 'boolean' value.")

  # Test with API response mock
  with_mock(
    "hereR:::.async_request" = function(url, rps) {
      hereR:::mock$isoline_response
    },

    # With and without aggregation
    isolines_aggr <- isoline(poi = poi, aggregate = TRUE),
    isolines_mult <- isoline(poi = poi, aggregate = FALSE),

    # Tests
    expect_equal(any(sf::st_geometry_type(isolines_aggr) != "MULTIPOLYGON"), FALSE),
    expect_equal(any(sf::st_geometry_type(isolines_mult) != "POLYGON"), FALSE)
  )
})

Try the hereR package in your browser

Any scripts or data that you put into this service are public.

hereR documentation built on Sept. 18, 2023, 5:21 p.m.