context("Outputs (or errors/warnings) are generated as expected")
# library(jsonlite)
# library(dplyr)
# library(lubridate)
# library(purrr)
# library(testthat)
# options(digits = 22)
# devtools::test()
#
# #----- URL conversion -----#
#
# test_that("url_all_results() correctly converts URL to JSON", {
# original_url <- "http://api.worldbank.org/v2/country" # Note: no ?format=json on url
# expect_gt(url_all_results(original_url) %>% fromJSON %>% .[[2]] %>% nrow, 50)
# })
#
#
#
# #----- Retieving all results (not just first page) from WB API -----#
#
# test_that("The number of total results is retreived (and not just 50 on first page)", {
# original_url <- "http://api.worldbank.org/v2/country?format=json"
# total_results <- original_url %>% fromJSON %>% .[[1]] %>% .$total
# expect_gt(total_results, 50)
#
# })
#
# test_that("url_all_results() correctly retreives WB API data", {
# original_url <- "http://api.worldbank.org/v2/country?format=json"
# expect_gt(url_all_results(original_url) %>% fromJSON %>% .[[2]] %>% nrow, 50)
# })
#
#
#
# #----- Retieving countries from WB API -----#
#
# test_that("show_countries() retrieves countries as expected", {
# expect_gt(show_countries() %>% nrow, 50)
# })
#
#
#
# #----- Identification of iso2Code/country_name -----#
#
# test_that("show_countries() retrieves countries as expected", {
# expect_equal(country_input_type("AU", countries_dataframe), "iso2Code")
# expect_equal(country_input_type("Australia", countries_dataframe), "country_name")
# expect_equal(country_input_type("AustraTYPOlia", countries_dataframe), "invalid")
# })
#
#
#
# #----- Identification of iso2Code/country_name -----#
#
# test_that("iso2Code is identified as such and kept as iso2Code", {
# country <- "AU"
# country_input_type_string <- country_input_type(country, countries_dataframe)
# convert_to_iso2Code(country_input_type_string, country) %>% expect_equal("AU")
# })
#
# test_that("country_name is identified as such and converted to iso2Code", {
# country <- "Australia"
# country_input_type_string <- country_input_type(country, countries_dataframe)
# convert_to_iso2Code(country_input_type_string, country, countries_dataframe) %>% expect_equal("AU")
# })
#
# test_that("invalid country_name/iso2Code is identified as such", {
# country <- "AustrTESTalia"
# country_input_type_string <- country_input_type(country, countries_dataframe)
# expect_error(convert_to_iso2Code(country_input_type_string, country),
# paste0("'", country, "'", " is not a valid country input - select a valid country from show_countries()"))
# })
#
#
# #----- Testing retrieval of of inflation data using retrieve_inflation_data() -----#
#
# test_that("Inflation data is retrieved as expected for iso2Code input", {
# country <- "AU"
# expect_gt(retrieve_inflation_data(country) %>% .[[2]] %>% nrow, 50)
# })
#
# test_that("Inflation data is retrieved as expected for country_name input", {
# country <- "Australia"
# expect_gt(retrieve_inflation_data(country) %>% .[[2]] %>% nrow, 50)
# })
#
# test_that("Retrieval of inflation data for an invalid input fails with appropriate error message", {
# country <- "AustraTESTlia"
# expect_error(retrieve_inflation_data(country) %>% .[[2]] %>% nrow,
# paste0("'", country, "'", " is not a valid country input - select a valid country from show_countries()"))
# })
#
#
#
# ###########################################
# ##### Testing adjust_for_inflation() ######
# ###########################################
#
#
#
#
# test_that("One price, one from date, one to date", {
#
# price <- 10
# from_date <- 2015
#
# adjust_for_inflation(price, from_date, country, to_date = 2017,
# inflation_dataframe = inflation_dataframe,
# countries_dataframe = countries_dataframe) %>%
# expect_equal(10.32505224053865866551)
#
# })
#
# # # Note: this doesn't will fail each time API data updates.
# # test_that("One price, one from date, one to date, extrapolating using 3 year average", {
# #
# # price <- 10
# # from_date <- 2022 # Some future date so not using real data
# #
# # adjust_for_inflation(price, from_date, country, to_date = 2030,
# # inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe,
# # extrapolate_future_method = "average", future_averaging_period = 3) %>%
# # expect_equal(11.33436825573669715084)
# #
# # })
# #
# # # Note: this doesn't will fail each time API data updates.
# # test_that("One price, one from date, one to date", {
# #
# # price <- 10
# # from_date <- 2025 # Some future date so not using real data
# #
# # adjust_for_inflation(price, from_date, country, to_date = 2022,
# # inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe,
# # extrapolate_future_method = "average", future_averaging_period = 3) %>%
# # expect_equal(9.541156191493925575742)
# #
# # })
#
#
#
#
#
# # NOT IN AUTOMATED TESTING
# # Omitting to_date (assumes current)
# # adjust_for_inflation(price, from_date, country,
# # inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe,
# # extrapolate_future_method = "average", future_averaging_period = 3)
#
#
#
#
#
# test_that("adjust_for_inflation() errors with a useful message when to_date is beyond available data", {
#
# to_date <- 2050
# from_date <- 2017
#
# expect_error(
# # Function
# adjust_for_inflation(price, from_date, country, to_date = to_date,
# inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe)
# ,
# # Error message
# paste0("'to_date' (", to_date, ") is/contains a later date than the latest available data (",
# max(available_inflation_data$date), ").\nTry setting 'extrapolate_future' to TRUE or using an earlier 'to_date'"),
#
# # Avoid regex: https://github.com/r-lib/testthat/issues/726
# fixed = TRUE
# )
# }
# )
#
#
#
#
# test_that("adjust_for_inflation() prompts user for number of years to use in extrapolating using average (future)", {
#
# to_date <- 2030
# extrapolate_future_method = "average"
#
# expect_error(
# # Function
# adjust_for_inflation(price, from_date, country, to_date = to_date,
# inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe,
# extrapolate_future_method = "average")
# ,
# # Error message
# paste0("Please specify how many years' average to use when extrapolating forward ('future_averaging_period'
# can take any positive integer or 'all' to use an average of all available years' data"),
#
# # Avoid regex: https://github.com/r-lib/testthat/issues/726
# fixed = TRUE
# )})
#
#
#
# # NOT IN AUTOMATED TESTING
# # adjust_for_inflation(price, from_date, country, to_date = 2030,
# # inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe,
# # extrapolate_future_method = "average", future_averaging_period = 3)
#
#
#
#
#
#
# test_that("Expect a future_rate if rate extrapolation is used (future)", {
#
# to_date <- 2030
# extrapolate_future_method = "average"
# future_averaging_period <- 3
#
#
# expect_error(
# # Function
# adjust_for_inflation(price, from_date, country, to_date = to_date,
# inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe,
# extrapolate_future_method = "rate", future_averaging_period = future_averaging_period)
# ,
# # Error message
# paste0("Please specify the assumed rate of inflation for future periods (i.e. using 'future_rate' parameter)"),
#
# # Avoid regex: https://github.com/r-lib/testthat/issues/726
# fixed = TRUE
# )
# }
# )
#
#
# # NOT IN AUTOMATED TESTING
# # adjust_for_inflation(price, from_date, country, to_date = 2030,
# # inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe,
# # extrapolate_future_method = "rate", future_rate = 3)
# # [1] 27.59076877199724009415
#
#
#
# #----- Testing past extrapolation -----#
#
# # Testing the past extrapolations (since past data shouldn't change and responses should be consistent)
#
#
#
#
# test_that("past extrapolation works when based on the last three available periods",
# {
# from_date <- 2017
#
# adjust_for_inflation(price, from_date, country, to_date = 1930,
# inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe,
# extrapolate_past_method = "average", past_averaging_period = 3) %>%
# expect_equal(0.3846295809055066405868)
# }
# )
#
#
# test_that("past extrapolation works with a rate",
# {adjust_for_inflation(price, from_date = 1990, country, to_date = 1930,
# inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe,
# extrapolate_past_method = "rate", past_rate = 2.5) %>%
# expect_equal(0.6568850636543038801207)
# }
# )
#
#
#
# test_that("returns a useful message when past extrapolation is not required",
# {expect_warning(adjust_for_inflation(price, from_date = "1991-04-14", country, to_date = 1961,
# inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe,
# extrapolate_past_method = "rate", past_rate = 2.5),
# "Past extrapolation not required as data available for AU back to 1960")
# }
# )
#
#
#
#
# test_that("extrapolation works with longer form date input",
# {adjust_for_inflation(price, from_date = "1991-04-14", country, to_date = 1930,
# inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe,
# extrapolate_past_method = "rate", past_rate = 2.5) %>%
# expect_equal(0.6120064931609506819754)
# }
# )
#
#
# test_that("extrapolation works with longer form date input",
# {adjust_for_inflation(price, from_date = "2009-04-09 13:09:39 AEST", country, to_date = 1930,
# inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe,
# extrapolate_past_method = "rate", past_rate = 2.5) %>%
# expect_equal(0.3832127850909711752614)
# }
# )
#
#
#
#
# ##################################
# ##### Testing vectorisation ######
# ##################################
#
#
#
# test_that("adjust_for_inflation() can handle a vector of price inputs",
# {
# price <- c(10, 11, 12, 15)
# from_date <- 2007
#
# adjust_for_inflation(price = price, from_date = from_date, to_date = 2017, country = country,
# inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe) %>%
# expect_equal(c(12.64429911856696620021, 13.90872903042366282023, 15.17315894228035944025, 18.96644867785045107667))
# }
# )
#
#
#
#
#
# test_that("adjust_for_inflation() can handle a vector of price inputs and a vector of from dates",
# {
#
# price <- c(10, 10, 10, 10)
# from_date <- c(2007, 2013, 2015, 2012)
#
# adjust_for_inflation(price = price, from_date = from_date, to_date = 2017, country = country,
# inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe) %>%
# expect_equal(c(12.64429911856696620021, 10.74154589371981316503, 10.32505224053865866551, 11.00470180648354734387))
# }
# )
#
#
#
#
#
#
#
#
# test_that("adjust_for_inflation() can handle a vector of price inputs, from dates and to dates",
# {
#
# price <- c(10, 10, 10, 10)
# from_date <- c(2009, 2013, 2015, 2012)
# to_date <- c(1997, 2008, 2007, 2017)
#
# adjust_for_inflation(price = price, from_date = from_date, to_date = to_date, country = country,
# inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe) %>%
# expect_equal(c(7.269754768392368227126, 8.703291264538480120905, 8.100400659910437894951, 11.004701806483547343873))
# }
# )
#
#
#
# test_that("vector inputs return same results as element inputs done separately",
# {
# price <- c(10, 10, 10, 10)
# from_date <- c(2009, 2013, 2015, 2012)
# to_date <- c(1997, 2008, 2007, 2017)
#
# first <- adjust_for_inflation(price = price[1], from_date = from_date[1], to_date = to_date[1], country = country,
# inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe)
#
# second <- adjust_for_inflation(price = price[2], from_date = from_date[2], to_date = to_date[2], country = country,
# inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe)
#
# third <- adjust_for_inflation(price = price[3], from_date = from_date[3], to_date = to_date[3], country = country,
# inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe)
#
# fourth <- adjust_for_inflation(price = price[4], from_date = from_date[4], to_date = to_date[4], country = country,
# inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe)
#
#
# adjust_for_inflation(price = price, from_date = from_date, to_date = to_date, country = country,
# inflation_dataframe = inflation_dataframe, countries_dataframe = countries_dataframe) %>%
# expect_equal(c(first, second, third, fourth))
# }
# )
#
#
#
# # devtools::test()
#
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.