ocre-cli 0.2.0

Command-line tool for Ocre: create, generate, migrate, run and deploy apps.
use super::*;

fn statements(json: &str) -> Vec<Statement> {
    serde_json::from_str(json).unwrap()
}

#[test]
fn rows_render_as_a_table_in_column_order() {
    let json =
        r#"[{"results":[{"zeta":1.5,"name":"a","id":1},{"zeta":null,"name":"longer name","id":22}],"success":true}]"#;
    assert_eq!(
        render(&statements(json)),
        "zeta | name        | id\n\
         -----+-------------+---\n\
         1.5  | a           | 1\n\
         NULL | longer name | 22\n\
         (2 rows)\n"
    );
}

#[test]
fn each_statement_gets_its_own_table_and_count() {
    let json = r#"[{"results":[],"success":true},{"results":[{"ok":true}]},{"success":true}]"#;
    assert_eq!(render(&statements(json)), "(0 rows)\n\nok\n----\ntrue\n(1 row)\n\n(0 rows)\n");
}

#[test]
fn a_row_must_be_an_object() {
    let err = serde_json::from_str::<Vec<Statement>>(r#"[{"results":[1]}]"#).err().unwrap();
    assert!(err.to_string().contains("expected a result row object"), "{err}");
}