use crate::channels::telegram::rich::table::ensure_blank_line_before_tables;
#[test]
fn abutting_table_gets_blank_line_inserted() {
let input = "**Tests** (host-diag exits, disk, docker):\n| Check | Result |\n|---|---|\n| uptime | ok |";
let expected = "**Tests** (host-diag exits, disk, docker):\n\n| Check | Result |\n|---|---|\n| uptime | ok |";
assert_eq!(ensure_blank_line_before_tables(input), expected);
}
#[test]
fn blank_line_before_table_is_untouched() {
let input = "Text line:\n\n| Check | Result |\n|---|---|\n| uptime | ok |";
assert_eq!(ensure_blank_line_before_tables(input), input);
}
#[test]
fn table_inside_code_fence_is_untouched() {
let input = "```text\nheader above\n| A | B |\n|---|---|\n```\n";
assert_eq!(ensure_blank_line_before_tables(input), input);
}
#[test]
fn pass_is_idempotent() {
let input = "**Tests**:\n| A | B |\n|---|---|\n| 1 | 2 |";
let once = ensure_blank_line_before_tables(input);
assert_eq!(ensure_blank_line_before_tables(&once), once);
}
#[test]
fn pipe_free_input_is_untouched() {
let input = "# Report\n\nAll clear, no pipes in sight.\n";
assert_eq!(ensure_blank_line_before_tables(input), input);
}
#[test]
fn stray_pipe_prose_is_untouched() {
let input = "cost | value\nno separator here\n| also not a table";
assert_eq!(ensure_blank_line_before_tables(input), input);
}