promkit-widgets 0.8.0

Widgets for promkit
Documentation
use std::str::FromStr;

use serde_json::Deserializer;

use promkit_widgets::json::jsonz::*;

#[test]
fn follows_visibility_after_toggle() {
    let input = serde_json::Value::from_str(
        r#"
            {
                "object": {
                    "key": "value"
                },
                "array": [
                    1,
                    2,
                    3
                ]
            }
        "#,
    )
    .unwrap();

    let mut rows = create_rows([&input]);
    assert_eq!(rows.tail(), 9);
    rows.toggle(9);
    assert_eq!(rows.tail(), 0);
}

#[test]
fn selects_the_last_visible_json_lines_document() {
    let inputs: Vec<_> = Deserializer::from_str(
        r#"
            {
                "name": "Alice",
                "age": 30
            }
            {
                "name": "Bob",
                "age": 25
            }
            {
                "name": "Charlie",
                "age": 35
            }
        "#,
    )
    .into_iter::<serde_json::Value>()
    .filter_map(serde_json::Result::ok)
    .collect();

    let mut rows = create_rows(inputs.iter());

    assert_eq!(rows.tail(), 11);
    rows.toggle(0);
    assert_eq!(rows.tail(), 11);
    rows.toggle(8);
    assert_eq!(rows.tail(), 8);
}