test_that("add_spatial_boundary stores non-diagonal relations correctly", {
  toy <- toy_equivalent_basic()

  p <- multiscape::create_problem(
    pu = toy$pu,
    features = toy$features,
    dist_features = toy$dist_features,
    cost = "cost"
  )

  p <- multiscape::add_spatial_boundary(
    p,
    boundary = toy$boundary,
    include_self = FALSE
  )

  expect_true("spatial_relations" %in% names(p$data))
  expect_true("boundary" %in% names(p$data$spatial_relations))

  bnd <- p$data$spatial_relations$boundary
  expect_true(is.data.frame(bnd))
  expect_true(all(c("pu1", "pu2") %in% names(bnd)))

  expect_false(any(bnd$pu1 == bnd$pu2))
})

test_that("add_spatial_boundary with include_self = TRUE adds diagonal rows", {
  toy <- toy_equivalent_basic()

  p <- multiscape::create_problem(
    pu = toy$pu,
    features = toy$features,
    dist_features = toy$dist_features,
    cost = "cost"
  )

  p <- multiscape::add_spatial_boundary(
    p,
    boundary = toy$boundary,
    include_self = TRUE
  )

  bnd <- p$data$spatial_relations$boundary
  expect_true(any(bnd$pu1 == bnd$pu2))
})
