Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/facett

facett-brokkrview/tests/flow_lane.rs

use egui::{pos2, vec2};
use egui_kittest::{Harness, kittest::Queryable};
use facett_brokkrview::{BrokkrView, BrokkrViewMsg, FinishedRun, ViewMode};
use facett_core::{Elm, Facet};

#[test]
fn status_updates_and_camera_keep_geometry_and_original_dag_json() {
    let mut v = BrokkrView::demo("Brokkr");
    let generation = v.scene_generation();
    let dag = v.state_json()["dag"].clone();
    v.update(BrokkrViewMsg::Pan(vec2(25.0, 10.0)));
    v.update(BrokkrViewMsg::Zoom {
        factor: 1.5,
        anchor: pos2(60.0, 60.0),
    });
    assert_eq!(v.scene_generation(), generation);
    assert_eq!(v.state_json()["dag"], dag);
    let run: FinishedRun = serde_json::from_value(serde_json::json!({
        "run_id":"failed-run", "pipeline":"nornir-ci", "status":"failed", "steps":{"compile":"failed"}
    })).unwrap();
    v.update(BrokkrViewMsg::RunFinished(run));
    assert_eq!(v.scene_generation(), generation);
    assert_eq!(v.state_json()["dag"]["all_green"], false);
    assert_eq!(v.state_json()["nav"]["scale"], 1.5);
}

#[test]
fn accessible_dag_node_selects_and_camera_fits() {
    let mut v = BrokkrView::demo("Brokkr");
    v.update(BrokkrViewMsg::SetView(ViewMode::Dag));
    let mut h = Harness::builder()
        .with_size(vec2(900.0, 600.0))
        .build_ui_state(|ui, v: &mut BrokkrView| Facet::ui(v, ui), v);
    h.run();
    assert!(h.state().state_json()["fitted"].as_bool().unwrap());
    let label = h
        .state()
        .model()
        .dag
        .nodes
        .iter()
        .find(|n| n.step == "compile")
        .map(|n| match &n.disposition {
            Some(d) => format!("{} · {} · {} · {}", n.step, n.stage, n.status, d),
            None => format!("{} · {} · {}", n.step, n.stage, n.status),
        })
        .unwrap();
    h.get_by_label(&label).click();
    h.run();
    assert_eq!(h.state().state_json()["selected_step"], "compile");
}