
test_that("can create new object", {
  desc <- description$new("!new")

  expect_true(!is.na(desc$get("Package")))
  expect_true(!is.na(desc$get("Title")))
  expect_true(!is.na(desc$get("Version")))
  expect_true(!is.na(desc$get("Authors@R")))
  expect_true(!is.na(desc$get("Maintainer")))
  expect_true(!is.na(desc$get("Description")))
  expect_true(!is.na(desc$get("License")))
  expect_true(is.na(desc$get("LazyData")))
  expect_true(!is.na(desc$get("URL")))
  expect_true(!is.na(desc$get("BugReports")))
})

test_that("can read object from file", {
  desc <- description$new(test_path("D1"))

  expect_true(!is.na(desc$get("Package")))
  expect_true(!is.na(desc$get("Title")))
  expect_true(!is.na(desc$get("Version")))
  expect_true(!is.na(desc$get("Author")))
  expect_true(!is.na(desc$get("Maintainer")))
  expect_true(!is.na(desc$get("Description")))
  expect_true(!is.na(desc$get("License")))
  expect_true(!is.na(desc$get("URL")))
  expect_true(!is.na(desc$get("BugReports")))

})

test_that("can read object from character vector", {
  lines <- readLines(test_path("D1"))
  desc <- description$new(text = lines)

  expect_true(!is.na(desc$get("Package")))
  expect_true(!is.na(desc$get("Title")))
  expect_true(!is.na(desc$get("Version")))
  expect_true(!is.na(desc$get("Author")))
  expect_true(!is.na(desc$get("Maintainer")))
  expect_true(!is.na(desc$get("Description")))
  expect_true(!is.na(desc$get("License")))
  expect_true(!is.na(desc$get("URL")))
  expect_true(!is.na(desc$get("BugReports")))

})

test_that("DESCRPTION is read by default", {

  wd <- getwd()
  on.exit(setwd(wd), add = TRUE)
  setwd("files")

  d1 <- description$new()
  d2 <- description$new("DESCRIPTION")

  expect_equal(d1, d2)
})

test_that("From installed package", {

  desc <- description$new(package = "utils")
  expect_match(desc$get("Author"), "Core Team")

  expect_error(
    description$new(package = "fgsdgsdhldsknfglkedsfgsdf"),
    "Cannot find DESCRIPTION for installed package"
  )
})

test_that("Package root is found", {

  wd <- getwd()
  on.exit(setwd(wd), add = TRUE)
  setwd("files")

  d1 <- description$new()

  dir.create("subdir", showWarnings = FALSE)
  setwd("subdir")
  d2 <- description$new()

  expect_equal(d1, d2)
})
