test_that("cells() returns `row` and `col` as integer", {
  skip_if_offline()
  skip_if_no_token()

  out <- range_read_cells(
    test_sheet("googlesheets4-cell-tests"),
    range = "'range-experimentation'!A1:B2"
  )
  expect_true(is.integer(out$row))
  expect_true(is.integer(out$col))
})

test_that("slightly tricky `range`s work", {
  skip_if_offline()
  skip_if_no_token()

  out <- range_read_cells(
    test_sheet("googlesheets4-cell-tests"),
    range = "'range-experimentation'!B:D"
  )
  expect_true(all(grepl("^[BCD]", out$loc)))

  out <- range_read_cells(
    test_sheet("googlesheets4-cell-tests"),
    range = "'range-experimentation'!2:3"
  )
  expect_true(all(grepl("[23]$", out$loc)))

  out <- range_read_cells(
    test_sheet("googlesheets4-cell-tests"),
    range = "'range-experimentation'!B3:C"
  )
  expect_true(all(grepl("^[BC]", out$loc)))
  expect_true(all(grepl("[3-9]$", out$loc)))

  out <- range_read_cells(
    test_sheet("googlesheets4-cell-tests"),
    range = "'range-experimentation'!B3:5"
  )
  expect_true(all(grepl("^[BCDE]", out$loc)))
  expect_true(all(grepl("[345]$", out$loc)))
})

# https://github.com/tidyverse/googlesheets4/issues/4
test_that("full cell data and empties are within reach", {
  skip_if_offline()
  skip_if_no_token()

  out <- range_read_cells(
    test_sheet("googlesheets4-cell-tests"),
    sheet = "empties-and-formats",
    cell_data = "full",
    discard_empty = FALSE
  )

  # B2 is empty; make sure it's here
  expect_true("B2" %in% out$loc)

  # C2 is empty and orange; make sure it's here and format is available
  expect_no_error(
    cell <- out$cell[[which(out$loc == "C2")]]
  )
  expect_true(!is.null(cell$effectiveFormat))

  # C1 bears a note
  expect_no_error(
    cell <- out$cell[[which(out$loc == "C1")]]
  )
  note <- cell$note
  expect_true(!is.null(note))
  expect_match(note, "Note")
})

# https://github.com/tidyverse/googlesheets4/issues/78
test_that("formula cells are parsed based on effectiveValue", {
  skip_if_offline()
  skip_if_no_token()

  out <- range_read_cells(
    test_sheet("googlesheets4-cell-tests"),
    sheet = "formulas",
    range = "B:B",
    cell_data = "full",
    discard_empty = FALSE
  )

  expect_s3_class(out$cell[[which(out$loc == "B2")]], "CELL_TEXT")
  expect_s3_class(out$cell[[which(out$loc == "B3")]], "CELL_NUMERIC")
  expect_s3_class(out$cell[[which(out$loc == "B4")]], "CELL_BLANK")
  expect_s3_class(out$cell[[which(out$loc == "B5")]], "CELL_TEXT")
  expect_s3_class(out$cell[[which(out$loc == "B6")]], "CELL_BLANK")
})
