Skip to content

Commit

Permalink
Add unit-tests
Browse files Browse the repository at this point in the history
  • Loading branch information
damianooldoni committed Mar 29, 2023
1 parent 5c14711 commit 67fc4cb
Showing 1 changed file with 146 additions and 0 deletions.
146 changes: 146 additions & 0 deletions tests/testthat/test-indicator_native_range_year.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
context("test_indicator_native_range_year")

# test df
input_test_df <- read.delim(
test_path("data_test_input_graphs_indicators/test_visualization_df.tsv"),
sep = "\t"
)

nrow_no_first_obs <-
nrow(input_test_df[is.na(input_test_df$first_observed), ])

cleaned_input_test_df <- input_test_df[!is.na(input_test_df$first_observed), ]

test_that("Arg: df", {
expect_error(
indicator_native_range_year(3),
"df is not a data frame"
)
})


test_that("Arg: type", {
expect_error(
indicator_native_range_year(cleaned_input_test_df,
type = 2,
years = 2001),
"'arg' must be NULL or a character vector"
)
expect_error(
indicator_native_range_year(cleaned_input_test_df,
type = "aaa",
years = 2001),
"'arg' should be one of “native_range”, “native_continent”"
)
a <- cleaned_input_test_df
colnames(a)[colnames(a) == "native_range"] <- "l"
expect_error(
indicator_native_range_year(a,
type = "native_range",
years = 2001),
"Column native_range not present in df."
)
})


test_that("Arg: years", {
expect_error(
indicator_native_range_year(cleaned_input_test_df,
years = "2000"
),
"Argument years has to be a number."
)
expect_error(
indicator_native_range_year(cleaned_input_test_df,
years = c(2000,3000)
),
sprintf("All values in years has to be less than %s.", format(Sys.Date(), "%Y"))
)
})

test_that("Arg: first_observed", {
expect_error(
indicator_native_range_year(input_test_df,
years = 2010,
first_observed = 3),
"Argument first_observed has to be a character."
)
expect_error(
indicator_native_range_year(input_test_df,
year = 2010,
first_observed = "bad_colname"
)
)
})

test_that("Param: labels", {
expect_error(
indicator_native_range_year(input_test_df, x_lab = input_test_df),
"Argument x_lab has to be a character or NULL."
)
expect_error(
indicator_native_range_year(input_test_df, y_lab = 4),
"Argument y_lab has to be a character or NULL."
)
})

test_that("Test output type, class, slots and columns", {
plot_output <-
indicator_native_range_year(cleaned_input_test_df,
years = c(2000,2005)
)
plot_output_rel <-
indicator_native_range_year(cleaned_input_test_df,
years = c(2000,2005),
relative = TRUE
)
# output is a list
expect_type(plot_output, type = "list")
expect_type(plot_output_rel, type = "list")

# output has the right three slots
slots <- c("static_plot", "interactive_plot", "data")
expect_equal(names(plot_output), slots)
expect_equal(names(plot_output_rel), slots)

# static plot slot is a list with gg as class
expect_type(plot_output$static_plot, type = "list")
expect_type(plot_output_rel$static_plot, type = "list")
expect_s3_class(plot_output$static_plot, class = c("gg", "ggplot"))
expect_s3_class(plot_output_rel$static_plot, class = c("gg", "ggplot"))

# interactive plot slot is a list with plotly and htmlwidget as class
expect_type(plot_output$interactive_plot, type = "list")
expect_type(plot_output_rel$interactive_plot, type = "list")
expect_s3_class(plot_output$interactive_plot, class = c("plotly", "htmlwidget"))
expect_s3_class(plot_output_rel$interactive_plot, class = c("plotly", "htmlwidget"))

# data is a data.frame (tibble)
expect_type(plot_output$data, type = "list")
expect_s3_class(plot_output$data, class = c("data.frame", "tbl_df"))
expect_type(plot_output_rel$data, type = "list")
expect_s3_class(plot_output_rel$data, class = c("data.frame", "tbl_df"))

# data contains only columns year, native_range, n, total and perc in this
# order
expect_equal(
names(plot_output$data),
c("year", "native_range", "n", "total", "perc")
)
expect_equal(
names(plot_output_rel$data),
c("year", "native_range", "n", "total", "perc")
)

# columns year and native_range of data slot are factors
expect_true(is.factor(plot_output$data$year))
expect_true(is.factor(plot_output$data$native_range))
# columns n and total of data slot are integers
expect_true(is.integer(plot_output$data$n))
expect_true(is.integer(plot_output$data$total))
# column perc of data slot is double
expect_true(is.double(plot_output$data$perc))

# data slot is not affected by value of related arg
expect_identical(plot_output$data, plot_output_rel$data)
})

0 comments on commit 67fc4cb

Please sign in to comment.