mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-09-20 00:11:34 +00:00
36 lines
1.2 KiB
Rust
36 lines
1.2 KiB
Rust
use fabro_graphviz::graph::types::Node as GvNode;
|
|
use fabro_hooks::HookContext;
|
|
|
|
/// Populate node-related fields on a `HookContext` from a graph node.
|
|
pub(crate) fn set_hook_node(ctx: &mut HookContext, node: &GvNode) {
|
|
ctx.node_id = Some(node.id.clone());
|
|
ctx.node_label = Some(node.label().to_string());
|
|
ctx.handler_type = node.handler_type().map(String::from);
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use fabro_graphviz::graph::{AttrValue, Node};
|
|
use fabro_hooks::HookEvent;
|
|
use fabro_types::fixtures;
|
|
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn set_hook_node_populates_hook_context_fields() {
|
|
let mut node = Node::new("approve");
|
|
node.attrs.insert(
|
|
"label".to_string(),
|
|
AttrValue::String("Approve PR".to_string()),
|
|
);
|
|
node.attrs
|
|
.insert("type".to_string(), AttrValue::String("human".to_string()));
|
|
|
|
let mut ctx = HookContext::new(HookEvent::StageStart, fixtures::RUN_1, "graph".into());
|
|
set_hook_node(&mut ctx, &node);
|
|
|
|
assert_eq!(ctx.node_id.as_deref(), Some("approve"));
|
|
assert_eq!(ctx.node_label.as_deref(), Some("Approve PR"));
|
|
assert_eq!(ctx.handler_type.as_deref(), Some("human"));
|
|
}
|
|
}
|