context("utils") test_that("argument checking works", { skip_if_offline(host = "r-project.org") # bad argument to `output` expect_error(check_return_arguments(directory_ = NULL, file_ = "gbfs.Rds", output_ = "bad"), "Please supply one of") # user wants to save, but not dir provided expect_error(check_return_arguments(directory_ = NULL, file_ = "gbfs.Rds", output_ = "save"), "You have not supplied a folder") # bad url expect_error(city_to_url(city_ = "beep_bop_station_information.json", feed_ = "station_information"), "but the webpage doesn") # lower-level url for top-level feed with non-json file extension hon <- "https://hon.publicbikesystem.net/ube/gbfs/v1/en/system_pricing_plans" expect_error(city_to_url(city_ = hon, feed_ = "gbfs"), "No supported cities") # bad url for top-level expect_error(city_to_url(city_ = "beep_bop_gbfs.json", feed_ = "gbfs"), "The supplied argument for") # no matching cities expect_error(city_to_url(city_ = "wldojglkwefpoimf", feed_ = "gbfs"), "No supported cities matched") # one matching city, non top-level feed # no matching cities expect_equal(city_to_url(city_ = "biketown_pdx", feed_ = "station_information"), "https://gbfs.lyft.com/gbfs/2.3/pdx/en/station_information.json") # several matching cities expect_error(city_to_url(city_ = "los angeles", feed_ = "gbfs"), "Several cities matched") # feeds argument is valid expect_error(process_feeds_argument("bop"), "argument is \"bop\", but it needs") }) test_that("find feed from top level works", { skip_if_offline(host = "r-project.org") expect_equal(find_feed_from_top_level( "https://gbfs.lyft.com/gbfs/1.1/pdx/gbfs.json", "station_information"), "https://gbfs.lyft.com/gbfs/1.1/pdx/en/station_information.json") expect_error(find_feed_from_top_level( "https://gbfs.lyft.com/gbfs/1.1/pdx/gbfs.json", "weird_feed"), "webpage for the weird_feed .json") expect_equal(find_feed_from_top_level( "https://gbfs.lyft.com/gbfs/1.1/pdx/gbfs.json", "gbfs"), "https://gbfs.lyft.com/gbfs/1.1/pdx/gbfs.json") }) test_that("determine output type works", { expect_equal(determine_output_types("biketown_pdx", "both"), c(TRUE, TRUE)) expect_equal(determine_output_types("biketown_pdx", NULL), c(TRUE, FALSE)) expect_equal(determine_output_types(NULL, "return"), c(FALSE, TRUE)) expect_message(determine_output_types("biketown_pdx", "return"), "and only returning the output") expect_error(determine_output_types("biketown_pdx", "bad"), "argument doesn't match any of") }) test_that("no internet connection message works", { # "pretend" that the internet connection doesn't work with_mock("gbfs::connected_to_internet" = function() FALSE, # try it on all of the different functions that test internet connection expect_message(get_gbfs("biketown_pdx")), expect_message(get_gbfs_dataset_("biketown_pdx", NULL, NULL, "return", "station_information")), expect_message(get_which_gbfs_feeds("biketown_pdx")), expect_message(get_gbfs_cities()), expect_equal(get_gbfs_cities(), list()) ) })