tests/testthat/test-perumammal-data.R

# tests/testthat/test-data-peru_mammals.R

test_that("peru_mammals dataset has expected structure and size", {
  # objeto existe
  expect_true(exists("peru_mammals"))

  # clase y dimensiones básicas
  expect_s3_class(peru_mammals, "tbl_df")
  expect_equal(nrow(peru_mammals), 573L)

  # columnas esperadas
  expected_cols <- c(
    "pm_id",
    "order",
    "family",
    "genus",
    "species",
    "scientific_name",
    "scientific_name_full",
    "author",
    "common_name",
    "endemic",
    "ecoregions",
    "reference"
  )

  expect_true(all(expected_cols %in% colnames(peru_mammals)))

  # pm_id debe ser único y no NA
  expect_false(any(is.na(peru_mammals$pm_id)))
  expect_equal(anyDuplicated(peru_mammals$pm_id), 0L)

  # scientific_name no debe tener NA
  expect_false(any(is.na(peru_mammals$scientific_name)))

  # endemic debe ser lógico
  expect_type(peru_mammals$endemic, "logical")
})

test_that("peru_mammals_ecoregions is consistent with peru_mammals", {
  expect_true(exists("peru_mammals_ecoregions"))
  expect_s3_class(peru_mammals_ecoregions, "tbl_df")

  expected_cols <- c("pm_id", "scientific_name", "ecoregion_code")
  expect_true(all(expected_cols %in% colnames(peru_mammals_ecoregions)))

  # pm_id y scientific_name deben existir en peru_mammals
  expect_true(all(peru_mammals_ecoregions$pm_id %in% peru_mammals$pm_id))
  expect_true(all(peru_mammals_ecoregions$scientific_name %in% peru_mammals$scientific_name))

  # ecoregion_code no debe tener NA
  expect_false(any(is.na(peru_mammals_ecoregions$ecoregion_code)))
})

test_that("peru_mammals_ecoregions_meta matches ecoregion codes used", {
  expect_true(exists("peru_mammals_ecoregions_meta"))
  expect_s3_class(peru_mammals_ecoregions_meta, "tbl_df")

  expected_cols <- c("ecoregion_code", "ecoregion_label")
  expect_true(all(expected_cols %in% colnames(peru_mammals_ecoregions_meta)))

  # códigos deben ser únicos y no NA
  expect_false(any(is.na(peru_mammals_ecoregions_meta$ecoregion_code)))
  expect_equal(anyDuplicated(peru_mammals_ecoregions_meta$ecoregion_code), 0L)

  # todos los códigos usados en peru_mammals_ecoregions deben estar en meta
  codes_used <- sort(unique(peru_mammals_ecoregions$ecoregion_code))
  codes_meta <- sort(unique(peru_mammals_ecoregions_meta$ecoregion_code))
  expect_true(all(codes_used %in% codes_meta))
})

test_that("peru_mammals_backbone is coherent with peru_mammals", {
  expect_true(exists("peru_mammals_backbone"))
  expect_s3_class(peru_mammals_backbone, "tbl_df")

  # debería tener una sola fila
  expect_equal(nrow(peru_mammals_backbone), 1L)

  # columnas esperadas
  expected_cols <- c("source", "source_year", "n_species", "created_at")
  expect_true(all(expected_cols %in% colnames(peru_mammals_backbone)))

  # n_species debe coincidir con nrow(peru_mammals)
  expect_equal(peru_mammals_backbone$n_species[[1]], nrow(peru_mammals))

  # año de la fuente debería ser 2021
  expect_equal(peru_mammals_backbone$source_year[[1]], 2021L)
})

Try the perumammals package in your browser

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

perumammals documentation built on Jan. 6, 2026, 5:06 p.m.