context("tp_search")

test_that("tp_search returns the correct class", {
  skip_on_cran() # uses secrets
  vcr::use_cassette("tp_search", {
    ttt <- suppressMessages(tp_search(sci = 'Poa annua'))
    uuu <- suppressMessages(tp_search(sci = 'stuff things'))
  }, preserve_exact_body_bytes = TRUE)

  if ("error" %in% names(ttt)) skip("error in tp_search call - skipping")

	expect_that(ttt, is_a("data.frame"))

  expect_that(uuu, is_a("data.frame"))
  expect_that(names(uuu), equals("error"))
  expect_that(as.character(uuu[1,1]), equals("No names were found"))
})

test_that("tp_search behaves correctly on dot inputs", {
  skip_on_cran() # uses secrets
  vcr::use_cassette("tp_search_warnings_dots", {
    expect_that(tp_search('Poa annua .annua'),
                gives_warning("detected, being URL encoded"))
    expect_warning(tp_search('Poa annua annua'), NA)
  })
})

test_that("tp_search behaves correctly on subspecific inputs", {
  skip_on_cran() # uses secrets
  vcr::use_cassette("tp_search_warnings_subspecific", {
    expect_that(tp_search('Poa annua var annua'),
                gives_warning("Tropicos doesn't like"))
    expect_that(tp_search('Poa annua var. annua'),
                gives_warning("Tropicos doesn't like"))
    expect_that(tp_search('Poa annua sp. annua'),
                gives_warning("Tropicos doesn't like"))
    expect_that(tp_search('Poa annua ssp. annua'),
                gives_warning("Tropicos doesn't like"))
    expect_that(tp_search('Poa annua subspecies annua'),
                gives_warning("Tropicos doesn't like"))

    expect_warning(tp_search('Poa annua foo bar annua'), NA)
  })
})
