pub struct ExportGraph<'a> {
exporter: &'a dyn crate::graph::visualization::ports::format_exporter::FormatExporter,
}
impl<'a> ExportGraph<'a> {
pub fn new(
exporter: &'a dyn crate::graph::visualization::ports::format_exporter::FormatExporter,
) -> Self {
Self { exporter }
}
pub fn execute(
&self,
graph: &crate::graph::hex_graph::HexGraph,
style: crate::graph::visualization::domain::visual_style::VisualStyle,
) -> crate::result::hex_result::HexResult<String> {
let visual_graph =
crate::graph::visualization::domain::visual_graph::VisualGraph::from_hex_graph(graph, style);
self.exporter.export(&visual_graph)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_export_use_case() {
let graph = crate::graph::builder::GraphBuilder::new()
.add_node(crate::graph::hex_node::HexNode::new(
crate::graph::node_id::NodeId::from_name("Test"),
crate::graph::layer::Layer::Domain,
crate::graph::role::Role::Entity,
"Test",
"test",
))
.build();
let exporter = crate::graph::visualization::adapters::dot_exporter::DotExporter::new();
let use_case = ExportGraph::new(&exporter);
let result = use_case.execute(
&graph,
crate::graph::visualization::domain::visual_style::VisualStyle::default(),
);
assert!(result.is_ok());
}
}