///|
test "audit reports duplicate user agent" {
  let f = unwrap_file(
    parse_robots("User-agent: bot\nUser-agent: bot\nDisallow: /\n"),
  )
  let issues = audit_robots(f)
  assert_true(audit_to_text(issues).contains("DuplicateUserAgent"))
}

///|
test "audit reports duplicate rule" {
  let f = unwrap_file(
    parse_robots("User-agent: *\nDisallow: /x\nDisallow: /x\n"),
  )
  assert_true(audit_to_text(audit_robots(f)).contains("DuplicateRule"))
}

///|
test "audit reports empty rule" {
  let f = unwrap_file(parse_robots("User-agent: *\nAllow:\n"))
  assert_true(audit_to_text(audit_robots(f)).contains("EmptyRule"))
}

///|
test "audit reports broad disallow" {
  let f = unwrap_file(parse_robots("User-agent: *\nDisallow: /\n"))
  assert_true(audit_to_text(audit_robots(f)).contains("VeryBroadDisallow"))
}

///|
test "audit reports unknown records" {
  let f = unwrap_file(
    parse_robots("User-agent: *\nAllow: /\nHost: example.test\n"),
  )
  assert_true(audit_to_text(audit_robots(f)).contains("UnknownRecord"))
}

///|
test "audit does not report sitemap as unknown" {
  let f = unwrap_file(
    parse_robots("User-agent: *\nAllow: /\nSitemap: https://e.test/s.xml\n"),
  )
  assert_false(audit_to_text(audit_robots(f)).contains("UnknownRecord"))
}

///|
test "audit reports suspicious pattern" {
  let f = unwrap_file(parse_robots("User-agent: *\nDisallow: /a**b\n"))
  assert_true(audit_to_text(audit_robots(f)).contains("SuspiciousPattern"))
}

///|
test "audit reports repeated group" {
  let f = unwrap_file(
    parse_robots(
      "User-agent: bot\nDisallow: /a\n\nUser-agent: bot\nDisallow: /b\n",
    ),
  )
  assert_true(audit_to_text(audit_robots(f)).contains("UnusedGroup"))
}