test_that("print() returns output invisibly", {
  skip_if_offline()
  # No output
  expect_output(output <- withVisible(print(example_dataset())))
  # Returned object does not auto print
  expect_false(output$visible)
})

test_that("print() informs about the number of tables, their rows and unclass()", {
  skip_if_offline()
  x_no_additional <-
    example_dataset() |>
    frictionless::remove_resource("individuals")

  # Default (additional resources removed)
  expect_output(
    print(x_no_additional),
    regexp = paste(
      "A Camera Trap Data Package \"camtrap-dp-example-dataset\" with 3 tables:",
      "* deployments: 4 rows",
      "* media: 423 rows",
      "* observations: 549 rows",
      "Use `unclass()` to print the Data Package as a list.",
      sep = "\n"
    ),
    fixed = TRUE
  )

  # Extra table added
  x_no_additional$data$extra <-
    data.frame(
      "col_1" = c(1, 2),
      "col_2" = c("a", "b"),
      stringsAsFactors = FALSE
    )
  expect_output(
    print(x_no_additional),
    regexp = "* extra: 2 rows",
    fixed = TRUE
  )
})

test_that("print() informs about additional resources", {
  skip_if_offline()
  expect_output(
    print(example_dataset()),
    regexp = paste(
      "And 1 additional resource:",
      "* individuals",
      sep = "\n"
    ),
    fixed = TRUE
  )

  # See test above for no additional resources
})
