envision 0.16.0

A ratatui framework for collaborative TUI development with headless testing support
Documentation
use super::*;
use crate::component::test_utils;

// =============================================================================
// Snapshot tests
// =============================================================================

#[test]
fn test_snapshot_default() {
    let state = SplitPanelState::default();
    let (mut terminal, theme) = test_utils::setup_render(70, 20);
    terminal
        .draw(|frame| {
            SplitPanel::view(&state, &mut RenderContext::new(frame, frame.area(), &theme));
        })
        .unwrap();
    insta::assert_snapshot!(terminal.backend().to_string());
}

#[test]
fn test_snapshot_vertical_focused_first() {
    let state = SplitPanelState::new(SplitOrientation::Vertical);
    let (mut terminal, theme) = test_utils::setup_render(70, 20);
    terminal
        .draw(|frame| {
            SplitPanel::view(
                &state,
                &mut RenderContext::new(frame, frame.area(), &theme).focused(true),
            );
        })
        .unwrap();
    insta::assert_snapshot!(terminal.backend().to_string());
}

#[test]
fn test_snapshot_vertical_focused_second() {
    let mut state = SplitPanelState::new(SplitOrientation::Vertical);
    SplitPanel::update(&mut state, SplitPanelMessage::FocusOther);
    let (mut terminal, theme) = test_utils::setup_render(70, 20);
    terminal
        .draw(|frame| {
            SplitPanel::view(
                &state,
                &mut RenderContext::new(frame, frame.area(), &theme).focused(true),
            );
        })
        .unwrap();
    insta::assert_snapshot!(terminal.backend().to_string());
}

#[test]
fn test_snapshot_horizontal() {
    let state = SplitPanelState::new(SplitOrientation::Horizontal);
    let (mut terminal, theme) = test_utils::setup_render(70, 20);
    terminal
        .draw(|frame| {
            SplitPanel::view(
                &state,
                &mut RenderContext::new(frame, frame.area(), &theme).focused(true),
            );
        })
        .unwrap();
    insta::assert_snapshot!(terminal.backend().to_string());
}

#[test]
fn test_snapshot_custom_ratio() {
    let state = SplitPanelState::new(SplitOrientation::Vertical).with_ratio(0.3);
    let (mut terminal, theme) = test_utils::setup_render(70, 20);
    terminal
        .draw(|frame| {
            SplitPanel::view(
                &state,
                &mut RenderContext::new(frame, frame.area(), &theme).focused(true),
            );
        })
        .unwrap();
    insta::assert_snapshot!(terminal.backend().to_string());
}

#[test]
fn test_snapshot_resized() {
    let mut state = SplitPanelState::new(SplitOrientation::Vertical);
    // Grow the first pane twice
    SplitPanel::update(&mut state, SplitPanelMessage::GrowFirst);
    SplitPanel::update(&mut state, SplitPanelMessage::GrowFirst);
    let (mut terminal, theme) = test_utils::setup_render(70, 20);
    terminal
        .draw(|frame| {
            SplitPanel::view(
                &state,
                &mut RenderContext::new(frame, frame.area(), &theme).focused(true),
            );
        })
        .unwrap();
    insta::assert_snapshot!(terminal.backend().to_string());
}